From d0893a736bf90cd4bdc178d7927a3098e4ae2930 Mon Sep 17 00:00:00 2001 From: Khenus Date: Mon, 28 Sep 2020 14:25:39 +0800 Subject: [PATCH 001/450] V0.1 Added Module Initializer --- build.gradle | 2 + src/main/java/Main.java | 12 + src/main/java/moduledata/ModuleDatum.java | 101 + .../java/moduledata/ModuleInitializer.java | 33 + src/main/java/seedu/duke/Duke.java | 21 - src/main/resources/ModuleData.json | 286890 +++++++++++++++ 6 files changed, 287038 insertions(+), 21 deletions(-) create mode 100644 src/main/java/Main.java create mode 100644 src/main/java/moduledata/ModuleDatum.java create mode 100644 src/main/java/moduledata/ModuleInitializer.java delete mode 100644 src/main/java/seedu/duke/Duke.java create mode 100644 src/main/resources/ModuleData.json diff --git a/build.gradle b/build.gradle index b0c5528fb5..30d5145f95 100644 --- a/build.gradle +++ b/build.gradle @@ -12,6 +12,8 @@ repositories { dependencies { testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.5.0' testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.5.0' + implementation 'com.google.code.gson:gson:2.8.6' //Google Json serialzation library + implementation 'org.apache.commons:commons-lang3:3.11' //Apache commons lang for Class builder } test { diff --git a/src/main/java/Main.java b/src/main/java/Main.java new file mode 100644 index 0000000000..0f6de1cec5 --- /dev/null +++ b/src/main/java/Main.java @@ -0,0 +1,12 @@ +import moduledata.ModuleDatum; +import moduledata.ModuleInitializer; + +public class Main { + public static void main(String[] args) { + ModuleInitializer allModules = new ModuleInitializer(); + Integer idx = allModules.getModuleMap().get("CS1010"); + ModuleDatum cs1010Data = allModules.getModuleFullDetails()[idx]; + + System.out.println(cs1010Data.toString()); + } +} diff --git a/src/main/java/moduledata/ModuleDatum.java b/src/main/java/moduledata/ModuleDatum.java new file mode 100644 index 0000000000..45124a2643 --- /dev/null +++ b/src/main/java/moduledata/ModuleDatum.java @@ -0,0 +1,101 @@ +package moduledata; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.commons.lang3.builder.EqualsBuilder; +import org.apache.commons.lang3.builder.ToStringBuilder; + +// "moduleCode", +// "title", +// "moduleCredit", +// "department", +// "faculty", +// "semester" +// "preclusion", +// "attibutes" = [ +// su: false, Index 0 of attribute +// sfs: false, Index 1 of attribute +// ssgf: false, Index 2 of attribute +// ism: false, Index 3 of attribute +// fyp: false, Index 4 of attribute +// year: false, Index 5 of attribute +// grsu: false, Index 6 of attribute +// lab: false, Index 7 of attribute +// urop: false, Index 8 of attribute +// ], +// "prerequisite", +// "corequisite" + +public class ModuleDatum { + private String moduleCode; + private String title; + private Integer moduleCredit; + private String department; + private String faculty; + private List semester = new ArrayList(); + private String preclusion; + private List attributes = new ArrayList(); + private String prerequisite; + private String corequisite; + private Map additionalProperties = new HashMap(); + + public String getModuleCode() { + return moduleCode; + } + + public String getTitle() { + return title; + } + + public Integer getModuleCredit() { + return moduleCredit; + } + + public String getDepartment() { + return department; + } + + public String getFaculty() { + return faculty; + } + + public List getSemester() { + return semester; + } + + public String getPreclusion() { + return preclusion; + } + + public List getAttributes() { + return attributes; + } + + public String getPrerequisite() { + return prerequisite; + } + + public String getCorequisite() { + return corequisite; + } + + @Override + public String toString() { + return ToStringBuilder.reflectionToString(this); + } + + @Override + public boolean equals(Object other) { + if (other == this) { + return true; + } + if ((other instanceof ModuleDatum) == false) { + return false; + } + ModuleDatum rhs = ((ModuleDatum) other); + return new EqualsBuilder().append(moduleCode, rhs.moduleCode).append(title, rhs.title).append(moduleCredit, rhs.moduleCredit).append(department, rhs.department).append(faculty, rhs.faculty).append(semester, rhs.semester).append(preclusion, rhs.preclusion).append(attributes, rhs.attributes).append(prerequisite, rhs.prerequisite).append(corequisite, rhs.corequisite).append(additionalProperties, rhs.additionalProperties).isEquals(); + } +} diff --git a/src/main/java/moduledata/ModuleInitializer.java b/src/main/java/moduledata/ModuleInitializer.java new file mode 100644 index 0000000000..f117ade47b --- /dev/null +++ b/src/main/java/moduledata/ModuleInitializer.java @@ -0,0 +1,33 @@ +package moduledata; + +import com.google.gson.Gson; + +import java.io.InputStream; +import java.io.Reader; +import java.io.InputStreamReader; +import java.util.HashMap; +import java.util.Map; + +public class ModuleInitializer { + private Map moduleMap = new HashMap<>(); + private ModuleDatum[] moduleFullDetails; + + public ModuleInitializer() { + Gson gson = new Gson(); + + InputStream in = ModuleInitializer.class.getResourceAsStream("/moduleData.json"); + Reader jsonReader = new InputStreamReader(in); + moduleFullDetails = gson.fromJson(jsonReader, ModuleDatum[].class); + + for (int i = 0; i < moduleFullDetails.length; i++) { + moduleMap.put(moduleFullDetails[i].getModuleCode(), i); + } + } + + public Map getModuleMap() { + return this.moduleMap; + } + public ModuleDatum[] getModuleFullDetails() { + return this.moduleFullDetails; + } +} diff --git a/src/main/java/seedu/duke/Duke.java b/src/main/java/seedu/duke/Duke.java deleted file mode 100644 index 5c74e68d59..0000000000 --- a/src/main/java/seedu/duke/Duke.java +++ /dev/null @@ -1,21 +0,0 @@ -package seedu.duke; - -import java.util.Scanner; - -public class Duke { - /** - * Main entry-point for the java.duke.Duke application. - */ - public static void main(String[] args) { - String logo = " ____ _ \n" - + "| _ \\ _ _| | _____ \n" - + "| | | | | | | |/ / _ \\\n" - + "| |_| | |_| | < __/\n" - + "|____/ \\__,_|_|\\_\\___|\n"; - System.out.println("Hello from\n" + logo); - System.out.println("What is your name?"); - - Scanner in = new Scanner(System.in); - System.out.println("Hello " + in.nextLine()); - } -} diff --git a/src/main/resources/ModuleData.json b/src/main/resources/ModuleData.json new file mode 100644 index 0000000000..b08ec6c975 --- /dev/null +++ b/src/main/resources/ModuleData.json @@ -0,0 +1,286890 @@ +[ + { + "moduleCode": "AA1201", + "title": "Asian Challenges and Interconnections", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AC5001", + "title": "Architectural History of Singapore", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AC5002", + "title": "Conservation Approaches and Philosophies", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AC5003", + "title": "Urban Conservation and Regeneration", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AC5004", + "title": "Architectural Heritage Management", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AC5005", + "title": "Conservation Policy Methodology for Sustainable Development", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AC5006", + "title": "Disaster Risk Management of Cultural Heritage", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AC5007", + "title": "Dissertation", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AC5008", + "title": "Design for Conservation", + "moduleCredit": 8, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AC5009", + "title": "Design for Adaptive Reuse", + "moduleCredit": 8, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AC5010", + "title": "Historic Buildings Survey and Recording", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AC5011", + "title": "Conservation of C20th Buildings", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AC5012", + "title": "Practical Building Conservation Skills I", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AC5013", + "title": "Practical Building Conservation Skills II", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AC5014", + "title": "Internship", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ACC1002", + "title": "Financial Accounting", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have passed FNA1002 are not allowed to take ACC1002.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ACC1002X", + "title": "Financial Accounting", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have passed CS1304 or EC3212 or BK1003 or BZ1002 or BH1002 or BZ1002E or BH1002E or FNA1002E or FNA1002X are not allowed to take ACC1002X.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ACC1006", + "title": "Accounting Information Systems", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "Students who have passed FNA1006 are not allowed to take ACC1006.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA1002 or ACC1002", + "corequisite": "" + }, + { + "moduleCode": "ACC1701", + "title": "Accounting for Decision Makers", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "ACC1002; ACC1002X; EC2204", + "attributes": [ + true, + true, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ACC1701X", + "title": "Accounting for Decision Makers", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "ACC1002; ACC1002X", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ACC2002", + "title": "Managerial Accounting", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "BH2002 or BZ3102 or BK2001 or FNA2002 or IE4242", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed BK1003 or BZ1002 or BH1002 or FNA1002 or FNA1002X or FNA1002E or ACC1002 or ACC1002X or BH1002E or CS1304 or EC3212 or EG1422 before they are allowed to take ACC2002.", + "corequisite": "" + }, + { + "moduleCode": "ACC2706", + "title": "Managerial Accounting", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "ACC2002", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ACC1701/ACC1701X or EC2204", + "corequisite": "" + }, + { + "moduleCode": "ACC2707", + "title": "Corporate Accounting & Reporting I", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "ACC3601", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ACC1701/ACC1701X or EC2204.\n(or AC1002 or ACC1002X)", + "corequisite": "" + }, + { + "moduleCode": "ACC2708", + "title": "Corporate Accounting & Reporting II", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "ACC3601", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ACC2707", + "corequisite": "" + }, + { + "moduleCode": "ACC2709", + "title": "Accounting Information Systems", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "ACC1006", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ACC1701/ACC1701X or EC2204", + "corequisite": "" + }, + { + "moduleCode": "ACC3601", + "title": "Corporate Accounting and Reporting", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH3111 or BZ3101 or BK3106 or FNA3111", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA1002 or ACC1002", + "corequisite": "" + }, + { + "moduleCode": "ACC3602", + "title": "Managerial Planning and Control", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "Students who have passed FNA3112 are not allowed to take ACC3602.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA2002 or ACC2002", + "corequisite": "" + }, + { + "moduleCode": "ACC3603", + "title": "Assurance and Attestation", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have passed FNA3121 are not allowed to take ACC3603.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA1002/ACC1002 and FNA2002 (Students who are not enrolled in the accounting or accounting-specialization program should seek Deans Office permission to read the module)", + "corequisite": "" + }, + { + "moduleCode": "ACC3604", + "title": "Corporate and Securities Law", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have passed FNA3122 or LL4055 are not allowed to take ACC3604.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BSP1004", + "corequisite": "" + }, + { + "moduleCode": "ACC3605", + "title": "Taxation", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have passed FNA3127 or LL4056 are not allowed to take ACC3605.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA1002/ACC1002 and BSP1004", + "corequisite": "" + }, + { + "moduleCode": "ACC3606", + "title": "Advanced Corporate Accounting and Reporting", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "Students who have passed FNA3123 are not allowed to take ACC3606.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA3111 or ACC3601", + "corequisite": "" + }, + { + "moduleCode": "ACC3611", + "title": "Corporate Governance and Ethics", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "Students who have passed FNA3124 or LL4065 are not allowed to take ACC3611.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA1002/ACC1002 and BSP1004", + "corequisite": "" + }, + { + "moduleCode": "ACC3612", + "title": "Risk Management and Internal Control", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "Students who have passed FNA3125 are not allowed to take ACC3612.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA2004/FIN2004 and BSP1004", + "corequisite": "" + }, + { + "moduleCode": "ACC3613", + "title": "Advanced Assurance and Attestation", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "Students who have passed FNA3128 are not allowed to take ACC3613.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA3121 or ACC3603", + "corequisite": "" + }, + { + "moduleCode": "ACC3614", + "title": "Valuation", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have passed FNA3126 are not allowed to take ACC3614.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA2004 or FIN2004", + "corequisite": "" + }, + { + "moduleCode": "ACC3615", + "title": "Accounting Theory", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "Students who have passed FNA3129 are not allowed to take ACC3615.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA3111/ACC3601\nCo-requisite: FNA3123/ACC3606", + "corequisite": "" + }, + { + "moduleCode": "ACC3615A", + "title": "Accounting Theory", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "FNA3129, ACC3615, ACC3615B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA3111/ACC3601", + "corequisite": "FNA3123/ACC3606" + }, + { + "moduleCode": "ACC3615B", + "title": "Accounting Theory", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "FNA3129, ACC3615, ACC3615A", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA3111/ACC3601", + "corequisite": "FNA3123/ACC3606" + }, + { + "moduleCode": "ACC3616", + "title": "Corporate Governance and Risk Management", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "ACC3611 Corporate Governance and Ethics\nACC3612 Risk Management and Internal Control\nOnly available to BBA and BBA(Acc) students from the\nAY2014-15 intake and later", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ACC1002 Financial Accounting, BSP1004 Legal\nEnvironment of Business, FIN2004 Finance", + "corequisite": "" + }, + { + "moduleCode": "ACC3619", + "title": "Integrated Perspective in Accounting and Business", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed or concurrently taking the following:\n(a) All BBA (Acc) core modules; and\n(b) all other compulsory accounting modules", + "corequisite": "Pls see above (under Pre-requisite(s))." + }, + { + "moduleCode": "ACC3701", + "title": "Assurance and Attestation", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "ACC3603", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Pre-/Co-req: ACC2707 and ACC2709.", + "corequisite": "Pls see under \"Prerequisites\"." + }, + { + "moduleCode": "ACC3702", + "title": "Corporate and Securities Law", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "ACC3604; LC2008", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BSP1702/BSP1702X", + "corequisite": "" + }, + { + "moduleCode": "ACC3703", + "title": "Taxation", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "ACC3605; LL4056", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(ACC1701/ACC1701X or EC2204) and BSP1702/BSP1702X", + "corequisite": "" + }, + { + "moduleCode": "ACC3704", + "title": "Advanced Corporate Accounting and Reporting", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "ACC3606", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ACC2707 and ACC2708", + "corequisite": "" + }, + { + "moduleCode": "ACC3705", + "title": "Valuation", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "ACC3614", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2704/FIN2704X", + "corequisite": "" + }, + { + "moduleCode": "ACC3706", + "title": "Corporate Governance and Risk Management", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "ACC3616", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(ACC1701/ACC1701X or EC2204), BSP1702/BSP1702X and FIN2704/FIN2704X", + "corequisite": "" + }, + { + "moduleCode": "ACC3707", + "title": "Integrated Perspectives in Accounting and Business", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "ACC3619", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed or concurrently taking the following: (a) All BBA (Acc) core modules and (b) all other compulsory accounting modules.", + "corequisite": "Pls see under \"Prerequisites\"." + }, + { + "moduleCode": "ACC3711", + "title": "Managerial Planning and Control", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "ACC3602", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ACC2706", + "corequisite": "" + }, + { + "moduleCode": "ACC3712", + "title": "Advanced Assurance and Attestation", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ACC3701 Assurance and Attestation", + "corequisite": "" + }, + { + "moduleCode": "ACC3713", + "title": "Accounting Theory", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ACC2707 Corporate Accounting & Reporting I\nACC2708 Corporate Accounting & Reporting II", + "corequisite": "ACC3704 Advanced Corporate Accounting and Reporting" + }, + { + "moduleCode": "ACC4162E", + "title": "Seminars in Accounting: Risk Management Technology", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ACC3612", + "corequisite": "" + }, + { + "moduleCode": "ACC4611", + "title": "Advanced Taxation", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have passed FNA4114 are not allowed to take ACC4611.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ACC4612", + "title": "Seminars in Accounting (SIA)", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Depends on the particular stream offered. It is envisaged that completion of one or more ACC3xxx modules will be a pre-requisite in most cases.", + "corequisite": "" + }, + { + "moduleCode": "ACC4612A", + "title": "SIA: Internal Auditing", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ACC3603 Assurance and Attestation; and\nACC3616 Corporate Governance and Risk Management \n\nOR\n\nACC3603 Assurance and Attestation,\nACC3611 Corporate Governance and Ethics; and\nACC3612 Risk Management and Internal Control", + "corequisite": "" + }, + { + "moduleCode": "ACC4612D", + "title": "SIA: Advanced Accounting Theory", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ACC3615 Accounting Theory", + "corequisite": "" + }, + { + "moduleCode": "ACC4612E", + "title": "SIA: Risk Management Technology", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Depends on the particular stream offered. It is envisaged that completion of one or more ACC3xxx modules will be a pre-requisite in most cases.", + "corequisite": "" + }, + { + "moduleCode": "ACC4612F", + "title": "Seminars in Accounting: Public Sector Audit", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ACC3603 Assurance and Attestation", + "corequisite": "" + }, + { + "moduleCode": "ACC4612G", + "title": "Seminars in Accounting: Advanced Corporate Governance", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ACC3616 Corporate Governance and Risk Management\nOR ACC3611 Corporate Governance and Ethics", + "corequisite": "" + }, + { + "moduleCode": "ACC4612H", + "title": "Seminars in Accounting: Advanced Risk Management", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ACC3616 Corporate Governance and Risk Management\nOR ACC3612 Risk Management and Internal Control", + "corequisite": "" + }, + { + "moduleCode": "ACC4612K", + "title": "Sem. in Acctg: Accounting & Business Analysis for Banks", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "ACC4761H", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "1. FIN2004 Finance; and\n2. ACC3601 Corporate Accounting and Reporting", + "corequisite": "" + }, + { + "moduleCode": "ACC4613", + "title": "Forensic Accounting", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ACC3603 Assurance and Attestation", + "corequisite": "" + }, + { + "moduleCode": "ACC4614", + "title": "Financial Institution Audit & Compliance", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ACC3616 Corporate Governance and Risk Management\nOR\nACC3612 Risk Management and Internal Control", + "corequisite": "" + }, + { + "moduleCode": "ACC4615", + "title": "Advanced Assurance and Attestation", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have passed FNA3128 or ACC3613 are not allowed to take ACC4615.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA3121 or ACC3603", + "corequisite": "" + }, + { + "moduleCode": "ACC4616", + "title": "Accounting Theory", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "Students who have passed FNA3129 and ACC3615 are not allowed to take ACC4616.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA3111/ACC3601\nCo-requisite: FNA3123/ACC3606", + "corequisite": "" + }, + { + "moduleCode": "ACC4619", + "title": "Advanced Independent Study in Accounting", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Vary according to project topic. In general, however, students will have to have completed the core modules of the BBA(Acc) curriculum.", + "corequisite": "" + }, + { + "moduleCode": "ACC4629", + "title": "Advanced Independent Study in Accounting", + "moduleCredit": 2, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Vary according to project topic. In general, however, students will have to have completed the core modules of the BBA(Acc) curriculum.", + "corequisite": "" + }, + { + "moduleCode": "ACC4711", + "title": "Advanced Taxation", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "ACC4611", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ACC3703", + "corequisite": "" + }, + { + "moduleCode": "ACC4712", + "title": "Forensic Accounting", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "ACC4613", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ACC3701", + "corequisite": "" + }, + { + "moduleCode": "ACC4713", + "title": "Financial Institution Audit & Compliance", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "ACC4614", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ACC3701 and ACC3706.", + "corequisite": "" + }, + { + "moduleCode": "ACC4714", + "title": "Advanced Assurance and Attestation", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "ACC3613; ACC4615.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Pre-req: ACC3701 and Pre-/Co-req: ACC3704.", + "corequisite": "Pls see under \"Prerequisites\"." + }, + { + "moduleCode": "ACC4715", + "title": "Accounting Theory", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "ACC3615; ACC4616.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Pre-/Co-req: ACC3704", + "corequisite": "Pls see under \"Prerequisites\"." + }, + { + "moduleCode": "ACC4751", + "title": "Advanced Independent Study in Accounting", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Varies according to the subject matter covered.", + "corequisite": "" + }, + { + "moduleCode": "ACC4752", + "title": "Advanced Independent Study in Accounting (2 MCs)", + "moduleCredit": 2, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Varies according to the subject matter covered.", + "corequisite": "" + }, + { + "moduleCode": "ACC4761", + "title": "Seminars in Accounting", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Varies according to the subject matter covered.", + "corequisite": "" + }, + { + "moduleCode": "ACC4761A", + "title": "Seminars in Accounting: Internal Audit", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "ACC4612A", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ACC2706, ACC3701 and ACC3706.", + "corequisite": "" + }, + { + "moduleCode": "ACC4761C", + "title": "Seminars in Accounting: Advanced Accounting Theory", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "ACC4612D", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ACC4715", + "corequisite": "" + }, + { + "moduleCode": "ACC4761D", + "title": "Seminars in Accounting: Risk Management Technology", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "ACC4612E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Depends on the particular stream offered. It is envisaged that completion of one or more ACC3xxx modules will be a pre-requisite in most cases.", + "corequisite": "" + }, + { + "moduleCode": "ACC4761E", + "title": "Seminars in Accounting: Public Sector Audit", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "ACC4612F", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ACC3701", + "corequisite": "" + }, + { + "moduleCode": "ACC4761F", + "title": "Seminars in Accounting: Advanced Corporate Governance", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "ACC4612G", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ACC3706", + "corequisite": "" + }, + { + "moduleCode": "ACC4761G", + "title": "Seminars in Accounting: Advanced Risk Management", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "ACC4612H", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ACC3706", + "corequisite": "" + }, + { + "moduleCode": "ACC4761H", + "title": "Sem. in Acctg: Accounting & Business Analysis for Banks", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "ACC4612K", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "1. FIN2704 Finance; and\n2. ACC2708 Corporate Accounting and Reporting II", + "corequisite": "" + }, + { + "moduleCode": "AH2101", + "title": "Introduction to Art History", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AH2201", + "title": "Chinese Painting: Styles and Masters", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AH2101", + "corequisite": "" + }, + { + "moduleCode": "AH2202", + "title": "Modern Art: A Critical Introduction", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AH2101", + "corequisite": "" + }, + { + "moduleCode": "AH2203", + "title": "Empire and Art: India, Singapore, Malaya", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AH2101", + "corequisite": "" + }, + { + "moduleCode": "AH3201", + "title": "A History of Contemporary Art", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AH2101", + "corequisite": "" + }, + { + "moduleCode": "AH3202", + "title": "Time Traveller: The Curatorial in Southeast Asia", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AH2101", + "corequisite": "" + }, + { + "moduleCode": "AH3203", + "title": "Collecting Art in Europe and Asia (1500 CE – 2000 CE)", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AH2101", + "corequisite": "" + }, + { + "moduleCode": "AH3204", + "title": "Methods and Approaches to Art History", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AH2101 Introduction To Art History", + "corequisite": "" + }, + { + "moduleCode": "AH3550", + "title": "Art History Internship", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(1) AH2101 and (2) 1 AH-coded module", + "corequisite": "" + }, + { + "moduleCode": "ALS1010", + "title": "Learning to Learn Better", + "moduleCredit": 2, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ALS1010CP", + "title": "Learning to Learn Better", + "moduleCredit": 2, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ALS1020", + "title": "Learning to Choose Better", + "moduleCredit": 2, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR1101", + "title": "Design I", + "moduleCredit": 8, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "All non-architecture students", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR1102", + "title": "Design 2", + "moduleCredit": 8, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "All non-architecture students", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR1121", + "title": "Spatial - Visual Communication", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR1324", + "title": "Architectural Tech. 1 - Basic Principles", + "moduleCredit": 3, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR1325", + "title": "Arch. Tech. Ii - Enclosure Techniques", + "moduleCredit": 3, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR1326", + "title": "Architectural Construction", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "All non-architecture students", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR1327", + "title": "Structural Principles", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR1328", + "title": "The Tropical Envelope", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR1721", + "title": "Climate Responsive Architecture", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR1722", + "title": "Architectural Env. 1 - Nature and Place", + "moduleCredit": 3, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR1723", + "title": "Arch. Env. Ii - Building and Landscape", + "moduleCredit": 3, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR1724", + "title": "Introduction To Landscape Architecture", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR2101", + "title": "Design 3", + "moduleCredit": 8, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "All non-architecture students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AR1101 Design 1 Grade 'C' or Grade “S”; AR1102 Design 2 Grade 'C' or Grade “S”;", + "corequisite": "" + }, + { + "moduleCode": "AR2102", + "title": "Design 4", + "moduleCredit": 8, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "All non-architecture students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AR1101 Design 1 Grade 'C' or Grade “S”; AR1102 Design 2 Grade 'C' or Grade “S”", + "corequisite": "" + }, + { + "moduleCode": "AR2121", + "title": "Architecture and Community: from Singapore to the World", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR2151", + "title": "Technology Integration I", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR2221", + "title": "History and Theory of Southeast Asia Architecture", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR2222", + "title": "History & Theory Of Western Architecture", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR2223", + "title": "Theory Of Urban Design & Planning", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR2224", + "title": "Ideas and Approaches in Design", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR2225", + "title": "Reading Visual Images", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "GEK2044", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR2226", + "title": "History & Theory Of Modern Architecture", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR2324", + "title": "Architectural Technology Iii", + "moduleCredit": 3, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR2325", + "title": "Arch. Tech. Iv - Construction Systems", + "moduleCredit": 3, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR2326", + "title": "Architectural Construction II", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "All non-architecture students", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AR1326 Architectural Construction 1", + "corequisite": "" + }, + { + "moduleCode": "AR2327", + "title": "Architectural Tectonics", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR2511", + "title": "Digital Design Media", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR2521", + "title": "Digital Modelling and Simulation", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR2522", + "title": "Computational Thinking: Performance Based Design", + "moduleCredit": 2, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR2523", + "title": "Computational Thinking: Building Information Modelling", + "moduleCredit": 2, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR2524", + "title": "Spatial Computational Thinking", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR2721", + "title": "Architectural Environment Iii", + "moduleCredit": 3, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR2722", + "title": "Design And The Environment", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR2723", + "title": "Strategies for Sustainable Architecture", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR2724", + "title": "Designing with Environmental Systems", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR3101", + "title": "Design 5", + "moduleCredit": 8, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "All non-architecture students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AR2101 Design 3 Grade 'C' or Grade “S”; AR2102 Design 4 Grade 'C'", + "corequisite": "" + }, + { + "moduleCode": "AR3101A", + "title": "Design 5 (Landscape Architecture Emphasis)", + "moduleCredit": 8, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "All non-architecture students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AR2101 Design 3 Grade 'C' or Grade “S”; AR2102 Design 4 Grade 'C'", + "corequisite": "" + }, + { + "moduleCode": "AR3102", + "title": "Design 6", + "moduleCredit": 8, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "All non-architecture students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AR2101 Design 3 Grade 'C' or Grade “S”; AR2102 Design 4 Grade 'C'", + "corequisite": "" + }, + { + "moduleCode": "AR3102A", + "title": "Design 6 (Landscape Architecture Emphasis)", + "moduleCredit": 8, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "All non-architecture students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AR2101 Design 3 Grade 'C' or Grade “S”; AR2102 Design 4 Grade 'C'", + "corequisite": "" + }, + { + "moduleCode": "AR3151", + "title": "Design - ISM", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR3152", + "title": "Technology Integration II", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR3221", + "title": "Topics In History & Theory Of Architecture", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR3223", + "title": "Introduction to Urbanism", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR3321", + "title": "Technology Integration", + "moduleCredit": 3, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR3322", + "title": "Design Management", + "moduleCredit": 3, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR3323", + "title": "Architectural Construction 3", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "Non-architecture students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR3324", + "title": "Architectural Structures", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have read BU2484 Building Structures/ PF2102 Structural Systems", + "corequisite": "" + }, + { + "moduleCode": "AR3411", + "title": "Architecture Internship Programme", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have taken AR3101 and AR3102", + "corequisite": "" + }, + { + "moduleCode": "AR3412", + "title": "Work Experience Internship", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "Full-time undergraduate students who have accumulated more than 12MCs for previous internship stints.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This internship module is open to full-time undergraduate students who have completed at least 60MCs and plan to proceed on an approved internship of at least 10 weeks in duration in the vacation period.", + "corequisite": "" + }, + { + "moduleCode": "AR3421", + "title": "Introduction to Architectural Practice", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR3611", + "title": "Conservation & Adaptive Re-Use", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR3612", + "title": "Cultural Heritage Studies", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR3613", + "title": "Southeast Asian Cosmopolitan Urbanism", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR3614", + "title": "Sustainable Urbanism in Asia", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR3721", + "title": "Building Environmental System Modelling", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AR1326, AR1731, AR2326, AR2723", + "corequisite": "" + }, + { + "moduleCode": "AR4001", + "title": "Advanced Architectural Study 1", + "moduleCredit": 8, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR4002", + "title": "Advanced Architectural Study 2", + "moduleCredit": 8, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR4101", + "title": "Design 7", + "moduleCredit": 8, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "All non-architecture students", + "attributes": [ + false, + false, + false, + false, + true, + false, + false, + false, + false + ], + "prerequisite": "AR3101 Design 5 Grade 'C'; AR3102 Design 6 Grade 'C'", + "corequisite": "" + }, + { + "moduleCode": "AR4101A", + "title": "Design 7", + "moduleCredit": 10, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR4102", + "title": "Design 8", + "moduleCredit": 8, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "All non-architecture students", + "attributes": [ + false, + false, + false, + false, + true, + false, + false, + false, + false + ], + "prerequisite": "AR3101 Design 5 Grade 'C'; AR3102 Design 6 Grade 'C'", + "corequisite": "" + }, + { + "moduleCode": "AR4103", + "title": "Architectural & Technology Design 1", + "moduleCredit": 8, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "All non architecture students", + "attributes": [ + false, + false, + false, + false, + true, + false, + false, + false, + false + ], + "prerequisite": "AR3101 Design 1 Grade 'C'; AR3102 Design 2 Grade 'C'", + "corequisite": "" + }, + { + "moduleCode": "AR4103A", + "title": "Architectural & Technology Design 1", + "moduleCredit": 10, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR4104", + "title": "Architectural & Technology Design 2", + "moduleCredit": 8, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "All non architecture students", + "attributes": [ + false, + false, + false, + false, + true, + false, + false, + false, + false + ], + "prerequisite": "AR3101 Design 5 Grade 'C'; AR3102 Design 6 Grade 'C'", + "corequisite": "" + }, + { + "moduleCode": "AR4111", + "title": "Design Futures", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR4142", + "title": "Research Report", + "moduleCredit": 8, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR4222", + "title": "Asian Architecture and Urban History", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR4223", + "title": "Architecture and Urban Heritage", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR4322", + "title": "Design Simulation & Analysis", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR4323", + "title": "Assessment of Sustainable Design", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR4421", + "title": "Architecture Internship Programme", + "moduleCredit": 8, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have taken AR3101 and AR3102", + "corequisite": "" + }, + { + "moduleCode": "AR4611", + "title": "New Public Space In The Asian Metropolis", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR4612", + "title": "Public Waterfronts In The Asian Metropolis", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR4951", + "title": "Topics in History & Theory of Architecture", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR4951G", + "title": "Topics In History And Theory Of Architecture - Curating Architecture", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR4952", + "title": "Topics in Urban Studies", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR4953", + "title": "Topics in Design Technology", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR4954", + "title": "Topics in Landscape Architecture", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR4955", + "title": "Topics in Architectural Design", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR4955G", + "title": "Architectural Design- Video and Presentation", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5001", + "title": "Sep Elective 1", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5011", + "title": "Research Methodology", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5058", + "title": "Independent Studio", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5100", + "title": "Thesis Independent Study", + "moduleCredit": 8, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5121", + "title": "Special Topics in Technology", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "Non architecture students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5141", + "title": "Dissertation", + "moduleCredit": 8, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "Non Architecture students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5142", + "title": "Technical Dissertation", + "moduleCredit": 8, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "Non Architecture students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5221", + "title": "Contemporary Theories", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5321", + "title": "Advanced Architectural Integration", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5322", + "title": "Renewable Resources and Architecture", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5421", + "title": "Architectural Practice 1", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5422", + "title": "Architectural Practice 2", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5423", + "title": "Architectural Practice", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5601", + "title": "Urban Design Theory and Praxis", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5770", + "title": "Graduate Seminar", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5801", + "title": "Options Design Research Studio 1", + "moduleCredit": 8, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "Non Architecture students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Minimum C grade in AR3101/a and AR3102/a", + "corequisite": "" + }, + { + "moduleCode": "AR5802", + "title": "Options Design Research Studio 2", + "moduleCredit": 8, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "Non Architecture students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Minimum C grade in AR3101/a and AR3102/a", + "corequisite": "" + }, + { + "moduleCode": "AR5803", + "title": "Architectural & Technology Design 1", + "moduleCredit": 8, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "All non architecture students", + "attributes": [ + false, + false, + false, + false, + true, + false, + false, + false, + false + ], + "prerequisite": "AR3101 Design 1 Grade 'C'; AR3102 Design 2 Grade 'C'", + "corequisite": "" + }, + { + "moduleCode": "AR5804", + "title": "Architectural & Technology Design 2", + "moduleCredit": 8, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "All non architecture students", + "attributes": [ + false, + false, + false, + false, + true, + false, + false, + false, + false + ], + "prerequisite": "AR3101 Design 5 Grade 'C'; AR3102 Design 6 Grade 'C'", + "corequisite": "" + }, + { + "moduleCode": "AR5805", + "title": "Advanced Architecture Studio", + "moduleCredit": 8, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "Non Architecture students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Minimum C grade in AR5801/AR5803 and AR5802/AR5804", + "corequisite": "" + }, + { + "moduleCode": "AR5806", + "title": "Architectural Design Research Report", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5807", + "title": "Architectural Design Thesis", + "moduleCredit": 20, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5808", + "title": "Final Design Project", + "moduleCredit": 20, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5951", + "title": "Topics in History & Theory of Architecture", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5951A", + "title": "Topics in History and Theory of Architecture 1", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5951B", + "title": "Topics in History & Theory of Architecture 2", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5951C", + "title": "Topics in History and Theory of Architecture 3", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5951D", + "title": "Topics in History & Theory of Architecture 4", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5951E", + "title": "Topics in History & Theory of Architecture 5", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5951F", + "title": "Topics in History & Theory of Architecture 6", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5951G", + "title": "Topics in History and Theory of Architecture 7", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5951H", + "title": "Topics in History and Theory of Architecture 8", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5951L", + "title": "Topics in History and Theory of Architecture 12", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5952", + "title": "Topics in Urbanism", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5952A", + "title": "Topics in Urbanism 1", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5952B", + "title": "Topics in Urbanism 2", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5952C", + "title": "Topics in Urbanism 3", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5952D", + "title": "Topics in Urbanism 4", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5952E", + "title": "Topics in Urbanism 5", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5952F", + "title": "Topics in Urbanism 6", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5952G", + "title": "Topics in Urbanism 7", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5952H", + "title": "Topics in Urbanism 8", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5952I", + "title": "Topics in Urbanism 9", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BA(Arch) Year 4 and Masters students", + "corequisite": "" + }, + { + "moduleCode": "AR5952J", + "title": "Topics in Urbanism 10", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5952K", + "title": "Topics in Urbanism 11", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5952L", + "title": "Topics in Urbanism 12", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5952M", + "title": "Topics in Urbanism 13", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5953", + "title": "Topics in Design Technology 1", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5953A", + "title": "Topics in Design Technology 1", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5953B", + "title": "Topics in Design Technology 2", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5953C", + "title": "Topics in Design Technology 3", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5953D", + "title": "Topics in Design Technology 4", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5953E", + "title": "Topics in Design Technology 5", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5953F", + "title": "Topics in Design Technology 6", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5953G", + "title": "Topics in Design Technology 7", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5953H", + "title": "Topics in Design Technology 8", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5953I", + "title": "Topics in Design Technology 9", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5954", + "title": "Topics in Landscape Architecture", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5954A", + "title": "Topics in Landscape Architecture 1", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5954B", + "title": "Topics in Landscape Architecture", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5954C", + "title": "Topics in Landscape Architecture", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5954D", + "title": "Topics in Landscape Architecture 4", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5954E", + "title": "Topics in Landscape Architecture 5", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5954F", + "title": "Topics in Landscape Architecture 6", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5954G", + "title": "Topics in Landscape Architecture 7", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5954H", + "title": "Topics in Landscape Architecture 8: Methods & Concepts", + "moduleCredit": 0, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5954I", + "title": "Topics in Landscape Architecture 9", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5955", + "title": "Topics in Research by Design", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5955A", + "title": "Topics in Research by Design 1", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5955B", + "title": "Topics in Research by Design 2", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5955C", + "title": "Topics in Research by Design 3", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5955D", + "title": "Topics in Research by Design 4", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5955E", + "title": "Topics in Research by Design 5", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5955F", + "title": "Topics in Research by Design 6", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5955G", + "title": "Topics in Research by Design 7", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5955H", + "title": "Topics in Research by Design 8", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5955I", + "title": "Topics in Research by Design 9", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5955J", + "title": "Topics in Research by Design 10", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5955K", + "title": "Topics in Research by Design 11", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5955M", + "title": "Topics in Research by Design 13", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5955N", + "title": "Topics in Research by Design 14", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5955O", + "title": "Topics in Research by Design 15", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5955P", + "title": "Topics in Research by Design 16", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5956", + "title": "Topics in Design and Built Environment", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5956A", + "title": "Topics in Design and Built Environment 1", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5956B", + "title": "Topics in Design and Built Environment 2", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5956C", + "title": "Topics in Design and Built Environment 3", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5956D", + "title": "Topics in Design and Built Environment 4", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5956E", + "title": "Topics in Design and Built Environment 5", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5956F", + "title": "Topics in Design and Built Environment 6", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5957", + "title": "Topics in History and Theory of Architecture", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5957A", + "title": "Topics in History and Theory of Architecture 1", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5957B", + "title": "Topics in History and Theory of Architecture 2", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5957C", + "title": "Topics in History and Theory of Architecture 3", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5957D", + "title": "Topics in History and Theory of Architecture 4", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5957E", + "title": "Topics in History and Theory of Architecture 5", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5957F", + "title": "Topics in History and Theory of Architecture 6", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5957G", + "title": "Topics in History and Theory of Architecture 7", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5957H", + "title": "Topics in History and Theory of Architecture 8", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5957I", + "title": "Topics in History and Theory of Architecture 9", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5957J", + "title": "Topics in History and Theory of Architecture 10", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5957K", + "title": "Topics in History and Theory of Architecture 11", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5957L", + "title": "Topics in History and Theory of Architecture 12", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5957M", + "title": "Topics in History and Theory of Architecture 13", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5957N", + "title": "Topics in History and Theory of Architecture 14", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5957O", + "title": "Topics in History and Theory of Architecture 15", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5958", + "title": "Topics in Urbanism", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5958A", + "title": "Topics in Urbanism 1", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5958B", + "title": "Topics in Urbanism 2", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5958C", + "title": "Topics in Urbanism 3", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5958D", + "title": "Topics in Urbanism 4", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5958E", + "title": "Topics in Urbanism 5", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5958F", + "title": "Topics in Urbanism 6", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5958G", + "title": "Topics in Urbanism 7", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5958H", + "title": "Topics in Urbanism 8", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5958I", + "title": "Topics in Urbanism 9", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5958J", + "title": "Topics in Urbanism 10", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5958K", + "title": "Topics in Urbanism 11", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5958L", + "title": "Topics in Urbanism 12", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5958M", + "title": "Topics in Urbanism 13", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5958N", + "title": "Topics in Urbanism 14", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5958O", + "title": "Topics in Urbanism 15", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5959", + "title": "Topics in Design Technology", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5959A", + "title": "Topics in Design Technology 1", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5959B", + "title": "Topics in Design Technology 2", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5959C", + "title": "Topics in Design Technology 3", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5959D", + "title": "Topics in Design Technology 4", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5959E", + "title": "Topics in Design Technology 5", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5959F", + "title": "Topics in Design Technology 6", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5959G", + "title": "Topics in Design Technology 7", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5959H", + "title": "Topics in Design Technology 8", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5959I", + "title": "Topics in Design Technology 9", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5959J", + "title": "Topics in Design Technology 10", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5959K", + "title": "Topics in Design Technology 11", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5959L", + "title": "Topics in Design Technology 12", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5959M", + "title": "Topics in Design Technology 13", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5959N", + "title": "Topics in Design Technology 14", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5959O", + "title": "Topics in Design Technology 15", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR5995L", + "title": "Topics in Research by Design 12", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AR6770", + "title": "Phd Seminar", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AS2236", + "title": "US Media in the 20th Century & Beyond", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "HY2236", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AS2237", + "title": "The U.S.: From Settlement to Superpower", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "HY2237, GEK2000", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AS3230", + "title": "American Business: Industrial Revolution-Web", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "AS3240, HY3230, HY3240", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AS3231", + "title": "American Literature I", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EN3231", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(i) EN1101E AND (ii) at least one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)", + "corequisite": "So long as students have fulfilled EN1101E, they may take this EN level-3000 module in the same semester as they are taking one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)" + }, + { + "moduleCode": "AS3232", + "title": "American Literature II", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EN3232", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(i) EN1101E AND (ii) at least one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)", + "corequisite": "So long as students have fulfilled EN1101E, they may take this EN level-3000 module in the same semester as they are taking one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)" + }, + { + "moduleCode": "AS3233", + "title": "Regionalism in American Landscapes", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Preclusions: AS2231, EN2252, EN3233", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AS3234", + "title": "Asian American Literature", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EN3234", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(i) EN1101E AND (ii) at least one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)", + "corequisite": "So long as students have fulfilled EN1101E, they may take this EN level-3000 module in the same semester as they are taking one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)" + }, + { + "moduleCode": "AS3238", + "title": "The Political History of the US", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AS3239", + "title": "The United States in the Asia-Pacific", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "HY3239", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AS3240", + "title": "Making America Modern", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "AS3230, HY3230, HY3240", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Any level 1000 or 2000 HY or AS modules", + "corequisite": "" + }, + { + "moduleCode": "AS4219", + "title": "American Intellectual History", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "HY4219", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before:\nCompleted 80MCs, including 28MCs in HY, or 28 MCs in SC with a minimum CAP of 3.50 or be on the Honours track.\n\nCohort 2012 onwards:\nCompleted 80MCs, including 28MCs in HY, or 28 MCs in SC with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "AS4232", + "title": "Topics in American Literature", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EN4232", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs including 28 MCs in EN, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "AS4233", + "title": "Topics in American Culture", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EN4233", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs including 28 MCs in EN, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "ASP1201", + "title": "H3 Humanities & Soc Sci Research Prog", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Reading the relevant H2 subject.", + "corequisite": "" + }, + { + "moduleCode": "ASP1201CH", + "title": "H3 Humanities & Soc Sci Research Prog", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [ + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Reading the relevant H2 subject – Chinese Language\nand Literature.", + "corequisite": "" + }, + { + "moduleCode": "ASP1201EC", + "title": "H3 Humanities & Soc Sci Research Prog", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [ + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Reading the relevant H2 subject – Economics.", + "corequisite": "" + }, + { + "moduleCode": "ASP1201EN", + "title": "H3 Humanities & Soc Sci Research Prog", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [ + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Reading the relevant H2 subject – Literature in English.", + "corequisite": "" + }, + { + "moduleCode": "ASP1201GE", + "title": "H3 Humanities & Soc Sci Research Prog", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [ + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Reading the relevant H2 subject – Geography.", + "corequisite": "" + }, + { + "moduleCode": "ASP1201HY", + "title": "H3 Humanities & Soc Sci Research Prog", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [ + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Reading the relevant H2 subject – History.", + "corequisite": "" + }, + { + "moduleCode": "ASP1201MS", + "title": "H3 Humanities & Soc Sci Research Prog", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [ + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Reading the relevant H2 subject – Malay Language and\nLiterature.", + "corequisite": "" + }, + { + "moduleCode": "AUD5101", + "title": "Acoustics", + "moduleCredit": 2, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AUD5102", + "title": "Anatomy & Physiology", + "moduleCredit": 2, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AUD5103", + "title": "Pathologies of the Auditory System", + "moduleCredit": 2, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "AUD5102: Anatomy & Physiology" + }, + { + "moduleCode": "AUD5104", + "title": "Perception of Sound & Speech", + "moduleCredit": 2, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "AUD5101: Acoustics" + }, + { + "moduleCode": "AUD5105", + "title": "Hearing Devices and Rehabilitation A - Part 1", + "moduleCredit": 3, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AUD5101: Acoustics\nAUD5104: Perception of Sound and Speech", + "corequisite": "AUD5106: Clinical Audiology" + }, + { + "moduleCode": "AUD5106", + "title": "Clinical Audiology A - Part 1", + "moduleCredit": 3, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AUD5101: Acoustics\nAUD5102: Anatomy & Physiology\nAUD5103: Pathologies of the Auditory System\nAUD5104: Perception of Sound and Speech", + "corequisite": "AUD5105: Hearing Devices and Rehabilitation Part A; AUD5108: Electrophysiological Assessment A." + }, + { + "moduleCode": "AUD5107", + "title": "Paediatric Audiology A - Part 1", + "moduleCredit": 3, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Pre-requisites: NIL\nModule 1: Acoustics\nModule 2: Anatomy and Physiology\nModule 3: Pathologies of the Auditory System\nModule 4: Perception of Sound and Speech", + "corequisite": "Module 5: Clinical Audiology A (Part 1)" + }, + { + "moduleCode": "AUD5108", + "title": "Electrophysiological Assessment A", + "moduleCredit": 2, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AUD5102: Anatomy and Physiology\nAUD5103: Pathologies of the Auditory System", + "corequisite": "AUD5106: Clinical Audiology A – Part 1; AUD5107: Paediatric Audiology A – Part 1" + }, + { + "moduleCode": "AUD5109", + "title": "Professional Practice Issues & Community Audiology", + "moduleCredit": 2, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AUD5110", + "title": "Vestibular Assessment and Management A", + "moduleCredit": 3, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AUD5102 Anatomy & Physiology\nAUD5103 Pathologies of the Auditory System", + "corequisite": "" + }, + { + "moduleCode": "AUD5111", + "title": "Hearing Devices & Rehabilitation A - Part 2", + "moduleCredit": 3, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AUD5101: Acoustic\nAUD5104: Perception of Sound and Speech\nAUD5105: Hearing Devices & Rehabilitation A - Part 1", + "corequisite": "AUD5112 Clinical Audiology A - Part 2" + }, + { + "moduleCode": "AUD5112", + "title": "Clinical Audiology A - Part 2", + "moduleCredit": 4, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AUD5101: Acoustic\nAUD5102: Anatomy & Physiology\nAUD5103: Pathologies of the Auditory System\nAUD5104: Perception of Sound and Speech\nAUD5105: Hearing Devices & Rehabilitation A (Part 1)", + "corequisite": "AUD5108: Electrophysiology Assessment A; AUD5111: Hearing Devices & Rehabilitation A (Part 2)" + }, + { + "moduleCode": "AUD5113", + "title": "Paediatric Audiology A - Part 2", + "moduleCredit": 4, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AUD5101 Acoustics\nAUD5102 Anatomy and Physiology\nAUD5103 Pathologies of the Auditory System\nAUD5104 Perception of Sound and Speech\nAUD5106 Clinical Audiology A (Part 1)\nAUD5107 Paediatric Audiology A (Part 1)", + "corequisite": "AUD5112 Clinical Audiology A (Part 2); AUD5114 Electrophysiology Assessment A" + }, + { + "moduleCode": "AUD5114", + "title": "Electrophysiological Assessment B", + "moduleCredit": 2, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AUD5102 Anatomy and Physiology\nAUD5103 Pathologies of the Auditory System\nAUD5106 Clinical Audiology A (Part 1)\nAUD5107 Paediatric Audiology A (Part 1)\nAUD5108 Electrophysiology Assessment A", + "corequisite": "AUD5112 Clinical Audiology A (Part 2); AUD5113 Paediatric Audiology A (Part 2)" + }, + { + "moduleCode": "AUD5115", + "title": "Experimental Design & Statistics", + "moduleCredit": 3, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Basic spread sheet skills. Computer access with Excel.", + "corequisite": "" + }, + { + "moduleCode": "AUD5216", + "title": "Vestibular Assessment and Management B", + "moduleCredit": 3, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AUD5102: Anatomy & Physiology\nAUD5103: Pathologies of Auditory System\nAUD5110: Vestibular Assessment and Management A", + "corequisite": "" + }, + { + "moduleCode": "AUD5217", + "title": "Hearing Devices and Rehabilitation B (Part 1)", + "moduleCredit": 3, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AUD5101: Acoustics\nAUD5104: Perception of Sound and Speech\nAUD5105 & AUD5111: Hearing Devices and Rehabilitation A - Part 1 & Part 2\nAUD5106 & AUD5112: Clinical Audiology A", + "corequisite": "AUD52117: Clinical Audiology B (Part 1)" + }, + { + "moduleCode": "AUD5218", + "title": "Clinical Audiology B (Part 1)", + "moduleCredit": 3, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AUD5105 & AUD5111: Hearing Devices and Rehabilitation A\nAUD5106 & AUD5112: Clinical Audiology A\nAUD5107 & AUD5113: Paediatric Audiology A\nAUD5108 & AUD5114: Electrophysiological Assessment A & B", + "corequisite": "AUD5217: Hearing Devices and Rehabilitation B (Part 1); AUD5118: Paediatric Audiology B (Part 1)" + }, + { + "moduleCode": "AUD5219", + "title": "Paediatric Audiology B - Part 1", + "moduleCredit": 3, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AUD5105 & AUD5111: Hearing Devices and Rehabilitation A (Part 1 & Part 2)\nAUD5107 & AUD5113: Paediatric Audiology A (Part 1 & Part 2)\nAUD5108 & AUD5114: Electrophysiological Assessment", + "corequisite": "AUD5217: Hearing Devices and Rehabilitation B (Part 1); AUD5218: Clinical Audiology B (Part 1)" + }, + { + "moduleCode": "AUD5220", + "title": "Independent Studies in Audiology (Research project - part 1)", + "moduleCredit": 8, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AUD5115: Experimental Design and Statistics", + "corequisite": "" + }, + { + "moduleCode": "AUD5221", + "title": "Hearing Devices and Rehabilitation B (Part 2)", + "moduleCredit": 4, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AUD5101: Acoustics\nAUD5104: Perception of Sound and Speech\nAUD5105 & AUD5111: Hearing Devices and Rehabilitation A – Part 1 & Part 2\nAUD5106 & AUD5112: Clinical Audiology A", + "corequisite": "AUD5222: Clinical Audiology B (Part 1)" + }, + { + "moduleCode": "AUD5222", + "title": "Clinical Audiology B (Part 2)", + "moduleCredit": 4, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AUD5105 - AUD5218", + "corequisite": "AUD5221: Hearing Devices and Rehabilitation B (Part 2); AUD5223: Paediatric Audiology B (Part 2)" + }, + { + "moduleCode": "AUD5223", + "title": "Paediatric Audiology B - Part 2", + "moduleCredit": 4, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AUD5105 - AUD5218", + "corequisite": "AUD5221: Hearing Devices and Rehabilitation B (Part 2); AUD5222: Clinical Audiology B (Part 2)" + }, + { + "moduleCode": "AUD5224", + "title": "Independent Studies in Audiology (Research project - part 2)", + "moduleCredit": 8, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AUD5220 Independent studies in Audiology Part 1", + "corequisite": "" + }, + { + "moduleCode": "AX1821", + "title": "Faculty Exchange Module", + "moduleCredit": 2, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AX3722", + "title": "Special Exchange Module", + "moduleCredit": 2, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AX3723", + "title": "Special Exchange Module", + "moduleCredit": 2, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AY1111", + "title": "Anatomy", + "moduleCredit": 1, + "department": "Anatomy", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "AY1130", + "title": "Human Anatomy and Physiology I", + "moduleCredit": 4, + "department": "Anatomy", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BAA6001", + "title": "Accounting Research Seminars I", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BAA6002", + "title": "Accounting Research Seminars II", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BAA6001 Accounting Research Seminars I", + "corequisite": "" + }, + { + "moduleCode": "BAA6003A", + "title": "Seminar on Empirical Capital Markets Research", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BAA6001 (BAA6002 and BAA6003A could be taken in different order).", + "corequisite": "" + }, + { + "moduleCode": "BAA6003B", + "title": "PhD Seminar on Fixed Income Research", + "moduleCredit": 2, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BAA6003C", + "title": "Seminar on Financial Analyst Research", + "moduleCredit": 2, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BAA6001 (BAA6002 and BAA6003C could be taken in \ndifferent order).", + "corequisite": "" + }, + { + "moduleCode": "BAA6004", + "title": "PhD Seminar on Analytical Research in Accounting", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BBB8100", + "title": "Advance Placement Credit 2", + "moduleCredit": 2, + "department": "NUS", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BBP5006", + "title": "Independent Study:international Business in the Asia Pacific", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BBP6781", + "title": "Theory of Strategic Management", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BBP6782A", + "title": "Seminar in Corporate Strategy", + "moduleCredit": 2, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BBP6782B", + "title": "Seminar in Behavioural Strategic Management", + "moduleCredit": 2, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BBP6791", + "title": "Seminar in International Business", + "moduleCredit": 2, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BBP6794", + "title": "Seminar in Innovation and Entrepreneurship", + "moduleCredit": 2, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BCP4002", + "title": "Consulting Practicum", + "moduleCredit": 8, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All levels 1000 and 2000 foundation modules. Additional prerequisites may be imposed by the supervisor(s) depending on the topics of research.", + "corequisite": "" + }, + { + "moduleCode": "BCP4002B", + "title": "Consulting Practicum", + "moduleCredit": 8, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All levels 1000 and 2000 foundation modules. Additional prerequisites may be imposed by the supervisor(s) depending o the topics of research.", + "corequisite": "" + }, + { + "moduleCode": "BDC5001", + "title": "Operations Modeling and Applications", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BDC5101", + "title": "Deterministic Operations Research Models", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BDC5102", + "title": "Stochastic Operations Research Models", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BDC5111", + "title": "Linear Programming", + "moduleCredit": 2, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BDC5113", + "title": "Convex Optimization", + "moduleCredit": 2, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BDC5115", + "title": "Discrete Optimization and Applications", + "moduleCredit": 2, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BDC5123", + "title": "Simulation Modeling & Analysis", + "moduleCredit": 2, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BDC5131", + "title": "Management of Information", + "moduleCredit": 2, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BDC5201", + "title": "Multivariate Business Analytics", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BDC6111", + "title": "Foundations of Optimization", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "IE6001", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "A basic knowledge of linear algebra", + "corequisite": "" + }, + { + "moduleCode": "BDC6112", + "title": "Stochastic Processes I", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "IE6004 Stochastic Process I", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BDC6113", + "title": "Foundations of Inventory Management", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BDC6114", + "title": "Logistics and Supply Chain", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BDC6218", + "title": "Seminars in Optimization I", + "moduleCredit": 2, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BDC6219", + "title": "Seminars in Optimization II", + "moduleCredit": 2, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BDC6221", + "title": "Stochastic Modelling and Optimization", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students should preferably have basic knowledge of stochastic processes which could be fulfilled by taking the module BDC 6112 or IE6004.", + "corequisite": "" + }, + { + "moduleCode": "BDC6228", + "title": "Seminars In Stochastic Processes I", + "moduleCredit": 2, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BDC6229", + "title": "Seminars In Stochastic Processes II", + "moduleCredit": 2, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BDC6248", + "title": "Seminars In Operations Management I", + "moduleCredit": 2, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BDC6301", + "title": "Bayesian Modeling and Decision-Making", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "IE6301", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BDC6112/IE6004 Stochastic Processes I", + "corequisite": "" + }, + { + "moduleCode": "BDC6302", + "title": "Discrete Optimization and Algorithms", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "IE6302", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BDC6111/IE6001 Foundations of Optimization", + "corequisite": "" + }, + { + "moduleCode": "BDC6303", + "title": "Queues and Stochastic Networks", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "IE6507 Queues and Stochastic Networks", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IE6505/ BDC6306 Stochastic Processes II", + "corequisite": "" + }, + { + "moduleCode": "BDC6304", + "title": "Robust modelling and optimization", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "IE6304", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Theory of linear programming, including duality theory.\nBasic knowledge of algorithms and complexity.", + "corequisite": "" + }, + { + "moduleCode": "BDC6305", + "title": "Theory and Algorithms for Dynamic Programming", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "IE6509 Theory and Algorithms for Dynamic Programming", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Suitable mathematical maturity", + "corequisite": "" + }, + { + "moduleCode": "BDC6306", + "title": "Stochastic Processes II", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "IE6505 Stochastic Processes II", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BDC6112/IE6004 Stochastic Processes I", + "corequisite": "At least one undergraduate course in Calculus." + }, + { + "moduleCode": "BDC6307", + "title": "Introduction to Data Analytics", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "IE6307", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Calculus, Linear Algebra, Basic Probability Theory", + "corequisite": "" + }, + { + "moduleCode": "BFA6006B", + "title": "Independent Study: Mortgage-Backed Securities and Banking", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BFS1001", + "title": "Personal Development & Career Management", + "moduleCredit": 0, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BFS2001", + "title": "Personal Development and Career Management II", + "moduleCredit": 0, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BH1001", + "title": "Management & Organization", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BH1002", + "title": "Financial Accounting", + "moduleCredit": 4, + "department": "Finance and Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BH1002E", + "title": "Financial Accounting", + "moduleCredit": 4, + "department": "Finance and Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BH1003", + "title": "Principles of Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BH1004", + "title": "Legal Environment of Business", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BH1005", + "title": "Managerial Economics", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BH2001", + "title": "Macro & International Economics", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BH2002", + "title": "Managerial Accounting", + "moduleCredit": 4, + "department": "Finance and Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BH2003", + "title": "Management Science", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BH2004", + "title": "Finance", + "moduleCredit": 4, + "department": "Finance and Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BH2005", + "title": "Asia Pacific Business & Society", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BH2006", + "title": "Operations Management", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BHD4001", + "title": "Honours Dissertation", + "moduleCredit": 12, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "Varies depending on topics of research", + "corequisite": "" + }, + { + "moduleCode": "BHD4001C", + "title": "Honours Dissertation", + "moduleCredit": 12, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + false, + false, + false, + false + ], + "prerequisite": "Varies depending on topics of research", + "corequisite": "" + }, + { + "moduleCode": "BI3001", + "title": "Business Internship I", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed at least 60 MCs. Students should attend and complete one of two not-for-credit Career Creation Starter (STR) modules.", + "corequisite": "" + }, + { + "moduleCode": "BI3001A", + "title": "Business Internship I", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BI3001B", + "title": "Business Internship I", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BI3001C", + "title": "Business Internship I", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BI3001D", + "title": "Business Internship I", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BI3001E", + "title": "Business Internship I", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BI3001F", + "title": "Business Internship I", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BI3001G", + "title": "Business Internship I", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BI3002", + "title": "Business Internship II", + "moduleCredit": 8, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed at least 60 MCs. Students should attend and complete one of two not-for-credit Career Creation Starter (STR) modules.", + "corequisite": "" + }, + { + "moduleCode": "BI3002A", + "title": "Business Internship II", + "moduleCredit": 8, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BI3002B", + "title": "Business Internship II", + "moduleCredit": 8, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BI3002C", + "title": "Business Internship II", + "moduleCredit": 8, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BI3002D", + "title": "Business Internship II", + "moduleCredit": 8, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BI3003", + "title": "Work Experience Internship", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "Full-time NUS business school undergraduate students who have accumulated more than 12 MCs for previous internship stints under BI3001 and/or BI3002.\n\nFull-time NUS business school undergraduate students who have previously completed a BI3003 internship.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This internship module is open to NUS business school undergraduate students who have completed at least 60MCs and plan to do an approved internship between 10-12 weeks in duration during the vacation period. Students should attend and complete one of two not-for-credit Career Creation Starter (STR) modules.", + "corequisite": "" + }, + { + "moduleCode": "BI3003A", + "title": "Work Experience Internship", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "Full-time NUS business school undergraduate students who have accumulated more than 12 MCs for previous internship stints under BI3001 and/or BI3002.\n\nFull-time NUS business school undergraduate students who have previously completed a BI3003 internship.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This internship module is open to NUS business school undergraduate students who have completed at least 60MCs and plan to do an approved internship between 10-12 weeks in duration, during the vacation period.\n\nStudents should attend and complete one of two not-for-credit Business Finishing School (BFS) modules.", + "corequisite": "" + }, + { + "moduleCode": "BI3003B", + "title": "Work Experience Internship", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "Full-time NUS business school undergraduate students who have accumulated more than 12 MCs for previous internship stints under BI3001 and/or BI3002.\n\nFull-time NUS business school undergraduate students who have previously completed a BI3003 internship.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This internship module is open to NUS business school undergraduate students who have completed at least 60MCs and plan to do an approved internship between 10-12 weeks in duration, during the vacation period.\n\nStudents should attend and complete one of two not-for-credit Business Finishing School (BFS) modules.", + "corequisite": "" + }, + { + "moduleCode": "BI3003C", + "title": "Work Experience Internship", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "Full-time NUS business school undergraduate students who have accumulated more than 12 MCs for previous internship stints under BI3001 and/or BI3002.\n\nFull-time NUS business school undergraduate students who have previously completed a BI3003 internship.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This internship module is open to NUS business school undergraduate students who have completed at least 60MCs and plan to do an approved internship between 10-12 weeks in duration, during the vacation period.\n\nStudents should attend and complete one of two not-for-credit Business Finishing School (BFS) modules.", + "corequisite": "" + }, + { + "moduleCode": "BI3003D", + "title": "Work Experience Internship", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "Full-time NUS business school undergraduate students who have accumulated more than 12 MCs for previous internship stints under BI3001 and/or BI3002.\n\nFull-time NUS business school undergraduate students who have previously completed a BI3003 internship.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This internship module is open to NUS business school undergraduate students who have completed at least 60MCs and plan to do an approved internship between 10-12 weeks in duration, during the vacation period.\n\nStudents should attend and complete one of two not-for-credit Business Finishing School (BFS) modules.", + "corequisite": "" + }, + { + "moduleCode": "BIS3001", + "title": "Independent Study Module in Business", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "This will vary according to specific topics.", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "This will vary according to specific topics.", + "corequisite": "" + }, + { + "moduleCode": "BIS3001A", + "title": "Independent Study Module in Business", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "This will vary according to specific topics.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This will vary according to specific topics.", + "corequisite": "" + }, + { + "moduleCode": "BIS3751", + "title": "Independent Study in Business", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Varies according to the subject matter covered.", + "corequisite": "" + }, + { + "moduleCode": "BL5102", + "title": "Environmental Science", + "moduleCredit": 4, + "department": "SDE Dean's Office", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BL5198", + "title": "Graduate Seminar Module in Biological Sciences", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Basic knowledge in life sciences", + "corequisite": "" + }, + { + "moduleCode": "BL5201", + "title": "Structural Biology And Proteomics", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students should have completed any two of the following undergraduate courses or their equivalent: Biochemical Techniques; Proteins and Enzymes; Physical Chemistry; and Organic Chemistry.", + "corequisite": "" + }, + { + "moduleCode": "BL5202A", + "title": "Biophysical Methods in Life Sciences", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For those students who have taken undergraduate courses of organic chemistry, physics and biochemistry", + "corequisite": "" + }, + { + "moduleCode": "BL5203", + "title": "Molecular Recognition and Interactions", + "moduleCredit": 2, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students should have read Biology and Chemistry at undergraduate level", + "corequisite": "" + }, + { + "moduleCode": "BL5204", + "title": "Graduate Bootcamp for Biotechnology Industry", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Graduate students with a basic degree in Life Sciences related disciplines which include bioengineering, biotechnology, biocomputing, chemical biology and biological sciences", + "corequisite": "" + }, + { + "moduleCode": "BL5207A", + "title": "Topics In Developmental Biology", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Basic knowledge in biology at undergraduate level", + "corequisite": "" + }, + { + "moduleCode": "BL5209", + "title": "Directed Studies in Molecular Ecology", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Open to graduate students only. Students without a background in ecology should consult the lecturers first.", + "corequisite": "" + }, + { + "moduleCode": "BL5210", + "title": "Biogeography", + "moduleCredit": 2, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BL5212", + "title": "Critical Thinking in Biological Sciences", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BL5213", + "title": "Protein Design & Engineering", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BL5214", + "title": "Advanced Proteins Nmr", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Basic understanding of protein chemistry is essential. Pre-university level physics and mathematics are desired. Students with strong physics or computer background who want to know more on protein NMR are also encouraged.", + "corequisite": "" + }, + { + "moduleCode": "BL5215", + "title": "Macromolecular X-Ray Crystallography", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BL5216", + "title": "Advanced Genetics and Genome Sciences", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have read advanced undergraduate courses in molecular biology and genetics", + "corequisite": "" + }, + { + "moduleCode": "BL5217", + "title": "Population Genomics and Phylogenomics", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BL5218", + "title": "Directed Studies in Behavioural Ecology", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BL5219", + "title": "Field Research Techniques for Plant Ecology", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Basic knowledge in biology", + "corequisite": "" + }, + { + "moduleCode": "BL5220", + "title": "Advanced Animal Development", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "A strong foundation in life sciences and molecular biology", + "corequisite": "" + }, + { + "moduleCode": "BL5221", + "title": "Plant and Microbial Development", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Basic knowledge in cell biology and development", + "corequisite": "" + }, + { + "moduleCode": "BL5222", + "title": "Cellular Mechanisms", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "A strong foundation in life sciences and molecular biology", + "corequisite": "" + }, + { + "moduleCode": "BL5223", + "title": "Advanced Molecular Genetics", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Basic knowledge in molecular biology and genetics", + "corequisite": "" + }, + { + "moduleCode": "BL5224", + "title": "Special topics in Biological Sciences", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Basic background in molecular biology, calculus and differential equations, and consent of course lecturers.", + "corequisite": "" + }, + { + "moduleCode": "BL5225", + "title": "Marine Conservation", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Open to graduate students only", + "corequisite": "" + }, + { + "moduleCode": "BL5226", + "title": "Novel applications in Bioimaging Sciences", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students should have basic background in molecular and cell biology, and consent of course lecturers.", + "corequisite": "" + }, + { + "moduleCode": "BL5227A", + "title": "Introduction to Evolution of Development", + "moduleCredit": 2, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students should have attended advanced undergraduate courses in biology.", + "corequisite": "" + }, + { + "moduleCode": "BL5227B", + "title": "Evolution of Development", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "The course requires some basic training in Evolutionary Biology and Developmental Biology in order to enable students to integrate these disciplines throughout the course.", + "corequisite": "" + }, + { + "moduleCode": "BL5228", + "title": "Advances in Cell and Molecular Biology", + "moduleCredit": 2, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students should have attended advanced undergraduate\ncourses in cell and molecular biology.", + "corequisite": "" + }, + { + "moduleCode": "BL5229", + "title": "Fundamentals in Biophysical Sciences", + "moduleCredit": 2, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students should have attended advanced undergraduate courses in Biology and with basic concepts in Mathematics and Physics.", + "corequisite": "" + }, + { + "moduleCode": "BL5230", + "title": "Biological Invasions", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BL5231", + "title": "Writing in the Biological Sciences", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BL5232", + "title": "Introduction to Bioimaging", + "moduleCredit": 2, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BL5232A", + "title": "Practical Bioimaging A: Electron Microscopy", + "moduleCredit": 2, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BL5232 Introduction to Bioimaging", + "corequisite": "" + }, + { + "moduleCode": "BL5232B", + "title": "Practical Bioimaging B: Light Microscopy", + "moduleCredit": 2, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BL5232 Introduction to Bioimaging", + "corequisite": "" + }, + { + "moduleCode": "BL5232C", + "title": "Practical Bioimaging C: Hands-on Microscopy", + "moduleCredit": 2, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BL5232 Introduction to Bioimaging", + "corequisite": "" + }, + { + "moduleCode": "BL5233", + "title": "Data Analysis for Conservation Biology with R", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "An undergraduate course in statistics.", + "corequisite": "" + }, + { + "moduleCode": "BL5234", + "title": "Quantitative Methods and Critical Thinking in Biology", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Undergraduate background in ecology, evolution or epidemiology. Students from mathematical or quantitative science backgrounds also eligible.", + "corequisite": "" + }, + { + "moduleCode": "BL5235", + "title": "Advanced Optics for Microscopy", + "moduleCredit": 2, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BL5232 Introduction to Bioimaging", + "corequisite": "" + }, + { + "moduleCode": "BL5236", + "title": "Introduction to Electron Microscopy for Life Sciences", + "moduleCredit": 2, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BL5237", + "title": "Computational Biology: Sequences, Structures, Functions", + "moduleCredit": 2, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Basic understanding of physics/chemistry and interest in structural biology", + "corequisite": "" + }, + { + "moduleCode": "BL5238", + "title": "Infectious Disease Modelling", + "moduleCredit": 2, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BL5312", + "title": "Natural History Collections and Conservation", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BLD3001", + "title": "Business Leadership Case Analysis", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(MNO1706/MNO1706X or PL3239) and MNO2705.", + "corequisite": "" + }, + { + "moduleCode": "BLD3002", + "title": "CEOs as Leaders", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "(MNO1706/MNO1706X or PL3239) and MNO2705.", + "corequisite": "" + }, + { + "moduleCode": "BLD3003", + "title": "Personal Leadership Development", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "(MNO1706/MNO1706X or PL3239) and MNO2705.", + "corequisite": "" + }, + { + "moduleCode": "BLD3004", + "title": "Topics in Leadership Development", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "(MNO1706/MNO1706X or PL3239) and MNO2705.", + "corequisite": "" + }, + { + "moduleCode": "BMA5001", + "title": "Managerial Economics", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "BMS5110 Managerial Economics\nBMS5117 Game Theory for Managers", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5002", + "title": "Analytics For Managers", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5003", + "title": "Financial Accounting", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5004A", + "title": "Management & Organization", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5005", + "title": "Management Accounting", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BMA5003", + "corequisite": "" + }, + { + "moduleCode": "BMA5008", + "title": "Financial Management", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5009", + "title": "Marketing Management", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5010A", + "title": "Managing Operations", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5011", + "title": "Macroeconomics in the Global Economy", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "BMA 5001 “Managerial Economics”" + }, + { + "moduleCode": "BMA5011A", + "title": "Topics in Macroeconomics in the Global Economy", + "moduleCredit": 2, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5013", + "title": "Corporate Strategy", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 3 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5014", + "title": "Advanced Business Communications", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5016", + "title": "Leading with Impact", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5016A", + "title": "Leadership in Organizations", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5017", + "title": "Managerial Operations and Analytics", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5102", + "title": "Legal Issues in Business", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 3 + ], + "preclusion": "BMS5111", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5104", + "title": "Global Strategic Management", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "BMS5112 \nBMS5118", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5104A", + "title": "Topics in Global Strategic Management", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5108", + "title": "New Venture Creation", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5112", + "title": "Asian Business Environments", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5112A", + "title": "Topics in Asian Business Environment", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5115", + "title": "Management of Technological Innovation", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5115A", + "title": "Topics in Management of Technological Innovation", + "moduleCredit": 2, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5118", + "title": "Special Topics in Strategy and Policy", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5118A", + "title": "Special Topics in Strategy and Policy: Sustainability Strategy", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5118B", + "title": "Strategies in Healthcare Industry An Asian Perspective on Pharma, Devices & Biotech sectors", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5119", + "title": "Family Business", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 3 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5120", + "title": "Current Trends in Emerging Growth Markets", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5121", + "title": "Asian Business Insights III", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5122", + "title": "Macroeconomics and Finance: Perspectives from Asia", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5122A", + "title": "Topics in Macroeconomics and Finance: Perspectives from Asia", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BMA5011 Macro Economics in the Global Economy", + "corequisite": "" + }, + { + "moduleCode": "BMA5124", + "title": "Environmental and Resource Management in a Regulatory Environment", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BMA5001", + "corequisite": "" + }, + { + "moduleCode": "BMA5125", + "title": "Managing Business Networks", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5126", + "title": "Strategy and Big Data", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BMA5013", + "corequisite": "" + }, + { + "moduleCode": "BMA5127", + "title": "Consulting: Process, Industry and Innovation", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5128", + "title": "Venture Capital", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5128A", + "title": "Special Topics in Venture Capital", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5129", + "title": "Leading with Strategy in Digital Firms", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BMA5013 Corporate Strategy", + "corequisite": "" + }, + { + "moduleCode": "BMA5129A", + "title": "Topics in Leading with Strategy in Digital Firms", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students should preferably have completed a module on strategy", + "corequisite": "" + }, + { + "moduleCode": "BMA5130", + "title": "Consulting 2.0", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5131", + "title": "Micro-National Champions in the Digital Economy", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5132", + "title": "Emerging Tech and the Value of Data", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5232", + "title": "Strategic Information Technology", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5232A", + "title": "Topics in Strategic Information Technology", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5235", + "title": "Transformational Service Innovations", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5236", + "title": "Global Operations Strategy In The Digital Economy", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 3 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5237", + "title": "Managing Global Value Chains and Networks", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5237A", + "title": "Topics in Managing Global Value Chains and Networks", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5238", + "title": "Data Monetisation", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5239", + "title": "Digitization for Business Model Innovation", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5255", + "title": "Management Decision Making", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5271", + "title": "Operations Leadership: Supply Chain and Service Management", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5274", + "title": "Project Management", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5300B", + "title": "Special Topics in Finance", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5300C", + "title": "Special Topics in Finance", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5300D", + "title": "Special Topics in Finance", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5300E", + "title": "Special Topics in Finance", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5300F", + "title": "Special Topics in Finance", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5300I", + "title": "Special Topics in Finance", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5300J", + "title": "Special Topics in Finance", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5300K", + "title": "Special Topics in Finance", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5300L", + "title": "Special Topics in Finance", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5300M", + "title": "Special Topics in Finance", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5300X", + "title": "Special Topics in Finance", + "moduleCredit": 1, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5301", + "title": "International Financial Management", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5302", + "title": "Investment Analysis and Management", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5302A", + "title": "Investment Analysis & Management", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5303", + "title": "Financial Statement Analysis", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5307", + "title": "Options and Futures", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5307A", + "title": "Topics in Options and Futures", + "moduleCredit": 2, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5308", + "title": "Fixed Income Securities", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5309", + "title": "Fund Management", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5309A", + "title": "Topics in Fund Management", + "moduleCredit": 2, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5310", + "title": "Corporate Governace", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5312", + "title": "Advance Corporate Finance", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5312A", + "title": "Topics in Advanced Corporate Finance", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5313", + "title": "Private Equity", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "BMF5346 Venture Capital and Private Equity", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5313A", + "title": "Valuation and Mergers & Acquisitions", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 3 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5313C", + "title": "Topics in Valuation and Mergers & Acquisitions", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5313D", + "title": "Private Equity", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BMF5346 Venture Capital and Private Equity", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5313E", + "title": "Topics in Private Equity", + "moduleCredit": 2, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5314", + "title": "Entrepreneurial Finance", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5314A", + "title": "Entreprenuerial Finance", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5315A", + "title": "Valuation", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5316A", + "title": "Risk Management", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5318", + "title": "Investment Banking", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5318A", + "title": "Topics in Investment Banking", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5319", + "title": "Corporate Risk Management", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5319A", + "title": "Topics in Corporate Risk Management", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5321", + "title": "International Financial Markets", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5321A", + "title": "Topics in International Financial Markets", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5322", + "title": "Corporate Governance & Financial Policy", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5323", + "title": "Applied Portfolio Management", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5324", + "title": "Value Investing In Asia", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5325", + "title": "International Finance", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5326", + "title": "Selected Topics in Finance: China’s Capital Markets", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5327", + "title": "Family Business & Wealth Management", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5328", + "title": "Measuring and Improving Social Impact", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5330", + "title": "Topics in Finance: Trading and Investing in Commodities", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5331", + "title": "Applied Investment Valuation", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "ync", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "tbc" + }, + { + "moduleCode": "BMA5332", + "title": "Financial Regulation in a Digital Age", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5333", + "title": "Inclusive FinTech", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5400F", + "title": "Special Topics in Strategy & Organization", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5400H", + "title": "Special Topics in Strategy & Organization", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5400I", + "title": "Special Topics in Strategy & Organization", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5400K", + "title": "Special Topics in Strategy & Organization", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5400L", + "title": "Special Topics in Strategy & Organization", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5400M", + "title": "Special Topics in Strategy & Organization", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5400N", + "title": "Special Topics in Strategy & Organization", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5400P", + "title": "Special Topics in Strategy & Organization", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5404", + "title": "Entrepreneurship & Innovation", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5405", + "title": "Managing Change", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5405A", + "title": "Topics in Managing Change", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5406", + "title": "Negotiations and Conflict Management", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 4 + ], + "preclusion": "BMS5115", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5409A", + "title": "Topics in Managerial Decision Making", + "moduleCredit": 2, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5411", + "title": "Talent Management and development", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5411A", + "title": "Topics in Talent Management in a Globalised Environment", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5412", + "title": "Global Business Leader Across Cultures", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5422", + "title": "How to Successfully Lead Your Groups and Teams", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5423", + "title": "Managing Across Borders", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5424", + "title": "Corporate Entrepreneurship and Business Model\nEvaluation", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5425", + "title": "Social Entrepreneurship", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5428", + "title": "Strategic Foresight", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5500B", + "title": "Special Topics in Marketing", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5500D", + "title": "Special Topics in Marketing", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5500E", + "title": "Special Topics in Marketing", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5500F", + "title": "Special Topics in Marketing", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5500G", + "title": "Special Topics in Marketing", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5500H", + "title": "Special Topics in Marketing", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5500N", + "title": "Special Topics in Marketing", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5500O", + "title": "Special Topics in Marketing", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5500X", + "title": "Special Topics in Marketing", + "moduleCredit": 1, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5501", + "title": "Competitive Marketing Strategy", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5502", + "title": "Consumer Behaviour", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5502A", + "title": "Topics in Consumer Behaviour", + "moduleCredit": 2, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5503", + "title": "Promotional Management", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5503A", + "title": "Promotional Management", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5504", + "title": "Global Marketing", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5504A", + "title": "Topics in Global Marketing", + "moduleCredit": 2, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5505", + "title": "Services Marketing", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5506", + "title": "Product & Brand Management", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 3 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5509", + "title": "Marketing Strategy and Game Theory", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5511", + "title": "Strategic Pricing", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5511A", + "title": "Special Topics in Channels & Pricing Strategy", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5515", + "title": "Marketing Research", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5517", + "title": "Pricing Strategies", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5523", + "title": "Customer Relationship Management", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5523A", + "title": "Topics in Customer Relationship Management", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5524", + "title": "Marketing Analytics", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5524A", + "title": "Topics in Marketing Analytics", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5525", + "title": "Competitive Strategies For Smes and Startups", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5526", + "title": "Ethics/ Corporate Social Responsibility", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5527", + "title": "Technology Transfer and Commercialization", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5527A", + "title": "Topics in Technology Transfer & Commercialization", + "moduleCredit": 2, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5528", + "title": "Business to Business Marketing", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5528A", + "title": "Topics in Business-to-Business Marketing", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5529", + "title": "Marketing Metrics - Measuring Marketing Performance", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5529A", + "title": "Topics in Marketing Metrics-Measuring Marketing Performance", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5530", + "title": "Design Thinking & Product Innovations", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5530A", + "title": "Topics in Design Thinking & Business Innovation", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5531", + "title": "Sales Management", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5531A", + "title": "Sales Management", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5532", + "title": "Big Picture Marketing", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5532A", + "title": "Topics in Big Picture Marketing", + "moduleCredit": 2, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5533", + "title": "Marketing in the Digital Age", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5534", + "title": "Marketing in China", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5535", + "title": "Marketing for Entrepreneurs", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5536", + "title": "Behavioral Economics in Business", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "BMS5507 Behavioral Economics", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "There is no specific course pre-requisite. But it is important that the student has at least a good knowledge of microeconomics and a good grasp of analytical and\nquantitative skills.", + "corequisite": "" + }, + { + "moduleCode": "BMA5702", + "title": "Advanced Independent Study in Finance", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Vary according to project topic. In general, however, the MBA student is expected to have past work experience in asset / financial management and/or completed the core finance modules of the MBA curriculum.", + "corequisite": "Vary according to project topic." + }, + { + "moduleCode": "BMA5801", + "title": "Launch Your Transformation", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5802", + "title": "MBA Survival Kit", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BMA5801 Management Communication", + "corequisite": "" + }, + { + "moduleCode": "BMA5803", + "title": "C-Suite Life", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5901", + "title": "MBA Consulting Project", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5902", + "title": "Entrepreneurship Practicum", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMA5903", + "title": "MBA Internship", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed at least one semester of MBA programme", + "corequisite": "" + }, + { + "moduleCode": "BMA5904A", + "title": "ENTREPRENEURSHIP STUDY MISSION – Silicon Valley, USA", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5001A", + "title": "Leadership", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5001B", + "title": "Managerial Skills", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5002A", + "title": "Corporate Strategy", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5002B", + "title": "Contemporary Issues in Strategy", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5003A", + "title": "Decision Making", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5003B", + "title": "Information Management", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5004A", + "title": "Managerial Economics", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5004B", + "title": "Asian Markets and Industries", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5005A", + "title": "International Business", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5005B", + "title": "International Business Law", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5006A", + "title": "Marketing Management", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5006B", + "title": "Contemporary Issues in Marketing", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5007A", + "title": "Accounting", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5007B", + "title": "Financial Management", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5008A", + "title": "Organizational Behavior and Human Resource Management", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5008B", + "title": "Contemporary Issues in Human Resouce Managment and Organuzational Behavior", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5009A", + "title": "Systems & Operations Management", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5009B", + "title": "Supply Chain Management", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5010A", + "title": "Corporate Finance", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5010B", + "title": "Corporate Governance", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5011A", + "title": "Contemporary Issues in Business 1", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5011B", + "title": "Contemporary Issues in Business 2", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5012", + "title": "Advanced Study Project", + "moduleCredit": 6, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5012A", + "title": "Economic analysis for managers", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5012B", + "title": "Special topics", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5021", + "title": "Leadership: exploration, assessment & development", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5022", + "title": "Strategy", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "N.A.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "N.A.", + "corequisite": "N.A." + }, + { + "moduleCode": "BMC5023", + "title": "Business analytics and decision making", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "N.A.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "N.A.", + "corequisite": "N.A." + }, + { + "moduleCode": "BMC5024", + "title": "Asia and global economy", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5025", + "title": "International business and internationalisation", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 3 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5026", + "title": "Marketing strategy", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 3 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5027", + "title": "Accounting and information management", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5028", + "title": "Managing human capital", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "NL", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NL", + "corequisite": "NL" + }, + { + "moduleCode": "BMC5029", + "title": "Value chains, logistics and operations", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5030", + "title": "Governance and sustainable business", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5031", + "title": "Technology, innovation and entrepreneurship", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "N.A", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "N.A", + "corequisite": "N.A" + }, + { + "moduleCode": "BMC5032", + "title": "Economic analysis for managers", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5033", + "title": "Managing creativity and innovation", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "N.A.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "N.A.", + "corequisite": "N.A." + }, + { + "moduleCode": "BMC5034", + "title": "Special topics 1: Technology and business frontiers", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "N.A", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "N.A", + "corequisite": "N.A" + }, + { + "moduleCode": "BMC5035", + "title": "Special topics 2", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5035A", + "title": "Special topics 2A", + "moduleCredit": 1, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5035B", + "title": "Special topics 2B", + "moduleCredit": 1, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5035C", + "title": "Special topics 2C", + "moduleCredit": 1, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5035D", + "title": "Special topics 2D", + "moduleCredit": 1, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5035E", + "title": "Business Consultation Project on Change Management", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5035F", + "title": "Digital Transformation and Intelligent Management", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5035G", + "title": "Current Topics in Economics and Finance", + "moduleCredit": 1, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMC5036", + "title": "Corporate finance", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "N.A.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "N.A.", + "corequisite": "N.A." + }, + { + "moduleCode": "BMC5037", + "title": "Financial management and markets", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "N.A.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "N.A.", + "corequisite": "N.A." + }, + { + "moduleCode": "BMC5038", + "title": "Managing organizations and change", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5001", + "title": "Leadership", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5002", + "title": "Corporate Strategy", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5003", + "title": "Business Analytics for Decision Makers", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5004", + "title": "Managerial Economics", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5006", + "title": "Strategic Marketing and Brand Management", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5007", + "title": "Accounting", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5008", + "title": "Power, Politics, and Influence", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5009", + "title": "Strategic Operations Management", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5010", + "title": "Management of Technology and Innovation", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5011", + "title": "Services Management", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5012", + "title": "Scenario Planning", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5014", + "title": "Legal Issues in Business", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5015", + "title": "Macroeconomics and International Finance", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5016", + "title": "Management Practicum", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "There are no prerequisites though individual instructors may choose to impose pre-requisites based on the skills needed to complete a specific project.", + "corequisite": "" + }, + { + "moduleCode": "BME5018", + "title": "Managing Business For Sustainability", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5019", + "title": "Corporate Finance", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5020", + "title": "Entrepreneurship", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5021", + "title": "Corporate Governance", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5022", + "title": "Business Strategy Simulation", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5033", + "title": "Leadership: Exploration, Assessment & Development", + "moduleCredit": 0, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5040", + "title": "Business Analytics and Decision Making", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 3 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5041", + "title": "Value Chains, Logistics and Operations", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5042", + "title": "Accounting and Information Management", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5043", + "title": "Financial Management and Markets", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 3 + ], + "preclusion": "BME5019", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5044", + "title": "Communications, Influence and Negotiations", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 3 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5045", + "title": "Leadership: Exploration, Assessment & Development", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 3 + ], + "preclusion": "BME5033 Leadership: Exploration, Assessment & Development", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5046", + "title": "Managing Organisations", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 3 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BME5045: Leadership: Exploration, Assessment and Development\n\nThe pre-requisite is applicable to all students except for late admittances. NUS Business School Graduate Studies Office Vice-Dean/Academic Director/Programme Office/instructor of this module has the discretion to waive this requirement on a case-by-case basis.", + "corequisite": "" + }, + { + "moduleCode": "BME5047", + "title": "Managing Change and Disruption", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5048", + "title": "Managing Human Capital", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5049", + "title": "Marketing Strategy", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5050", + "title": "Asia and the Global Economy", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5051", + "title": "Economic Analysis for Managers", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5052", + "title": "Governance and Sustainability Business", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5053", + "title": "International Business and Internationalisation", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5054", + "title": "Strategy", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5055", + "title": "Technology, Innovation and Entrepreneurship", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5056", + "title": "EMBA Special Topics 1", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5056A", + "title": "Special Topic 1A", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5056B", + "title": "Special Topic 1B", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5057", + "title": "EMBA Special Topics 2", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5057A", + "title": "Special Topic 2A", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BME5057B", + "title": "Special Topic 2B", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMF5321", + "title": "Financial Modelling", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMF5322", + "title": "Introduction to Finance", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMF5323", + "title": "Accounting for Finance Professionals", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMF5324", + "title": "Statistics and Analytics in Finance", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMF5331", + "title": "Applied Corporate Finance", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BMF5322 Introduction to Finance", + "corequisite": "" + }, + { + "moduleCode": "BMF5332", + "title": "Foundation of Investments", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BMF5322 Introduction to Finance", + "corequisite": "" + }, + { + "moduleCode": "BMF5333", + "title": "Options and Fixed Income", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BMF5322 Introduction to Finance", + "corequisite": "" + }, + { + "moduleCode": "BMF5334", + "title": "International Finance and Economics", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BMF5322 Introduction to Finance", + "corequisite": "" + }, + { + "moduleCode": "BMF5341A", + "title": "Advanced Investment Strategies", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BMF5332", + "corequisite": "" + }, + { + "moduleCode": "BMF5341B", + "title": "Applied Investment Strategies", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BMF5341A", + "corequisite": "" + }, + { + "moduleCode": "BMF5342", + "title": "Technological Disruptions in Finance and Data Analytics", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "- FIN4124\n- FIN4719", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BMF5322 Introduction to Finance", + "corequisite": "" + }, + { + "moduleCode": "BMF5343", + "title": "Banks and Non-Traditional Financial Intermediaries", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "BMA5329 for Banking and Financial Intermediation", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMF5344", + "title": "Financial Statement Analysis and Value Investing", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BMF 5322 Introduction to Finance\nBMF 5323 Accounting for Finance Professionals", + "corequisite": "" + }, + { + "moduleCode": "BMF5345", + "title": "Analytical Portfolio Management", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "FIN4112K", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BMF5332, BMF5333", + "corequisite": "" + }, + { + "moduleCode": "BMF5346", + "title": "Venture Capital and Private Equity", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "BMA5313\nBMA5313D\nBMS5113\nBMS5304", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMF5351", + "title": "Household Finance", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BMF5322\nBMF5332", + "corequisite": "" + }, + { + "moduleCode": "BMF5352", + "title": "Advanced Applied Portfolio Management", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "FIN4115 Advanced Portfolio Mgt\nFIN4713 Advanced Portfolio Mgt\nBMA5323 Applied Portfolio Management", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BMF5332 Foundation of Investments", + "corequisite": "" + }, + { + "moduleCode": "BMF5353", + "title": "Applied Investment Strategies", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "BMF5341B Applied Investment Strategies", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BMF5332 Foundation of Investments", + "corequisite": "" + }, + { + "moduleCode": "BMF5354", + "title": "Financial Regulation in a Digital Age", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "BMA5332 Financial Regulation in a Digital Age", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMF5355", + "title": "Financial Institutions, Markets, Systems and Technology", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "FIN3103/FIN3703\nBMS5307", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMF5356", + "title": "Applied Financial Risk Management", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "FIN3118 Financial Risk Management\nFIN3714 Financial Risk Management", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BMF 5332 Foundation of Investments\nBMF 5333 Fixed Income and Options", + "corequisite": "" + }, + { + "moduleCode": "BMF5391A", + "title": "Experiential Learning: Individual Internship", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMF5391B", + "title": "Experiential Learning: Applied Team Project", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMF5391C", + "title": "Experiential Learning: Applied Faculty Project", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMF5392", + "title": "Financial Sector in the Post-Pandemic Era", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "BMF5391A Individual Internship\nBMF5391B Applied Team Project\nBMF5391C Applied Faculty Project", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMK5002", + "title": "Marketing Analytics", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "MKT4415C Applied Market Research", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Any introductory course on Marketing", + "corequisite": "" + }, + { + "moduleCode": "BMK5100", + "title": "Marketing Analytics", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "MKT4420/MKT4812 Marketing Analytics\nBMA5524 Marketing Analytics\nBMS5512 Marketing Analytics", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMK5101", + "title": "Digital Marketing", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMK5102", + "title": "Big Data in Marketing", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMK5103", + "title": "Consumer Insights", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMK5104", + "title": "Market Analytics Visualisation and Communications", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMK5200", + "title": "Pricing Analytics", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMK5201", + "title": "Customer Relationship Management", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMK5202", + "title": "Python Programming for Business Analytics", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMK5203", + "title": "Research for Marketing Insights", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "MKT3427/MKT3722 Research for Marketing Insights", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMK5300A", + "title": "Experiential Learning: Industry Internship", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMK5300B", + "title": "Experiential Learning: Marketing Analytics Project", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMK5300C", + "title": "Experiential Learning: Applied Faculty Project", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMK6100", + "title": "Proseminar in Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMK6101", + "title": "Marketing Seminar: Perspectives in Consumer Behavior", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMK6102", + "title": "Marketing Seminar: Consumer Information Processing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMK6104", + "title": "Marketing Seminar: Marketing Theory & Research", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMK6105", + "title": "Independent Study: Subjective Expertise and Decision Making", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMK6105J", + "title": "ISM: Technology and implications on Judgement and Decision-Making", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMK6106", + "title": "Empirical Modeling in Marketing (I)", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMK6107", + "title": "Empirical Modelling in Marketing (II)", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMK6110", + "title": "Special Topics in Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMK6111", + "title": "Special Topics in Marketing", + "moduleCredit": 2, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMK6111O", + "title": "Marketing Strategy", + "moduleCredit": 2, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMK6111P", + "title": "Field Experiments and Behavioral Economics with Business Applications", + "moduleCredit": 2, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMK6111Q", + "title": "Judgment and Decision Making for Marketing Researchers", + "moduleCredit": 2, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMK6111R", + "title": "Behavioral Aspects of Pricing", + "moduleCredit": 2, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMM5001", + "title": "Leadership and Management", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMM5002", + "title": "Asia-Pacific Economic and Business Environment", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMM5003", + "title": "Business Finance & Growth Economics for Policy Makers", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMM5101", + "title": "Judgment and Decision-Making for Modern Policy Makers", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMM5103", + "title": "Capital Markets, Governance and Regulation", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMM5104", + "title": "Knowledge-based Economy and Intellectual Property Management", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMM5105", + "title": "Real Estate Fundamentals and City Planning", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMO5001", + "title": "Managing Across Cultures", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMO6006Y", + "title": "Independent Study: Special Topics in Workplace Secrecy", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMO6006Z", + "title": "Independent Study: Special Topics in Mindfulness", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMO6010A", + "title": "Organizational Behavior Seminar: Leadership", + "moduleCredit": 2, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMO6011A", + "title": "Organizational Behavior Seminar: Work, employee and organizational well-being", + "moduleCredit": 2, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMO6012A", + "title": "Organizational Behavior Seminar: Interpersonal Relations", + "moduleCredit": 2, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMO6013A", + "title": "Organizational Behavior Seminar: Motivation and Work Behavior", + "moduleCredit": 2, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMO6014A", + "title": "Organizational Behavior Seminar: Social Capital Theory & Methods", + "moduleCredit": 2, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMO6015A", + "title": "Organizational Behavior Seminar: Entrepreneurship and Innovation", + "moduleCredit": 2, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMO6016A", + "title": "Human Resource Management Seminar: Foundations", + "moduleCredit": 2, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMO6017A", + "title": "Human Resource Management Seminar: Challenges", + "moduleCredit": 2, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMO6018", + "title": "Visioning and Science Fiction in Strategic Management", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMO6018A", + "title": "Behavorial Ethics", + "moduleCredit": 2, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMO6019", + "title": "Qualitative Methods for Future Images of Organizations", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMO6019A", + "title": "Organizational Citizenship Behavior: An Emphasis on Theory Development", + "moduleCredit": 2, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Pre-requisite is standing as a PhD student in management and organisation.", + "corequisite": "" + }, + { + "moduleCode": "BMO6020A", + "title": "Independent Study: Use of AI in Training & Development", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "N.A.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "N.A.", + "corequisite": "N.A." + }, + { + "moduleCode": "BMS5101", + "title": "Independent Study in Strategy", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5103", + "title": "Entrepreneurial Strategy", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5104", + "title": "Current Trends in Growth Markets", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5105", + "title": "Big Data and Business Strategy", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + true, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5106", + "title": "Global Firm Strategy: Emphasis on Asia", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5107", + "title": "Ethical Leadership and Corporate Strategy", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + true, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5108", + "title": "Macroeconomics and Finance: Perspectives from Asia", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "None, but knowledge of intermediate macroeconomics is strongly recommended", + "corequisite": "" + }, + { + "moduleCode": "BMS5109", + "title": "Strategy: Bridging the Planning – Implementation Divide", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Strategic Management, Corporate Strategy or equivalent course.", + "corequisite": "" + }, + { + "moduleCode": "BMS5110", + "title": "Managerial Economics", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "BMA5001\nEC3312\nMKT3513\nMKT3812\nMA4264", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5111", + "title": "Legal Issues in Business", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "BMA5102", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5112", + "title": "Global Strategic Management", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "BBP5000\nBMS5118\nBMA5104", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5113", + "title": "Venture Capital", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "BMA5128, BMP5001", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5114", + "title": "Asian Business Environment", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "BSP2005, BMA5128, BMP5002", + "attributes": [ + false, + true, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5115", + "title": "Strategic Negotiations", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "- MNO3702/MNO3322\n- BMA5406", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5116", + "title": "People Strategy", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5117", + "title": "Game Theory For Managers", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "BMA5001\nEC3312\nMKT3513\nMKT3812\nMA4264", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5118", + "title": "Competing Globally", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "BMS5112 Global Strategic Management\nBMA5104 Global Strategic Management", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5119", + "title": "Asian Family Business", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5201", + "title": "Independent Study in Decision Science", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5202", + "title": "Global Supply Chain Management", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "DSC5211A Supply Chain Coordintaion and Risk Management", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5203", + "title": "The Knowledge & Innovation Economy 4.0", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + true, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5204", + "title": "Cross-Border Business Management in the Digital Age", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5205", + "title": "Business Analytics", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "BMA5002 Analytics for Managers", + "attributes": [ + false, + true, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5206", + "title": "Business Analytics with R", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5207", + "title": "Service Design", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "DOS4714 Service Design\nDSC4211G SIOSCM: Service Design", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5301", + "title": "Independent Study in Finance", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5302", + "title": "International Finance", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2004/FIN2004X Finance", + "corequisite": "" + }, + { + "moduleCode": "BMS5303", + "title": "Valuation and Mergers & Acquisitions", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "FIN4116 Valuation and Mergers & Acquisitions", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2004/ FIN2004X Finance or an equivalent course on Finance.", + "corequisite": "" + }, + { + "moduleCode": "BMS5304", + "title": "Selected Topics in Finance: Private Equity", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "BMA5313 Selected Topics in Finance: Private Equity", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Introduction to Financial Accounting:\n- Understanding and Analysis of Financial Statements (P&L, Balance Sheet, Cashflow, Financial Ratios)\n- Knowledge of Financial Concepts ( Time Value of Money, Free Cashflow, Cost of Capital)\n- Share Capitalisation", + "corequisite": "" + }, + { + "moduleCode": "BMS5305", + "title": "Entrepreneurial Finance", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BMA5314", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Basic Financial Management\nBasic Financial Accounting", + "corequisite": "" + }, + { + "moduleCode": "BMS5306", + "title": "International Financial Management", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "FIN3115, BMA5301, BMF5334", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Highly recommended that students have completed undergraduate‐level Calculus,\nIntroduction to Microeconomics and Introduction to Macroeconomics.", + "corequisite": "" + }, + { + "moduleCode": "BMS5307", + "title": "Financial Markets and Institutions", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "FIN3103, FIN3701", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must at least have a basic understanding of what\na balance sheet (i.e. statement of financial position) is, the\ntime value of money, basic stock pricing (dividend\ndiscounting), basic bond pricing (coupon discounting), and\nwhat a financial option is.", + "corequisite": "" + }, + { + "moduleCode": "BMS5308", + "title": "Personal Finance and Wealth Management", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "FIN4113 / FIN4713", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Understanding of time value of money, financial statements, risk and return, basic statistics and regression analysis", + "corequisite": "" + }, + { + "moduleCode": "BMS5309", + "title": "Investment Banking", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "FIN4112F, FIN4112H, BMA5318", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "A Corporate Finance/Finance/ Financial Markets/Investments and Portfolio Management course or comparable knowledge and skills. The contents covered during the course are not technical in nature. Exemptions from pre-requisites may be considered on a case-by-case basis.", + "corequisite": "" + }, + { + "moduleCode": "BMS5310", + "title": "Financial Management of Family Business", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "FIN4112L, BMF5001, BMA5327", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5311", + "title": "Corporate Finance", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "BMA5008 Financial Management\nECA5334 Corporate Finance\nFIN2004/X Finance\nFIN2704/X Finance\nFIN3101 Corporate Finance\nFIN3101A Corporate Finance\nFIN3101B Corporate Finance\nFIN3701A Corporate Finance", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5312", + "title": "Fintech Management", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "FIN4123 Fintech Management", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Business Analytics, Corporate Finance", + "corequisite": "" + }, + { + "moduleCode": "BMS5401", + "title": "Independent Study in Management", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5402", + "title": "Special Topics in Management", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5403", + "title": "Global Management Practice", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5404", + "title": "Becoming Future Prepared Global Leaders", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5405", + "title": "New Venture Creation Practicum: Lean Startup Method", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BMS5902", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5405S", + "title": "New Venture Creation", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BMS5405, TR3002, BSN3702", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5406", + "title": "Asian Leadership", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BMA5420 Leadership in Asia", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5407", + "title": "Workplace and Corporate Deviance", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "BMO5003", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO 1001: Management & Organization (preferably but not necessary)", + "corequisite": "" + }, + { + "moduleCode": "BMS5408", + "title": "Special Topics in Organizational Behavior", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BMO5004", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5409", + "title": "Principles of Multinational Management", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "BMS5403, MNO3334, MNO3716", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5410", + "title": "Negotiation and Conflict Management", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "BMS5115 Strategic Negotiations\nBMA5406 Negotiations and Conflict Management\nMNO3702 Negotiation and Conflict Management\nMNO3322 Negotiations and Bargaining", + "attributes": [ + false, + true, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5501", + "title": "Independent Study in Marketing", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5502", + "title": "Marketing Practice & Impact", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BMA5532 Big Picture Marketing", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "It is advisable that students signing up for this module have taken Marketing 101 as understanding of basic marketing concepts and theories are assumed with lecture and discussions build upon basic marketing knowledge. \n\nStudents who have had meaningful work or internship experience in a Sales or Marketing team of a consumer oriented business would have an advantage in understanding the concepts taught in this module. And students who aim to pursue a Marketing career will benefit\nmost from the opportunity to transform Marketing Practice into real career Impact.", + "corequisite": "" + }, + { + "moduleCode": "BMS5502A", + "title": "Marketing Practice & Impact", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BMA5532 Big Picture Marketing", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "It is advisable that students signing up for this module have taken Marketing 101 as understanding of basic marketing concepts and theories are assumed with lecture and discussions build upon basic marketing knowledge.", + "corequisite": "" + }, + { + "moduleCode": "BMS5503", + "title": "Pricing", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "MKT4413, MKT4811", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Prior exposure to Marketing, Econometrics and Data Analytics will be useful but not absolutely necessary.", + "corequisite": "" + }, + { + "moduleCode": "BMS5504", + "title": "Marketing Analysis and Decision Making", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "MKT3421 Marketing Analysis and Decision Making", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5505", + "title": "Marketing in the Digital Age", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "MKT3415, MKT3714, BMA5533", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5506", + "title": "Consumer Behaviour", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "MKT3402, MKT3402A, MKT3402B, MKT3402C, MKT3402D, MKT3702, MKT3702A, MKT3702B, MKT3702C, MKT3702D", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5507", + "title": "Behavioral Economics", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BMA5536\nBMK5003", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "A good knowledge of microeconomics and a good grasp of analytical and quantitative skills.", + "corequisite": "" + }, + { + "moduleCode": "BMS5508", + "title": "Design Thinking & Business Innovations", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "BMA5530, BMK5004", + "attributes": [ + false, + true, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5509", + "title": "Consumer Culture Theory", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "MKT3423, MKT4418, MKT4716, BMK5006", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Helpful to have taken a Consumer Behaviour class", + "corequisite": "" + }, + { + "moduleCode": "BMS5510", + "title": "Marketing Strategies in the New Economy", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 Principles of Marketing or comparable Basic Marketing module", + "corequisite": "" + }, + { + "moduleCode": "BMS5511", + "title": "Sustainability Marketing", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 Principles of Marketing or comparable Basic\nMarketing module", + "corequisite": "" + }, + { + "moduleCode": "BMS5512", + "title": "Marketing Analytics", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BMK5100, BMA5524", + "attributes": [ + false, + true, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5513", + "title": "Product Development & Brand Management", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "BMA5506 Product & Brand Management\nMKT3418 Product and Brand Management\nMKT3717 Product & Brand Management", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5514", + "title": "Marketing Strategies for a VUCA World", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "BMS5510 Marketing Strategies in the New Economy", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Prior knowledge of marketing concepts and tools (i.e., completion of an equivalent to an introductory marketing module)", + "corequisite": "" + }, + { + "moduleCode": "BMS5601", + "title": "Independent Study in Accounting", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5602", + "title": "Business Analysis and Valuation", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "FIN3113, ACC5001", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must have completed modules on introductory accounting and introductory finance.", + "corequisite": "" + }, + { + "moduleCode": "BMS5701", + "title": "Independent Study in Business", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5702", + "title": "Special Topics in Business", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5702A", + "title": "Asian Management and Leadership: Learning From Zheng He", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + true, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5702B", + "title": "Managing Business Networks", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5801", + "title": "Communication and Influencing Skills for Managers", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5900", + "title": "Block Seminar (with emphasis on Asian context)", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BMO5000", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5900A", + "title": "Sustainability Thinking in Product and Service Design", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "BMS5900", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5901", + "title": "Business Project", + "moduleCredit": 10, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "BMO5002", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMS5902", + "title": "Entrepreneurship Practicum", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "BMA5902, BMS5405", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMU5001", + "title": "Leadership & Managerial Skills", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMU5002", + "title": "Macroeconomics & International Finance", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMU5003", + "title": "Economic Analysis For Managers", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMU5004", + "title": "Macroeconomics and International Finance", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMU5006", + "title": "Marketing Strategy", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMU5007", + "title": "Corporate Finance", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMU5008", + "title": "Corporate Governance, Business Law & Ethics", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMU5013", + "title": "International Management Strategies", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMU5014", + "title": "Contemporary Issues in Business", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMU5015", + "title": "Competitive Strategy & Business Policy", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMU5017", + "title": "Management Practicum", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BMU5018", + "title": "Entrepreneurship and New Venture Creation", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BN1101", + "title": "Engineering Principles and Practice I", + "moduleCredit": 6, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BN1102", + "title": "Engineering Principles and Practice II", + "moduleCredit": 6, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BN1111", + "title": "Biomedical Engineering Principles and Practice I", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "BN1101", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BN2001", + "title": "Independent Study", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BN2102", + "title": "Bioengineering Data Analysis", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BN2103", + "title": "Bioengineering Design Workshop", + "moduleCredit": 2, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Stage 1 & 2 Bioengineering Students", + "corequisite": "" + }, + { + "moduleCode": "BN2111", + "title": "Biomedical Engineering Principles and Practice II", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "BN1102", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BN2201", + "title": "Quantitative Physiology for Bioengineers", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "DY103 Physiology, LSM3212 Human Physiology, PY1105 Physiology I, PY1106 Physiology II", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BIE Stage 2 standing", + "corequisite": "" + }, + { + "moduleCode": "BN2202", + "title": "Introduction to Biotransport", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BN2202S", + "title": "Introduction to Biotransport", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "BN2101S", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BIE Stage 2 standing and Engineering students doing Minor in Bioengineering", + "corequisite": "" + }, + { + "moduleCode": "BN2203", + "title": "Introduction to Bioengineering Design", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BIE Stage 2 standing", + "corequisite": "" + }, + { + "moduleCode": "BN2204", + "title": "Fundamentals of Biomechanics", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "EG1109/EG1109M Statics and Mechanics of Materials", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BN2301", + "title": "Biochemistry and Biomaterials for Bioengineers", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "LSM1401 Fundamentals of Biochemistry", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BN2401", + "title": "Biosignals Processing", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EE2023 Signals and Systems", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1506 Mathematics II", + "corequisite": "" + }, + { + "moduleCode": "BN2402", + "title": "Fundamentals of Bioinstrumentation", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EG1108 Electrical Engineering", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC1432 Physics IIE", + "corequisite": "" + }, + { + "moduleCode": "BN2403", + "title": "Fundamentals of Biosignals and Bioinstrumentation", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "EG1108 Electrical Engineering", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BN3101", + "title": "Biomedical Engineering Design", + "moduleCredit": 6, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BN3201", + "title": "Introduction To Biomechanics", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EG1109FC/EG1109/CE1109/CE1109X", + "corequisite": "" + }, + { + "moduleCode": "BN3202", + "title": "Musculoskeletal Biomechanics", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "BN3201 Introduction to Biomechanics", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BN2204 Fundamentals of Biomechanics", + "corequisite": "" + }, + { + "moduleCode": "BN3301", + "title": "Introduction To Biomaterials", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "[(CM1121 or CM1501) plus (LSM1101 or LSM1401 or MLE1101)] or MLE3104", + "corequisite": "" + }, + { + "moduleCode": "BN3401", + "title": "Biomedical Electronics & Systems", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "Students from the Dept of Electrical and Computer Engineering", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BN2402 Fundamentals of Bioinstrumentation", + "corequisite": "" + }, + { + "moduleCode": "BN3402", + "title": "Bio-Analytical Methods In Bioengineering", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CM1121 or CM1501) and (LSM1101 or LSM1401)", + "corequisite": "" + }, + { + "moduleCode": "BN3501", + "title": "Equilibrium and Kinetic Bioprocesses", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1506, PC1432, CN2122, ME2134 or BN2202", + "corequisite": "" + }, + { + "moduleCode": "BN4101", + "title": "B.Eng. Dissertation", + "moduleCredit": 8, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "Stage 4 standing", + "corequisite": "" + }, + { + "moduleCode": "BN4101R", + "title": "B.Eng. Dissertation", + "moduleCredit": 12, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "Stage 4 standing", + "corequisite": "" + }, + { + "moduleCode": "BN4102", + "title": "Gerontechnology in Ageing", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BN4103", + "title": "Assistive Technology for Persons with Disability", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BN4109", + "title": "Special Topic In Bioengineering", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Stage 4 standing", + "corequisite": "" + }, + { + "moduleCode": "BN4201", + "title": "Tissue Biomechanics", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BN2204 Fundamentals of Biomechanics", + "corequisite": "" + }, + { + "moduleCode": "BN4202", + "title": "Biofluids Dynamics", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Either CN2122 or ME2134 or BN2202", + "corequisite": "" + }, + { + "moduleCode": "BN4203", + "title": "Robotics in Rehabilitation", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BN4301", + "title": "Principles Of Tissue Engineering", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BN3301", + "corequisite": "" + }, + { + "moduleCode": "BN4402", + "title": "Electrophysiology", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BN4403", + "title": "Cellular Bioengineering", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2103", + "corequisite": "" + }, + { + "moduleCode": "BN4404", + "title": "Bioelectromechanical Systems - Biomems", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Stage 3 & 4 Engineering students", + "corequisite": "" + }, + { + "moduleCode": "BN4406", + "title": "Biophotonics And Bioimaging", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BN2401", + "corequisite": "" + }, + { + "moduleCode": "BN4501", + "title": "Engineering Biology", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1505 Mathematics I, MA1506 Mathematics II, LSM1401 Fundamentals of Biochemistry", + "corequisite": "" + }, + { + "moduleCode": "BN4601", + "title": "Intelligent Medical Robotics", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BN5101", + "title": "Biomedical Engineering Systems", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BN5102", + "title": "Clinical Instrumentation", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BN5104", + "title": "Quantitative Physiology Principles in Bioengineering", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BN5201", + "title": "Advanced Biomaterials", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Basic materials science and engineering.", + "corequisite": "" + }, + { + "moduleCode": "BN5202", + "title": "Advanced Tissue Biomechanics", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BN5203", + "title": "Advanced Tissue Engineering", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BN5205", + "title": "Computational Biomechanics", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BN5207", + "title": "Medical Imaging Systems", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "MDG5225 Fundamentals of Molecular Imaging", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BN5208", + "title": "Biomedical Quality and Regulatory Systems", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "Graduate level Physics or BN5401 or consent of instructor", + "corequisite": "" + }, + { + "moduleCode": "BN5209", + "title": "Neurosensors and Signal Processing", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BN5210", + "title": "Biosensors and Biochips", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BN5501", + "title": "The Singapore-Stanford Biodesign Process", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Graduate students enrolled in Engineering and Business\nfaculties", + "corequisite": "" + }, + { + "moduleCode": "BN5511", + "title": "Introduction to Global Medical Device Regulation", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BN5512", + "title": "Medical Device Regulation in the US and EU", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BN5513", + "title": "Medical Device Regulation in ASEAN and AsiaPacific", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BN5514", + "title": "Medical Device Regulatory Process Strategy and Planning", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BN5515", + "title": "Clinical Design and Evaluation of Medical Devices", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BN5516", + "title": "Medical Device Design, Development and Testing", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BN5517", + "title": "Pre-Market Requirements and Post Market Surveillance", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BN5518", + "title": "Next-Generation Device Regulations", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BN5666", + "title": "Industrial Attachment", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BN5999", + "title": "Graduate Seminars", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BN6202", + "title": "Advanced Human Motion Biomechanics", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Graduate student standing", + "corequisite": "" + }, + { + "moduleCode": "BN6209", + "title": "Neurotechnology", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Graduate student standing", + "corequisite": "" + }, + { + "moduleCode": "BN6401", + "title": "Advanced Quantitative Fluorescence Microscopy", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Graduate student standing", + "corequisite": "" + }, + { + "moduleCode": "BN6402", + "title": "Advanced Electrophysiology", + "moduleCredit": 4, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Graduate student standing", + "corequisite": "" + }, + { + "moduleCode": "BN6999", + "title": "Doctoral Seminars", + "moduleCredit": 8, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BPM1701", + "title": "Calculus and Statistics", + "moduleCredit": 0, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BPM1702", + "title": "Microsoft Excel and PowerPoint for Business", + "moduleCredit": 0, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BPM1705", + "title": "Understanding How Business Works", + "moduleCredit": 0, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BPS5000", + "title": "Dissertation", + "moduleCredit": 8, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BPS5111", + "title": "Integrated Building Design", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "Students who have taken BPS5101 not able to take BPS5111", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BPS5112", + "title": "Green Building Integration and Evaluation Studio", + "moduleCredit": 8, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BPS5221", + "title": "Microclimate Design", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "Students who have taken BPS5102 not able to take BPS5221", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BPS5222", + "title": "Indoor Environmental Quality", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "Students who have taken BPS5201 or BPS5202 not able to take BPS5222", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BPS5223", + "title": "Building Energy Performance - Passive Systems", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "Students who have taken BPS5204 not able to take BPS5223", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BPS5224", + "title": "Building Energy Performance - Active Systems", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "Students who have taken BPS5204 not able to take BPS5224", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BPS5225", + "title": "Building Energy Audit and Performance Measurement and Verification", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BPS5226", + "title": "Smart Buildings and Facilities", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BPS5227", + "title": "Maintainability and Green Facilities Management", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "Students who have taken BPS5205 not able to take BPS5227", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BPS5228", + "title": "Advanced Building Materials and Structures", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BPS5229", + "title": "Data Science for the Built Environment", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BPS5300", + "title": "Topics in Building Performance and Sustainability", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BRP6551", + "title": "Graduate Research Seminar 1", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BRP6552", + "title": "Graduate Research Seminar 2", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BS5770", + "title": "Graduate Seminar", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BS6000", + "title": "Dissertation", + "moduleCredit": 8, + "department": "Building", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BS6001", + "title": "Advanced Indoor Air Quality", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BS6770", + "title": "Phd Seminar", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BSE3701", + "title": "Macroeconomic Principles in the Global Economy", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "EC2102; BSP2001.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(BSP1703 or BSP1707 or EC1301) and BSP2701.", + "corequisite": "" + }, + { + "moduleCode": "BSE3702", + "title": "Economics of Strategy", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BSP1703 or BSP1707 or EC1101E or EC1301 or EC2101.", + "corequisite": "" + }, + { + "moduleCode": "BSE3703", + "title": "Econometrics for Business I", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "RE3801 ; EC2303; EC3303.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BSP1703 or BSP1707 or EC1101E or EC1301.", + "corequisite": "" + }, + { + "moduleCode": "BSE3711", + "title": "Strategic Thinking: Economic Applications", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "EC3312", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BSP1005 Managerial Economics or BSP1707 Managerial Economics", + "corequisite": "" + }, + { + "moduleCode": "BSE3751", + "title": "Independent Study in Business Economics", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Varies according to the subject matter covered.", + "corequisite": "" + }, + { + "moduleCode": "BSE4711", + "title": "Econometrics for Business II", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "EC2303; EC3303; EC3304; EC4305; BSP4513.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BSP1703 or BSP1707 or EC1101E or EC1301 or IS3240.", + "corequisite": "" + }, + { + "moduleCode": "BSE4712", + "title": "Economics of Organization", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BSP1703 or BSP1707 or EC2101", + "corequisite": "" + }, + { + "moduleCode": "BSE4751", + "title": "Advanced Independent Study in Business Economics", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Varies according to the subject matter covered.", + "corequisite": "" + }, + { + "moduleCode": "BSM3001", + "title": "Social Business Mission", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BSN3701", + "title": "Technological Innovation", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "IS3251", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BSN3701A", + "title": "Technological Innovation", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "IS3251", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BSN3701B", + "title": "Technological Innovation", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "IS3251", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BSN3702", + "title": "New Venture Creation", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BSN3702X", + "title": "New Venture Creation", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BSN3703", + "title": "Entrepreneurial Strategy", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BSN3711", + "title": "The Entrepreneurial Ecosystem in Singapore & SE Asia", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BSP3515", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BSN3712", + "title": "Innovation and Intellectual Property", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BSN3713", + "title": "Entrepreneurial Boot Camp", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BSN3714", + "title": "Co-Creating Value (Tools for Collaborative Innovation)", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(1) BSP1703 Managerial Economics or BSP1707 Managerial Economics: Exposure\n(2) BSP2701 Global Economy\n(3) MNO1706 Organisational Behaviour", + "corequisite": "" + }, + { + "moduleCode": "BSN3715", + "title": "Digital Strategy", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(1)BSP1703 Managerial Economics or BSP1707 Managerial Economics: Exposure\n(2)BSP2701 Global Economy", + "corequisite": "" + }, + { + "moduleCode": "BSN3716", + "title": "360-Degree Business Innovation Strategy", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BSN3751", + "title": "Independent Study in Innovation & Entrepreneurship", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "Depend on the subject matter.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Depend on the subject matter.", + "corequisite": "Depend on the subject matter." + }, + { + "moduleCode": "BSN3811", + "title": "People Strategy", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BSN4711", + "title": "Product Validation", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(1) BSP1702 Legal Environment of Business\n(2) BSP1703 Managerial Economics; or BSP1707 Managerial Economics: Exposure\n(3) BSP2701 Global Economy", + "corequisite": "" + }, + { + "moduleCode": "BSN4751", + "title": "Adv Independent Study in Innovation & Entrepreneurship", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "Depend on the subject matter.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Depend on the subject matter.", + "corequisite": "Depend on the subject matter." + }, + { + "moduleCode": "BSN4811", + "title": "Innovation and Productivity", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "BSS4003A", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(BSP1703 or BSP1707 or EC1101E or EC1301) and (DAO2702 or EC2303).", + "corequisite": "" + }, + { + "moduleCode": "BSN4811A", + "title": "Innovation and Productivity (with Econometrics)", + "moduleCredit": 5, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "BSN4811 Innovation and Productivity\n(BSS4003A Innovation and Productivity – for student\nintake cohorts in AY2016/17 or earlier)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC3303 Econometrics I; or\nBSE3703 Econometrics for Business I; or\nBSP4513 Econometrics: Theory and Practical Business Applications; or\nST3131 Regression Analysis;\n(or equivalent to any of the above prerequisite modules).", + "corequisite": "" + }, + { + "moduleCode": "BSP1004", + "title": "Legal Environment Of Business", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "SSB2212 or BH1004 or BZ1004 or BK1006 or GEK1009 or GEM1009k or SSD1203 or BSP1004A or BSP1004B", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BSP1004A", + "title": "Legal Environment of Business", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "SSB2212, BH1004 or BZ1004 or BK1006 or GEK1009 or GEM1009k, SSD1203", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BSP1004B", + "title": "Legal Environment of Business", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "SSD1203", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BSP1004X", + "title": "Legal Environment Of Business", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "SSB2212 or BH1004 or BZ1004 or BK1006 or GEK1009 or GEM1009k or SSD1203 or BSP1004A or BSP1004B", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BSP1005", + "title": "Managerial Economics", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "BH1005 or BZ1006 or BK1008 or All Econs major students.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BSP1005A", + "title": "Managerial Economics", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "Economics Major or\nBH1005 or BZ1006 or BK1008 or EC1101 or EC1101E or EC1310 or EC1301 or EC2101 or EC3101 or BSP1005/BSP1005B", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BSP1005B", + "title": "Managerial Economics", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "Economics Major or\nBH1005 or BZ1006 or BK1008 or EC1101 or EC1101E or EC1310 or EC1301 or EC2101 or EC3101 or BSP1005/BSP1005A", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BSP1005X", + "title": "Managerial Economics", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "BH1005 or BZ1006 or BK1008 or All Econs major students.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BSP1702", + "title": "Legal Environment of Business", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "BSP1004; BSP1004X; RE1703", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BSP1702X", + "title": "Legal Environment of Business", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "BSP1004; BSP1004X; RE1703", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BSP1703", + "title": "Managerial Economics", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "BSP1005; EC2101; EC1101E; EC1301; All Econs Major Students", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BSP1703X", + "title": "Managerial Economics", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "BSP1005; EC2101; EC1101E; EC1301; All Econs Major Students", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BSP1707", + "title": "Managerial Economics: Exposure", + "moduleCredit": 2, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "BSP1005, BSP1703", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BSP1707A", + "title": "Managerial Economics: Exposure", + "moduleCredit": 2, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BSP1005", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BSP1707B", + "title": "Managerial Economics: Exposure", + "moduleCredit": 2, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BSP1005", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BSP2001", + "title": "Macro And International Economics", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "(BH2001 or BZ2001 or EC1101 or EC1101E or EC1310 or EC1301 or EC3341 or EC4102 or All Econs major students) and All BBA(Acc) students. EC2102.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BSP1005 or BH1005 or BZ1006 or BK1008", + "corequisite": "" + }, + { + "moduleCode": "BSP2005", + "title": "Asian Business Environments", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "BH2005 or BZ2005", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BSP2001", + "corequisite": "" + }, + { + "moduleCode": "BSP2009", + "title": "Entrepreneurship", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BSP2011", + "title": "Asian Business Environments", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "BSP2005", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(BSP1703 or BSP1707 or EC1101E or EC1301) and BSP2701.", + "corequisite": "" + }, + { + "moduleCode": "BSP2701", + "title": "Global Economy", + "moduleCredit": 2, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BSP1703 or BSP1707 or EC1101E or EC1301.", + "corequisite": "" + }, + { + "moduleCode": "BSP3001", + "title": "Strategic Management", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BSP3001A or BSP3001B or BSP3001C or BSP3001D or BSP3001E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All foundation modules", + "corequisite": "" + }, + { + "moduleCode": "BSP3001A", + "title": "Strategic Management", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "BSP3001 or BSP3001B or BSP3001C or BSP3001D or BSP3001E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All foundation modules", + "corequisite": "" + }, + { + "moduleCode": "BSP3001B", + "title": "Strategic Management", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "BSP3001 or BSP3001A or BSP3001C or BSP3001D or BSP3001E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All foundation modules", + "corequisite": "" + }, + { + "moduleCode": "BSP3001C", + "title": "Strategic Management", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "BSP3001 or BSP3001A or BSP3001B or BSP3001D or BSP3001E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All level 1000 and 2000 foundation modules", + "corequisite": "" + }, + { + "moduleCode": "BSP3001D", + "title": "Strategic Management", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BSP3011", + "title": "Family Business", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BSP3513", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BSP3012", + "title": "Singapore and ASEAN: Geoeconomics and Geopolitics for Business", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BSP3516", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(BSP1703 or BSP1707 or EC1101E or EC1301) and BSP2701.", + "corequisite": "" + }, + { + "moduleCode": "BSP3511", + "title": "Corporate Law and Finance", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BSP3513", + "title": "Family Business", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BSP3514A", + "title": "TISA: Business Case Analysis", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BSP3001", + "corequisite": "" + }, + { + "moduleCode": "BSP3515", + "title": "The Entrepreneurial Ecosystem in Singapore and SE Asia", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BSP3516", + "title": "S'pore & ASEAN: Geoeconomics & Geopolitics of Business", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BSP1005 Managerial Economics; and\nBSP2001 Macro and International Economics", + "corequisite": "" + }, + { + "moduleCode": "BSP3701", + "title": "Strategic Management", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BSP3001", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All BBA core level 1000 & 2000 modules.", + "corequisite": "" + }, + { + "moduleCode": "BSP3701A", + "title": "Strategic Management", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "BSP3001", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All BBA core level 1000 & 2000 modules.", + "corequisite": "" + }, + { + "moduleCode": "BSP3701B", + "title": "Strategic Management", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "BSP3001", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All BBA core level 1000 & 2000 modules.", + "corequisite": "" + }, + { + "moduleCode": "BSP3701C", + "title": "Strategic Management", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "BSP3001", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All BBA core level 1000 & 2000 modules.", + "corequisite": "" + }, + { + "moduleCode": "BSP3701D", + "title": "Strategic Management", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BSP3001", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All BBA core level 1000 & 2000 modules.", + "corequisite": "" + }, + { + "moduleCode": "BSP3701X", + "title": "Strategic Management", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BSP3001", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All BBA core level 1000 & 2000 modules.", + "corequisite": "" + }, + { + "moduleCode": "BSP4011", + "title": "Global Strategic Management", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BSP4512", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(BSP1703 or BSP1707 or EC1101E or EC1301) and BSP2701.", + "corequisite": "" + }, + { + "moduleCode": "BSP4012", + "title": "Managing Social Networks in Markets & Organisations", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BSP4515", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1706", + "corequisite": "" + }, + { + "moduleCode": "BSP4511", + "title": "Industry And Competitive Analysis", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BSP3001", + "corequisite": "" + }, + { + "moduleCode": "BSP4512", + "title": "Global Strategic Management", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH4512 or BZ4812A or BK4009.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BSP2001", + "corequisite": "" + }, + { + "moduleCode": "BSP4513", + "title": "Econometrics: Theory and Practical Business Applications", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "EC2303 Foundations for Econometrics\nEC3303 Econometrics I\nEC3304 Econometrics II\nEC4305 Appled Econometrics", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BSP1005 Managerial Economics; or\nIS3240 Economics of e-Business", + "corequisite": "" + }, + { + "moduleCode": "BSP4515", + "title": "Managing Social Networks in Markets and Organizations", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001 Management and Organization", + "corequisite": "" + }, + { + "moduleCode": "BSS4003", + "title": "Special Seminars in Business (SSIB)", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "This will vary according to specific topics.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This will vary according to specific topics.", + "corequisite": "This will vary according to specific topics." + }, + { + "moduleCode": "BSS4003A", + "title": "SSIB: Innovation and Productivity", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(1) Either BSP1005 or EC1301\n\nAND\n\n(2) Either DSC2008 or EC2303", + "corequisite": "" + }, + { + "moduleCode": "BSS4003B", + "title": "Innovation and Productivity (with Econometrics)", + "moduleCredit": 5, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "BSN4811 Innovation and Productivity\n(BSS4003A Innovation and Productivity – for student\nintake cohorts in AY2016/17 or earlier)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC3303 Econometrics I; or\nBSE3703 Econometrics for Business I; or\nBSP4513 Econometrics: Theory and Practical Business Applications; or\nST3131 Regression Analysis;\n(or equivalent to any of the above prerequisite modules).", + "corequisite": "" + }, + { + "moduleCode": "BSS4761", + "title": "Special Seminars in Business", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Varies according to the subject matter covered.", + "corequisite": "" + }, + { + "moduleCode": "BST3002", + "title": "Special Topics in Business (SPIB)", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BST3002A", + "title": "SPIB: Economic Crisis 2008", + "moduleCredit": 1, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BST3002B", + "title": "Business Consulting Practicum", + "moduleCredit": 2, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN3102", + "corequisite": "" + }, + { + "moduleCode": "BST3002C", + "title": "Consulting Skills for Transformational Leaders", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BST3002D", + "title": "Sustainability Strategy", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BST3761", + "title": "Special Topics in Business", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Varies according to the subject matter covered.", + "corequisite": "" + }, + { + "moduleCode": "BT1101", + "title": "Introduction to Business Analytics", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "DSC1007 or DSC1007X", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BT2010", + "title": "Business Analytics Immersion Programme", + "moduleCredit": 6, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed at least 40 MCs.", + "corequisite": "" + }, + { + "moduleCode": "BT2101", + "title": "Decision Making Methods and Tools", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS1010 Programming Methodology or its equivalent) and (MA1521 Calculus for Computing or MA1102R Calculus) and (BT1101 Introduction to Business Analytics)", + "corequisite": "" + }, + { + "moduleCode": "BT2102", + "title": "Data Management and Visualisation", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS1010 Programming Methodology or its equivalent, and\nBT1101 Introduction to Business Analytics", + "corequisite": "" + }, + { + "moduleCode": "BT3101", + "title": "Business Analytics Capstone Project", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BT2101 and BT2102 and IS2101", + "corequisite": "" + }, + { + "moduleCode": "BT3102", + "title": "Computational Methods for Business Analytics", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BT2101 and ((CS1020 or its equivalent) or CS2020 or (CS2030 or its equivalent) or CS2103/T or CS2113/T)", + "corequisite": "" + }, + { + "moduleCode": "BT3103", + "title": "Application Systems Development for Business Analytics", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BT2102 Data Management and Visualisation", + "corequisite": "" + }, + { + "moduleCode": "BT4010", + "title": "Business Analytics Internship Programme", + "moduleCredit": 12, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BT2010", + "corequisite": "" + }, + { + "moduleCode": "BT4011", + "title": "Business Analytics Capstone Industry Project", + "moduleCredit": 14, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "BT3101", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BT4010", + "corequisite": "" + }, + { + "moduleCode": "BT4012", + "title": "Fraud Analytics", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BT3102", + "corequisite": "" + }, + { + "moduleCode": "BT4013", + "title": "Analytics for Capital Market Trading and Investment", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BT3102", + "corequisite": "" + }, + { + "moduleCode": "BT4014", + "title": "Analytics Driven Design of Adaptive Systems", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BT2102", + "corequisite": "" + }, + { + "moduleCode": "BT4015", + "title": "Geospatial Analytics", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(ST2131 or ST2334), BT2101 and BT2102 and (CS2010 or CS2040 or their equivalents)", + "corequisite": "" + }, + { + "moduleCode": "BT4016", + "title": "Risk Analytics for Financial Services", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BT2101 and BT2102", + "corequisite": "" + }, + { + "moduleCode": "BT4101", + "title": "B.Sc. (Business Analytics) Dissertation", + "moduleCredit": 12, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "Attained at least 70% of the MC requirement for degree", + "corequisite": "" + }, + { + "moduleCode": "BT4103", + "title": "Business Analytics Capstone Project", + "moduleCredit": 8, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "BT3101", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BT3102 and BT3103 and IS2101", + "corequisite": "" + }, + { + "moduleCode": "BT4211", + "title": "Data-Driven Marketing", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1705X and [(BT2101 and BT2102) or (DBA3803 and IT3010)]", + "corequisite": "" + }, + { + "moduleCode": "BT4212", + "title": "Search Engine Optimization and Analytics", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "[(CS1010 or equivalent) and BT2101] or [DAO2702 and DBA3803]", + "corequisite": "" + }, + { + "moduleCode": "BT4221", + "title": "Big Data Techniques and Technologies", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "CS4225 and CS5425", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "[(CS1010 or equivalent) and BT2101 and BT2102] or [DAO2702 and DBA3803 and IT3010]", + "corequisite": "" + }, + { + "moduleCode": "BT4222", + "title": "Mining Web Data for Business Insights", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "[(CS1010 or equivalent) and BT2101 and BT2102] or [DAO2702 and DBA3803 and IT3010]", + "corequisite": "" + }, + { + "moduleCode": "BT4240", + "title": "Machine Learning for Predictive Data Analytics", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "IS4240, IT3011, and CS3244", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "[MA1311 Matrix Algebra and Applications or MA1101R\nLinear Algebra I] and [MA1521 Calculus for Computing or\nMA1102R Calculus] and [BT2101 Decision Making\nMethods and Tools]", + "corequisite": "" + }, + { + "moduleCode": "BT5110", + "title": "Data Management and Warehousing", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must be in Master of Science in Business Analytics programme.", + "corequisite": "" + }, + { + "moduleCode": "BT5126", + "title": "Hands-on with Business Analytics", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "IS5126 Hands-on with Applied Analytics", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DSC5103 Statistics", + "corequisite": "" + }, + { + "moduleCode": "BT5151", + "title": "Advanced Analytics and Machine Learning", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "BT4222 Mining Web Data for Business Insights,\nST5202 Applied Regression Analysis,\nST5318 Statistical Methods for Health Science,\nBT5152 Decision Making Technology for Business,\nIS5152 Data-Driven Decision Making", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DSC5106 Foundation in Data Analytics I\nDSC5106 Foundations of Business Analytics\nDSC5103 Statistics", + "corequisite": "" + }, + { + "moduleCode": "BT5152", + "title": "Decision Making Technology for Business", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [], + "preclusion": "IS5152", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DSC5103 or an equivalent module with R programming experience", + "corequisite": "" + }, + { + "moduleCode": "BT5152E", + "title": "Decision Making Technology for Business and Economics", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [], + "preclusion": "BT5152E and ECA5304", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BT5153", + "title": "Applied Machine Learning for Business Analytics", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "BT4222, CS5246", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DSC5106 Foundation in Data Analytics I OR DSC5103 Statistics", + "corequisite": "" + }, + { + "moduleCode": "BT5154", + "title": "Foundation in Business Analytics", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [], + "preclusion": "BT4222 Mining Web Data for Business Insights,\nST5202 Applied Regression Analysis,\nST5318 Statistical Methods for Health Science\nDCS5106 Foundation in Data Analytics I\nDBA5106 Introduction to Business Analytics", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BT5155", + "title": "Operations Research and Analytics", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BDC5101", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BV2000", + "title": "Behavioural Science", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BV3000", + "title": "Behavioural Science", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BV4000", + "title": "Behavioural Science", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BX5101", + "title": "Business and the Environment", + "moduleCredit": 4, + "department": "SDE Dean's Office", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BZD6000", + "title": "Applied Economics", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BZD6001", + "title": "Model Building Workshop I: Static Models", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Applied Economics or ECA 5001 or BMA 5001 or EC6101", + "corequisite": "" + }, + { + "moduleCode": "BZD6003", + "title": "Applied Econometrics I", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BZD6004", + "title": "Applied Econometrics II", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BZD6003 Applied Econometrics I", + "corequisite": "" + }, + { + "moduleCode": "BZD6005", + "title": "Applied Econometrics III", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BZD6004 Applied Econometrics II", + "corequisite": "" + }, + { + "moduleCode": "BZD6006", + "title": "Organization Theory", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BZD6008", + "title": "Cognition and Affect", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BZD6009", + "title": "Motivation and Interpersonal Processes", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BZD6010", + "title": "Seminar in Research Methodology", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BZD6011", + "title": "Advanced Quantitative Research Methods", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BZD6012", + "title": "Experimental Methods for Behavioral Research", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BZD6013", + "title": "Psychological Theories in Consumer Research", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "BZD6014", + "title": "Strategy and Policy Pre-Seminar", + "moduleCredit": 1, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CAS5101", + "title": "Theorizing from Asia", + "moduleCredit": 5, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CAS5660", + "title": "Independent Study", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CAS5880", + "title": "Topics in Comparative Asian Studies I", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CAS5880A", + "title": "Intersections and Comparison: Asia Observed", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CAS5881", + "title": "Silk Routes in Asia: Where the Global Meets the Local", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CAS6101", + "title": "Asian Studies in Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CAS6102", + "title": "Pan-Asianism and East Asian Integration", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CAS6770", + "title": "Graduate Research Seminar", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CAS6880", + "title": "Topics in Comparative Asian Studies II", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CD4000", + "title": "Clinical Dentistry", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CDM5101", + "title": "Fundamentals of Cancer Biology", + "moduleCredit": 4, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CDM5102", + "title": "Translational Cancer Research", + "moduleCredit": 4, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CDM5101 Fundamentals of Cancer Biology", + "corequisite": "" + }, + { + "moduleCode": "CDM5103", + "title": "Advanced Topics in RNA Biology and Human Diseases", + "moduleCredit": 4, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CDM5104", + "title": "Introduction to Bioinformatics for Metagenomics", + "moduleCredit": 2, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE1101", + "title": "Civil Engineering Principles and Practice", + "moduleCredit": 6, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE1101A", + "title": "Civil Engineering Principles and Practice", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "CE1101", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE1102", + "title": "Principles & Practice in Infrastructure and Environment", + "moduleCredit": 6, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE1109", + "title": "Statics And Mechanics Of Materials", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EG1109FC, EG1109, EG1109M, CE1109FC, CE1109X, TCE1109", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "'A Level Math / H2 Math or equivalent", + "corequisite": "" + }, + { + "moduleCode": "CE1109X", + "title": "Statics and Mechanics of Materials", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EG1109, EG1109FC, EG1109M, CE1109, CE1109FC", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "A Level Math / H2 Math or equivalent", + "corequisite": "" + }, + { + "moduleCode": "CE2102", + "title": "Principles & Practice in Infrastructure and Environment", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "CE1102", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE2112", + "title": "Soil Mechanics", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "TCE2112", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EG1109", + "corequisite": "" + }, + { + "moduleCode": "CE2134", + "title": "Hydraulics", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "ME2134 Fluid Mechanics I\nTCE2134", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EG1109FC/EG1109/CE1109X", + "corequisite": "" + }, + { + "moduleCode": "CE2155", + "title": "Structural Mechanics and Materials", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "TCE2155", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EG1109FC/EG1109", + "corequisite": "" + }, + { + "moduleCode": "CE2183", + "title": "Construction Project Management", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "TCE2183", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE2184", + "title": "Infrastructure & The Environment", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "TCE2184", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE2407", + "title": "Engineering & Uncertainty Analyses", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "TCE2407", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1505and MA1506", + "corequisite": "" + }, + { + "moduleCode": "CE2409", + "title": "Computer Applications in Civil Engineering", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "CE2408 Computer Aided Engineering", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE3101", + "title": "Integrated Infrastructure Project", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CE2 standing or higher", + "corequisite": "" + }, + { + "moduleCode": "CE3102", + "title": "Socio-economically sustainable developments", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE3115", + "title": "Geotechnical Engineering", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "TCE3115", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CE2112", + "corequisite": "" + }, + { + "moduleCode": "CE3116", + "title": "Foundation Engineering", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "TCE3116", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CE2112", + "corequisite": "" + }, + { + "moduleCode": "CE3121", + "title": "Transportation Engineering", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "TCE3121", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CE2407 Engineering & Uncertainty Analyses or equivalent", + "corequisite": "" + }, + { + "moduleCode": "CE3132", + "title": "Water Resources Engineering", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "TCE3132", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CE2134", + "corequisite": "" + }, + { + "moduleCode": "CE3141", + "title": "Water & Wastewater Engineering", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CE2144", + "corequisite": "" + }, + { + "moduleCode": "CE3155", + "title": "Structural Analysis", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "TCE3155", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CE2155", + "corequisite": "" + }, + { + "moduleCode": "CE3165", + "title": "Structural Concrete Design", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "TCE3165", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CE3155 Structural Analysis", + "corequisite": "" + }, + { + "moduleCode": "CE3166", + "title": "Structural Steel Design and System", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "TCE3166", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CE2155 Structural Mechanics and Materials &\nCE3155 Structural Analysis", + "corequisite": "" + }, + { + "moduleCode": "CE3201", + "title": "Civil Engineering Analytics and Data Visualization", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE3202", + "title": "Data Acquisition for Civil Engineering Applications", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE3203", + "title": "Optimization Methods for Civil Engineers", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE3204", + "title": "Data Management for Civil Engineers", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE3941", + "title": "Exchange Breadth Elective", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE3961", + "title": "Exchange Unrestricted Elective", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE3962", + "title": "Exchange Unrestricted Elective", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE3963", + "title": "Exchange Unrestricted Elective", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE3981", + "title": "Exchange Technical Elective", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE3982", + "title": "Exchange Technical Elective", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE4103", + "title": "Design Project", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "TCE4103", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CE4 standing [Successful completion of relevant CE 2 and CE 3 modules which will be specified in the each project]", + "corequisite": "" + }, + { + "moduleCode": "CE4104", + "title": "B. Eng. Dissertation", + "moduleCredit": 8, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "TCE4104", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "CE4 Standing", + "corequisite": "" + }, + { + "moduleCode": "CE4106", + "title": "B.Eng Dissertation", + "moduleCredit": 9, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "CE4 standing", + "corequisite": "" + }, + { + "moduleCode": "CE4221", + "title": "Design of Land Transport Infrastructures", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "TCE4221", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CE3121 Transportation Engineering", + "corequisite": "" + }, + { + "moduleCode": "CE4231", + "title": "Earth's Climate: Science & Modelling", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1505 and MA1506, or equivalents", + "corequisite": "" + }, + { + "moduleCode": "CE4240", + "title": "Advanced Waste Water Treatment", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE4247", + "title": "Treatment Plant Hydraulics", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "TCE4247", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CE2134 Hydraulics or equivalent, with minimum a B grade", + "corequisite": "" + }, + { + "moduleCode": "CE4257", + "title": "Linear Finite Element Analysis", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "TCE4257", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CE3155", + "corequisite": "" + }, + { + "moduleCode": "CE4257A", + "title": "Finite Element Concepts & Applications", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE4257B", + "title": "Finite Element Analysis for Civil Engineering", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "CE4257A Finite Element Concepts & Applications", + "corequisite": "" + }, + { + "moduleCode": "CE4258", + "title": "Structural Stability & Dynamics", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "TCE4258", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CE2407 Engineering & Uncertainty Analyses, and CE3155 Structural Analysis", + "corequisite": "" + }, + { + "moduleCode": "CE4282", + "title": "Building Information Modeling for Project Management", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "TCE4282", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE4283A", + "title": "BIM Technologies", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE4283B", + "title": "Virtual Design and Construction: Moving Beyond BIM", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CE4283A BIM Technologies", + "corequisite": "" + }, + { + "moduleCode": "CE4981", + "title": "Exchange Technical Elective", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE4982", + "title": "Exchange Technical Elective", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE5001", + "title": "Research Project", + "moduleCredit": 8, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE5101", + "title": "Seepage & Consolidation of Soils", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE4 standing or higher", + "corequisite": "" + }, + { + "moduleCode": "CE5103", + "title": "Tunnelling and Rock Mechanics", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE5104", + "title": "Underground Space", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE2112, or CE4 standing or higher", + "corequisite": "" + }, + { + "moduleCode": "CE5104A", + "title": "Tunnelling in Soils", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "Background in Soil Mechanics or equivalent", + "corequisite": "" + }, + { + "moduleCode": "CE5104B", + "title": "Tunnelling in Rocks", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "Background in geotechnical engineering or equivalent.\nBackground in rock mechanics is useful but not essential.", + "corequisite": "" + }, + { + "moduleCode": "CE5105", + "title": "Analytical & Numerical Methods In Foundation Engineering", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE2112 or CE4 standing or higher", + "corequisite": "" + }, + { + "moduleCode": "CE5106", + "title": "Ground Improvement", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "TCE5106", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE2112 or CE4 standing or higher", + "corequisite": "" + }, + { + "moduleCode": "CE5106A", + "title": "Ground Improvement for Soft Soils", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "Background in soil mechanics or equivalent", + "corequisite": "" + }, + { + "moduleCode": "CE5106B", + "title": "Advanced Ground Improvement for Difficult Ground", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "Background in soil mechanics or equivalent\nCE5106A Ground Improvement for Soft Soils", + "corequisite": "" + }, + { + "moduleCode": "CE5107", + "title": "Pile Foundations", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "TCE5107", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Undergraduate: CE2112 & CE3116\nGraduate students: Background in Soil Mechanics and Foundation Engineering", + "corequisite": "" + }, + { + "moduleCode": "CE5107A", + "title": "Principles of Pile Foundation Design", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "Background in soil mechanics and foundation engineering or equivalent", + "corequisite": "" + }, + { + "moduleCode": "CE5107B", + "title": "Pile Foundation Problems and EC7 Impact", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "Background in soil mechanics and foundation engineering or equivalent.\nCE5107A Principles of Pile Foundation Design", + "corequisite": "" + }, + { + "moduleCode": "CE5108", + "title": "Earth Retaining Structures", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "TCE5108", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE2112 or CE4 standing or higher", + "corequisite": "" + }, + { + "moduleCode": "CE5108A", + "title": "Lateral Earth Pressures and Retaining Wall Design via Eurocode 7", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "Background in soil mechanics or equivalent", + "corequisite": "" + }, + { + "moduleCode": "CE5108B", + "title": "Deep Excavations Design Using Eurocode 7", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "Background in soil mechanics or equivalent\nCE5108A Lateral Earth Pressures and Retaining Wall Design Design via Eurocode 7 or equivalent", + "corequisite": "" + }, + { + "moduleCode": "CE5110", + "title": "Constitutive Relationship in Geotechnical Analysis", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE5111", + "title": "Underground Construction Design Project", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE5112", + "title": "Structural Support Systems for Excavation", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE5108 Earth-Retaining Structures, with 1st priority to MSc (Geotechnical) and 2nd priority to MSc (CE) specializing in Geotechnical", + "corequisite": "" + }, + { + "moduleCode": "CE5113", + "title": "Geotechnical Investigation & Monitoring", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "TCE5113", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE5113A", + "title": "Geotechnical Investigation according to EC7", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "Background in soil mechanics or equivalent", + "corequisite": "" + }, + { + "moduleCode": "CE5113B", + "title": "Geophysical Methods & Geotechnical Monitoring", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "Background in soil mechanics or equivalent and CE5113A Basic\nGeotechnical Investigation according to EC7", + "corequisite": "" + }, + { + "moduleCode": "CE5203", + "title": "Traffic Flow & Control", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE3121 Transportation Engineering, or equivalent", + "corequisite": "" + }, + { + "moduleCode": "CE5204", + "title": "Pavement Design & Rehabilitation", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE5205", + "title": "Transportation Planning", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE3121 or CE4 standing or higher", + "corequisite": "" + }, + { + "moduleCode": "CE5206", + "title": "Urban Public Transportation Systems", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE3121 Transportation Engineering or equivalent", + "corequisite": "" + }, + { + "moduleCode": "CE5208", + "title": "Transport Infrastructure Asset Management", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE3121 Transportation Engineering or equivalent", + "corequisite": "" + }, + { + "moduleCode": "CE5209", + "title": "Transportation Data Analytics and Modeling", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE3121 and CE4 standing or higher", + "corequisite": "" + }, + { + "moduleCode": "CE5307", + "title": "Wave Hydrodynamics", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "OT5201", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE2134 or CE4 standing or higher", + "corequisite": "" + }, + { + "moduleCode": "CE5307A", + "title": "Ocean Waves", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "CE5307, OT5201", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE5307B", + "title": "Hydrodynamic Loads on Offshore Structures", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "CE5307, OT5201", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "Knowledge in water wave mechanics or equivalent", + "corequisite": "" + }, + { + "moduleCode": "CE5307C", + "title": "Finite Amplitude Wave Theories & Their Applications", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "CE5307, OT5201", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Knowledge in water wave mechanics or equivalent", + "corequisite": "" + }, + { + "moduleCode": "CE5308", + "title": "Coastal Processes & Sediment Transport", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "CE5307A", + "corequisite": "" + }, + { + "moduleCode": "CE5310", + "title": "Hydroinformatics", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE5311", + "title": "Environmental modelling with computers", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Minimum requirement CE2134 or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "CE5312", + "title": "Open-channel Hydraulics", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE3132 Water Resources Engineering or CE4 standing or higher", + "corequisite": "" + }, + { + "moduleCode": "CE5313", + "title": "Groundwater Hydrology", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE5314", + "title": "HEWRM Project", + "moduleCredit": 8, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE5315", + "title": "Climate Science for Engineers", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CE3132 Water Resources Engineering", + "corequisite": "" + }, + { + "moduleCode": "CE5316A", + "title": "Water Resources for Smart and Liveable Cities: Introduction", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CE3132 or equivalent", + "corequisite": "" + }, + { + "moduleCode": "CE5316B", + "title": "Water Resources Modeling for Urban Catchments", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CE5316A Water Resources for Smart and Liveable Cities: Introduction", + "corequisite": "" + }, + { + "moduleCode": "CE5316C", + "title": "Eco-hydrology", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CE5316A Water Resources for Smart and Liveable Cities: Introduction", + "corequisite": "" + }, + { + "moduleCode": "CE5377", + "title": "Numerical Methods in Mechanics & Envr. Flows", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "CE5311 Environmental modelling with computers, CE6003 Numerical Methods In Engineering and Mechanics, and CE6077 Advanced Numerical Methods in Mechanics & Envr. Flows", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "EG1109/ CE1109 Statics and Mechanics of Materials and CE2134 Hydraulics", + "corequisite": "" + }, + { + "moduleCode": "CE5403", + "title": "Industrial Wastewater Control", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE5405", + "title": "Toxic & Hazardous Waste Management", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE5408", + "title": "Membrance Technology in Environmental Applications", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE5504", + "title": "Finite Element Analysis & Applications", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE5505", + "title": "Plastic Analysis of Structures", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE5509", + "title": "Advanced Structural Steel Design", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "TCE5509", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE3166 or CE4 standing or higher", + "corequisite": "" + }, + { + "moduleCode": "CE5509A", + "title": "Advanced Structural Steel Design to EC3", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "Background in Structural Steel Design", + "corequisite": "" + }, + { + "moduleCode": "CE5509B", + "title": "Design of Composite Steel and Concrete Structures to EC4", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "Background in Structural Steel Design", + "corequisite": "" + }, + { + "moduleCode": "CE5510", + "title": "Advanced Structural Concrete Design", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "TCE5510", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE3165 or CE4 standing or higher", + "corequisite": "" + }, + { + "moduleCode": "CE5510A", + "title": "Structural Concrete Design to EC2", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "Background in Structural Mechanics and Analysis", + "corequisite": "" + }, + { + "moduleCode": "CE5510B", + "title": "Advanced Structural Concrete Design to EC2", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "CE5510A Structural Concrete Design to EC2 or equivalent", + "corequisite": "" + }, + { + "moduleCode": "CE5512", + "title": "Plates and Shells", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE5513", + "title": "Plastic Analysis Of Structures", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "CE5885A Topics in Structural Engineering: Advanced Analysis", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE2155 or CE4 standing or higher", + "corequisite": "" + }, + { + "moduleCode": "CE5514", + "title": "Plate & Shell Structures", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "ME5103", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE2155 or CE4 standing or higher", + "corequisite": "" + }, + { + "moduleCode": "CE5515", + "title": "Structural Health Monitoring", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CE3202 Data Acquisition for Civil Engineering Applications, or equivalent", + "corequisite": "" + }, + { + "moduleCode": "CE5603", + "title": "Engineering Economics & Project Evaluation", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE5603A", + "title": "Evaluating Economic Feasibility of Projects", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE5603B", + "title": "Evaluating Economic Risks in Projects", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "CE5603A Evaluating Economic Feasibility of Projects or equivalent", + "corequisite": "" + }, + { + "moduleCode": "CE5604", + "title": "Advanced Concrete Technology", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "TCE5604", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE2155, or CE4 standing or higher", + "corequisite": "" + }, + { + "moduleCode": "CE5610", + "title": "Assessment and Retrofit of Concrete Structures", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE3165 or CE Graduate standing", + "corequisite": "" + }, + { + "moduleCode": "CE5610A", + "title": "Concrete and Cementitious Composites", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE5610B", + "title": "Repair and Retrofit of Concrete Structures", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "Background in Structural Concrete Design", + "corequisite": "" + }, + { + "moduleCode": "CE5611", + "title": "Precast Concrete Technology", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "CE5610 Precast and Retrofitting Technology (taken in Semester 2, AY2008/09 or earlier)\nTCE5611", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE 3165 or CE4 standing or higher", + "corequisite": "" + }, + { + "moduleCode": "CE5611A", + "title": "Specifying Concrete to EN 206", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 3 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE5611B", + "title": "Precast Concrete Design", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "Background in Structural Concrete Design", + "corequisite": "" + }, + { + "moduleCode": "CE5666", + "title": "Industrial Attachment", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE5701A", + "title": "Engineering Fracture Mechanics (St)", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE5702", + "title": "Reliability Analysis And Design", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE2407 or Equivalent", + "corequisite": "" + }, + { + "moduleCode": "CE5803", + "title": "Gis in Civil Engineering", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE5804", + "title": "Global Infrastructure Project Management", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE2183 or CE4 standing or higher", + "corequisite": "" + }, + { + "moduleCode": "CE5805", + "title": "DfMA & Productivity Analytics in Construction", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "TCE5805", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE2183 Construction Project Management; AND\nCE4- / EVE4-standing or higher", + "corequisite": "" + }, + { + "moduleCode": "CE5805A", + "title": "Construction Productivity Analytics", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 3 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE5805B", + "title": "Design for Manufacture and Assembly", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE5806", + "title": "Advanced Project Management with Lean Construction", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE4 / EVE4- standing or higher; AND\nCE2183 Construction Project Management or Equivalent", + "corequisite": "" + }, + { + "moduleCode": "CE5806A", + "title": "Advanced Project Management", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + true, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE5806B", + "title": "Lean Construction Management", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE5807", + "title": "Integrated Digital Delivery (IDD)", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "CE5804 Global Infrastructure Project Management", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CE2409 Computer Applications in Civil Engineering or equivalent", + "corequisite": "" + }, + { + "moduleCode": "CE5807A", + "title": "Digital Technology & Analytics for Construction", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE5807B", + "title": "Integrated Construction Logistics", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE5808", + "title": "Digital Design and Construction (BIM and VDC)", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "CE5808A & CE5808B taken as a pair; and CE4282", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE2409; EG1311; CS1101E; equivalent", + "corequisite": "" + }, + { + "moduleCode": "CE5808A", + "title": "Digital Design Using BIM Technologies", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE5808B", + "title": "Virtual Design & Construction: Moving Beyond BIM", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE5880", + "title": "Topics in Project Management Engineering", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Departmental Approval (depending on the title)", + "corequisite": "" + }, + { + "moduleCode": "CE5881", + "title": "Topics in Geotechnical Engineering: Soil Dynamics", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE5883A", + "title": "Topics in Hydraulic & Water Resources - Environmental Hydraulics", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE 2134 Hydraulics and/or fluid mechanics background", + "corequisite": "" + }, + { + "moduleCode": "CE5883B", + "title": "Topics in Hydraulic & Water Resources – Modelling Climate Change", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "UG: MA1505 and MA1506, or equivalents \nPG: Knowledge in Linear Algebra and Differential Equations, or Instructor Permission", + "corequisite": "" + }, + { + "moduleCode": "CE5885", + "title": "Topics in Structural Engineering", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Departmental Approval (depending on the title)", + "corequisite": "" + }, + { + "moduleCode": "CE5885A", + "title": "Topics in Structural Engineering: Advanced Analysis", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "CE5513 Plastic Analysis of Structures", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Graduate-student standing: CE4258 Structural Stability and Dynamics, or equivalent", + "corequisite": "" + }, + { + "moduleCode": "CE5886", + "title": "Topics in Concrete Engineering: Specialized", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE 4 and above", + "corequisite": "" + }, + { + "moduleCode": "CE5999", + "title": "Graduate Seminars", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE6001", + "title": "Operations & Management of Infrastructure Systems", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE6002", + "title": "Analysis of Civil Engineering Experiments", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE6003", + "title": "Numerical Methods in Engineering Mechanics", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE6006", + "title": "Advanced Finite Element Analysis", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE6077", + "title": "Advanced Numerical Methods in Mechanics & Envr. Flows", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "CE5311 Environmental modelling with computers, and CE6003 Numerical Methods In Engineering and Mechanics, CE5377 Numerical Methods in Mechanics & Envr. Flows", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "EG1109/ CE1109 Statics and Mechanics of Materials and CE2134 Hydraulics", + "corequisite": "" + }, + { + "moduleCode": "CE6077A", + "title": "Numerical methods in Civil Engineering", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "CE5311, CE5377/6077, CE6003", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CE2407 or equivalent", + "corequisite": "" + }, + { + "moduleCode": "CE6077B", + "title": "Numerical Methods for Environmental Flows", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "CE5311, CE5377/CE6077, CE6003", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CE2134 or equivalent", + "corequisite": "" + }, + { + "moduleCode": "CE6077C", + "title": "Numerical Methods and Applications to Civil Engineering Mechanics", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "CE5311, CE5377/CE6077, CE6003", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CE2407 or equivalent", + "corequisite": "" + }, + { + "moduleCode": "CE6101", + "title": "Geotechnical Constitutive Modeling", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE6102", + "title": "Geotechnical Analysis", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE6403", + "title": "Advanced Environmental Microbiology", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CE6705", + "title": "Analysis & Design of Buildings Against Hazards", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Graduate student standing", + "corequisite": "" + }, + { + "moduleCode": "CE6999", + "title": "Doctoral Seminars", + "moduleCredit": 8, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CFG1002", + "title": "Career Catalyst", + "moduleCredit": 2, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CFG2002", + "title": "Global Industry Insights", + "moduleCredit": 2, + "department": "Centre for Future-ready Grads", + "faculty": "NUS", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS undergraduates who have completed CFG1002 Career Catalyst.", + "corequisite": "" + }, + { + "moduleCode": "CG1111", + "title": "Engineering Principles and Practice I", + "moduleCredit": 6, + "department": "Computing and Engineering Programme", + "faculty": "Multi Disciplinary Programme", + "semester": [ + 1 + ], + "preclusion": "CG1108 Electrical Engineering, EG1112 Engineering Principles and Practice II", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CG1112", + "title": "Engineering Principles and Practice II", + "moduleCredit": 6, + "department": "Computing and Engineering Programme", + "faculty": "Multi Disciplinary Programme", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS1010 Programming Methodology and CG1111 Engineering Principles and Practice I", + "corequisite": "" + }, + { + "moduleCode": "CG2023", + "title": "Signals and Systems", + "moduleCredit": 4, + "department": "Computing and Engineering Programme", + "faculty": "Multi Disciplinary Programme", + "semester": [ + 2 + ], + "preclusion": "EE2023 Signals and Systems", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1506 or MA1512", + "corequisite": "" + }, + { + "moduleCode": "CG2027", + "title": "Transistor-level Digital Circuits", + "moduleCredit": 2, + "department": "Computing and Engineering Programme", + "faculty": "Multi Disciplinary Programme", + "semester": [ + 1, + 2 + ], + "preclusion": "EE2021 Devices and Circuit", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CG1111 Engineering Principles and Practice I OR\nCG1108 Electrical Engineering OR\nEG1112 Engineering Principles and Practice II", + "corequisite": "" + }, + { + "moduleCode": "CG2028", + "title": "Computer Organization", + "moduleCredit": 2, + "department": "Computing and Engineering Programme", + "faculty": "Multi Disciplinary Programme", + "semester": [ + 1, + 2 + ], + "preclusion": "EE2024 Programming for Computer Interfaces", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS1010 Programming Methodology and (EE2026 Digital Design / EE2020 Digital Fundamentals)", + "corequisite": "" + }, + { + "moduleCode": "CG2271", + "title": "Real-Time Operating Systems", + "moduleCredit": 4, + "department": "Computing and Engineering Programme", + "faculty": "Multi Disciplinary Programme", + "semester": [ + 1, + 2 + ], + "preclusion": "CS2106 Introduction to Operating Systems", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS1020 or its equivalent) or (CS2040 or its equivalent)", + "corequisite": "" + }, + { + "moduleCode": "CG3002", + "title": "Embedded Systems Design Project", + "moduleCredit": 6, + "department": "Computing and Engineering Programme", + "faculty": "Multi Disciplinary Programme", + "semester": [], + "preclusion": "EE3032 Innovation & Enterprise II\nEE3208 Embedded Computer Systems Design", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2024 and CG2271 and CS2113/T", + "corequisite": "" + }, + { + "moduleCode": "CG3207", + "title": "Computer Architecture", + "moduleCredit": 4, + "department": "Computing and Engineering Programme", + "faculty": "Multi Disciplinary Programme", + "semester": [ + 1 + ], + "preclusion": "EE3207E, TEE3207", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2024 (for ECE AY2016 intake & prior) / CG2028 or EE2028 (for ECE AY2017 intake & after)", + "corequisite": "" + }, + { + "moduleCode": "CG4001", + "title": "B. Eng. Dissertation", + "moduleCredit": 12, + "department": "Computing and Engineering Programme", + "faculty": "Multi Disciplinary Programme", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "EE4001 B.Eng. Dissertation\nCP4101 B.Comp. Dissertation", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "Level 4 standing", + "corequisite": "" + }, + { + "moduleCode": "CG4002", + "title": "Computer Engineering Capstone Project", + "moduleCredit": 8, + "department": "Computing and Engineering Programme", + "faculty": "Multi Disciplinary Programme", + "semester": [ + 1, + 2 + ], + "preclusion": "CG3002 Embedded Systems Design Project\nEE3032 Innovation & Enterprise II\nEE3208 Embedded Computer Systems Design", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CG2028 Computer Organization and CG2271 Real-Time Operating Systems and CS2113/T Software Engineering & Object-Oriented Programming", + "corequisite": "" + }, + { + "moduleCode": "CG4003", + "title": "Advanced Project and Internship", + "moduleCredit": 12, + "department": "Computing and Engineering Programme", + "faculty": "Multi Disciplinary Programme", + "semester": [ + 1, + 2 + ], + "preclusion": "CG4001 B.Eng. Dissertation\nCP4101 B.Comp. Dissertation\nCP4106 Computing Project\nCP3200 Student Internship Programme\nCP3880 Advanced Technology Attachment Programme\nEE4001 B.Eng. Dissertation\nEE4002R Research Capstone\nEG3611A Industrial Attachment\nEG3612 Vacation Internship Programme", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "Level 3 standing", + "corequisite": "" + }, + { + "moduleCode": "CH1101E", + "title": "Retelling Chinese Stories: Change and Continuity", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "A pass in GCE \"O\" Level Chinese Language \"B\" syllabus or higher, or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "CH2121", + "title": "History of Chinese Literature", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "CL2121", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n(i) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n(ii) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n(iii) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n(iv) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n(v) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH2141", + "title": "General History of China", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "CL2241 and CL2141", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain: \n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language\nat GCE 'AO' Level (at GCE 'A' Level examination); \nOR 2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; \nOR 3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level;\nOR 4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level. \n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH2161", + "title": "Traditional Chinese Taxonomy of Learning", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH2162", + "title": "Reading Classical Chinese Texts", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CH1101E and either CH2121/CL2121 or CH2141/CL2241", + "corequisite": "" + }, + { + "moduleCode": "CH2221", + "title": "Modern Chinese Literature", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "CH3226", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH2222", + "title": "Selected Readings in Chinese Prose", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH2223", + "title": "Chinese Fiction", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH2226", + "title": "Selected Authors/Texts I", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH2228", + "title": "Ci Lyric in the Tang-Song Period", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH2241", + "title": "HIstory of Modern China", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH2242", + "title": "A Global Perspective on Chinese Identities", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level,\nor (b) Chinese Language at GCE 'AO' Level (at GCE\n'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or\n(b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at\nGCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and\nLiterature (H2CLL) at GCE 'A' Level, or (b) Chinese\nLanguage and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH2243", + "title": "Chinese in Southeast Asia", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH2245", + "title": "Modern China: Literature, Culture, History", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) at least a B4 for (a) Higher Chinese at GCE 'O' level, or (b) Chinese Language at GCE 'AO' level (at GCE 'A' level examination); OR\n2) at least a pass for (a) Chinese at GCE 'A' level, or (b) Higher Chinese at GCE 'A' level; OR\n3) at least C grade for Chinese Language (H1CL) at GCE 'A' level; OR\n4) at least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH2246", + "title": "Lu Xun and Modern China", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "CH2245", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH2247", + "title": "Socio-Cultural Dimensions of Cross-Strait Relations", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level,\nor (b) Chinese Language at GCE 'AO' Level (at GCE\n'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or\n(b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at\nGCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and\nLiterature (H2CLL) at GCE 'A' Level, or (b) Chinese\nLanguage and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH2248", + "title": "An Understanding of Singapore's Teochew Community", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE ‘O’ Level, or (b) Chinese Language at GCE ‘AO’ Level (at GCE ‘A’ Level examination); OR\n2) At least a pass for (a) Chinese at GCE ‘A’ Level, or (b)Higher Chinese at GCE ‘A’ Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE ‘A’ Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE ‘A’ Level, or (b) Chinese Language and Literature (H3CLL) at GCE ‘A’ Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH2252", + "title": "History of Chinese Philosophy", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH2272", + "title": "Introduction to Chinese Art (taught in Chinese)", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "CH2293", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain at least a Grade B4 and above in 1) CL or CL2 (AO level) at the GCE “A” Level Examination, OR 2) HCL or CL1 at the GCE “O” Level Examination. Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH2273", + "title": "Chinese Media in Singapore: Theory and Practice", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n\n1) at least a B4 for (a) Higher Chinese at GCE 'O' level, or (b) Chinese Language at GCE 'AO' level (at GCE'A' level examination); OR\n\n2) at least a pass for (a) Chinese at GCE 'A' level, or (b) Higher Chinese at GCE 'A' level; OR\n\n3) at least C grade for Chinese Language (H1CL) at GCE 'A' level; OR\n\n4) at least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' level.\n\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH2274", + "title": "Discovering the Chinese Business Environment", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "CH2271 Chinese for Business and Industry", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) at least a B4 for (a) Higher Chinese at GCE 'O' level,\nor (b) Chinese Language at GCE 'AO' level (at GCE\n'A' level examination); OR\n2) at least a pass for (a) Chinese at GCE 'A' level, or\n(b) Higher Chinese at GCE 'A' level; OR\n3) at least C grade for Chinese Language (H1CL) at\nGCE 'A' level; OR\n4) At least a pass for (a) Chinese Language and\nLiterature (H2CLL) at GCE 'A' level, or (b) Chinese\nLanguage and Literature (H3CLL) at GCE 'A' level.\n5) Equivalent qualifications may be accepted", + "corequisite": "" + }, + { + "moduleCode": "CH2275", + "title": "Chinese Pop Music in East Asia", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "A Pass in GCE “O” Level Chinese Language “B” syllabus or higher, or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "CH2291", + "title": "Chinese Tradition (taught in English)", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH2292", + "title": "Special Topics in Chinese Literature (in English)", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH2292A", + "title": "Understanding Modern China Through Film (in English)", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "CH2292", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH2293", + "title": "Introduction to Chinese Art (taught in English)", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "CH2272", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH2294", + "title": "Religion in Chinese Societies", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH2295", + "title": "Commerce and Culture in China's Past (in English)", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH2298", + "title": "Chinese Personalities in Southeast Asia", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "A pass in GCE \"O\" Level Chinese Language \"B\" syllabus or higher, or equivalent, since there would be lessons conducted in Chinese and students have the option to do their assignments in Chinese.", + "corequisite": "" + }, + { + "moduleCode": "CH2299", + "title": "Art of Modern and Contemporary China (in English)", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH2390", + "title": "Chinese Diasporas (in English)", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH2391", + "title": "Strangers in Chinese Fiction and Film (in English)", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH2392", + "title": "Chinese Women in Context (in English)", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "CH2244", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH2393", + "title": "Chinese Business Enterprises and Management (in English)", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "CH3297", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH3221", + "title": "Selected Readings in Chinese Verse", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "CL3221", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain: \n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR \n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR \n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR \n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level. \n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH3222", + "title": "Chinese Drama", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH3223", + "title": "Selected Authors/Texts II", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH3225", + "title": "Keywords in S'pore and M'sian Chinese Literary Studies", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n\n1) At least a B4 for (a) Higher Chinese at GCE ‘O’ Level, or (b) Chinese Language at GCE ‘AO’ Level (at GCE ‘A’ Level examination); OR\n\n2) At least a pass for (a) Chinese at GCE ‘A’ Level, or (b) Higher Chinese at GCE ‘A’ Level; OR\n\n3) At least C grade for Chinese Language (H1CL) at GCE ‘A’ Level; OR\n\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE ‘A’ Level, or (b) Chinese Language and Literature (H3CLL) at GCE ‘A’ Level.\n\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH3226", + "title": "Modern Chinese Literature", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH3227", + "title": "Chinese Vernacular Stories", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE ‘O’ Level, or (b) Chinese Language at GCE ‘AO’ Level (at GCE ‘A’ Level examination); OR\n2) At least a pass for (a) Chinese at GCE ‘A’ Level, or (b) Higher Chinese at GCE ‘A’ Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE ‘A’ Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE ‘A’ Level, or (b) Chinese Language and Literature (H3CLL) at GCE ‘A’ Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH3228", + "title": "Classical Poetry: Writing and Criticism", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n\n1) at least a B4 for (a) Higher Chinese at GCE 'O' level, or (b) Chinese Language at GCE 'AO' level (at GCE 'A' level examination); OR\n\n2) at least a pass for (a) Chinese at GCE 'A' level, or (b) Higher Chinese at GCE 'A' level; OR\n\n3) at least C grade for Chinese Language (H1CL) at GCE 'A' level; OR\n\n4) at least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' level.\n\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH3229", + "title": "Modern Literature in Taiwan and Hong Kong", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have obtained:\n1. at least a B4 for (a) Higher Chinese at GCE ‘O’ level, or (b) Chinese Language at GCE ‘AO’ level\n(at GCE ‘A’ level examination); OR  \n2. at least a pass for (a) Chinese at GCE ‘A’ level, or (b) Higher Chinese at GCE ‘A’ level; OR  \n3. at least C grade for Chinese Language (H1CL) at GCE ‘A’ level; OR  \n4. at least a pass for (a) Chinese Language and Literature (H2CLL) at GCE ‘A’ level, or (b) Chinese Language and Literature (H3CLL) at GCE ‘A’ level.\n5. Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH3230", + "title": "Ci Lyric in the Tang-Song Period", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "CH2228", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH3231", + "title": "Chinese Fiction", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "CH2223", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH3232", + "title": "Selected Readings in Chinese Prose", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "CH2222", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH3243", + "title": "Chinese Cultural History", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE `O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH3244", + "title": "Topics On Contemporary China", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH3245", + "title": "Overseas Chinese Society", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH3246", + "title": "Socio-Political History of Modern China", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH3247", + "title": "Socio-Economic History of China", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "CH3242 Selected Topics in Chinese History II", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain;\n1) at least a B4 for (a) Higher Chinese at GCE 'O'\nlevel, or (b) Chinese Language at GCE 'AO' level (at\nGCE 'A' level examination); OR\n2) at least a pass for (a) Chinese at GCE 'A' level, or\n(b) Higher Chinese at GCE 'A' level; OR\n3) at least C grade for Chinese Language (H1CL) at\nGCE 'A' level; OR\n4) At least a pass for (a) Chinese Language and\nLiterature (H2CLL) at GCE 'A' level, or (b) Chinese\nLanguage and Literature (H3CLL) at GCE 'A' level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH3248", + "title": "Contemporary China: 1949 to Present", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "CH3244 Topics in Contemporary China and HY3248 People's Republic of China, 1949-1989", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n\n1) At least a B4 for\n\n(a) Higher Chinese at GCE 'O' Level, or\n\n(b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR \n\n2) At least a pass for\n\n(a) Chinese at GCE 'A' Level, or\n\n(b) Higher Chinese at GCE 'A' Level; OR \n\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR \n\n4) At least a pass for\n\n(a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or \n\n(b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH3253", + "title": "Confucian Thought", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH3254", + "title": "Neo-Confucianism in Chinese History", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Students who have read CH3253 Confucian Thought.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) at least a B4 for (a) Higher Chinese at GCE 'O' level, or (b) Chinese Language at GCE 'AO' level (at GCE 'A' level examination); OR\n2) at least a pass for (a) Chinese at GCE 'A' level, or (b) Higher Chinese at GCE 'A' level; OR\n3) at least C grade for Chinese Language (H1CL) at GCE 'A' level; OR\n4) at least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH3255", + "title": "Introduction to Chinese Buddhism", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Studentsmust have obtained:\n1) at least a B4 for (a) Higher Chinese at GCE ‘O’ level, or (b) Chinese Language at GCE ‘AO’ level (atGCE ‘A’ level examination);OR\n2) at least a pass for\n(a) Chinese at GCE ‘A’ level, or \n(b)Higher Chinese atGCE ‘A’ level;OR\n3) at least C grade for Chinese Language (H1CL) at GCE ‘A’ level;OR\n4) at least a pass for\n(a) Chinese Language and Literature (H2CLL) at GCE ‘A’ level, or\n(b) Chinese Language and Literature (H3CLL) atGCE ‘A’ level.\n5) Equivalent qualificationsmay be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH3261", + "title": "Prescribed Text: The Four Books", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH3271", + "title": "Contemporary Chinese Society and Culture", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "CH3291", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH3272", + "title": "Selected Topics in Chinese Art (taught in Chinese)", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "CH3293", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CH2272 or CH2293", + "corequisite": "" + }, + { + "moduleCode": "CH3273", + "title": "Modern and Contemporary Chinese Popular Literature", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have obtained:\n1. at least a B4 for (a) Higher Chinese at GCE ‘O’ level,\nor (b) Chinese Language at GCE ‘AO’ level (at GCE ‘A’ level examination); OR  \n2. at least a pass for (a) Chinese at GCE ‘A’ level, or (b) Higher Chinese at GCE ‘A’ level; OR  \n3. at least C grade for Chinese Language (H1CL) at GCE ‘A’ level; OR  \n4. at least a pass for (a) Chinese Language and Literature (H2CLL) at GCE ‘A’ level, or (b) Chinese Language and Literature (H3CLL) at GCE ‘A’ level.\n5. Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH3274", + "title": "Lu Xun and Modern China", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "CH2246, CH2245", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH3291", + "title": "Contemporary Chinese Culture (taught in English)", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "CH3271", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH3292", + "title": "Selected Topics in Chinese Civilisation (in English)", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH3293", + "title": "Selected Topics in Chinese Art (taught in English)", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "CH3272", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH3294", + "title": "Science and Medicine in China (in English)", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH3295", + "title": "Understanding China: Past and Present (in English)", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH3296", + "title": "'China' in the Making (in English)", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH3298", + "title": "Chinese in Southeast Asia (in English)", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH3299", + "title": "Cold War and the Chinese Diaspora (in English)", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH3550", + "title": "Chinese Studies Internship", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 4 + ], + "preclusion": "Any other XX3550 internship modules in China. \n(Note: Students who change major may not do a second internship in their new major)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Major in CH/CL with 24 MCs of CH/CL modules.", + "corequisite": "" + }, + { + "moduleCode": "CH3551", + "title": "FASS Undergraduate Research Opportunity (UROP)", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must:\nhave declared a Major, completed a minimum of 24 MCs in that Major, and have a CAP of at least 3.20.", + "corequisite": "" + }, + { + "moduleCode": "CH3881", + "title": "Topics in Chinese Literature 1", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) at least a B4 for (a) Higher Chinese at GCE ‘O’ level, or (b) Chinese Language at GCE ‘AO’ level (at GCE ‘A’ level examination); OR\n2) at least a pass for (a) Chinese at GCE ‘A’ level, or (b) Higher Chinese at GCE ‘A’ level; OR\n3) at least C grade for Chinese Language (H1CL) at GCE ‘A’ level; OR\n4) at least a pass for (a) Chinese Language and Literature (H2CLL) at GCE ‘A’ level, or (b) Chinese Language and Literature (H3CLL) at GCE ‘A’ level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH3882", + "title": "Topics in Chinese History 1", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) at least a B4 for (a) Higher Chinese at GCE ‘O’ level, or (b) Chinese Language at GCE ‘AO’ level (at GCE ‘A’ level examination); OR\n2) at least a pass for (a) Chinese at GCE ‘A’ level, or (b) Higher Chinese at GCE ‘A’ level; OR\n3) at least C grade for Chinese Language (H1CL) at GCE ‘A’ level; OR\n4) at least a pass for (a) Chinese Language and Literature (H2CLL) at GCE ‘A’ level, or (b) Chinese Language and Literature (H3CLL) at GCE ‘A’ level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH3882A", + "title": "Chinese Temples Across Southeast Asia (taught in English)", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH3883", + "title": "Topics in Chinese Philosophy I", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) at least a B4 for (a) Higher Chinese at GCE ‘O’ level, or (b) Chinese Language at GCE ‘AO’ level (at GCE ‘A’ level examination); OR\n2) at least a pass for (a) Chinese at GCE ‘A’ level, or (b) Higher Chinese at GCE ‘A’ level; OR\n3) at least C grade for Chinese Language (H1CL) at GCE ‘A’ level; OR\n4) at least a pass for (a) Chinese Language and Literature (H2CLL) at GCE ‘A’ level, or (b) Chinese Language and Literature (H3CLL) at GCE ‘A’ level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CH4201", + "title": "Chinese Classical Phonology", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "CL3208", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in CH or CL, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "CH4202", + "title": "Chinese Semasiology", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in CH or CL, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "CH4203", + "title": "Chinese Dialectology", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in CH or CL, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "CH4204", + "title": "Selected Topics in Chinese Linguistics", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in CH or CL, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "CH4205", + "title": "Chinese Metaphors", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in CH or CL, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "CH4206", + "title": "Theoretical Issues in Chinese Grammar", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in CH or CL; and CL2103, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "CH4207", + "title": "History of Chinese Language", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "CL3206", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in CH or CL, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "CH4222", + "title": "Chinese Classical Novels", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in CH or CL, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "CH4223", + "title": "Chinese Literary Criticism", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in CH or CL, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "CH4224", + "title": "Studies in Chinese Verse", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in CH or CL, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "CH4226", + "title": "The City in Modern Chinese Literature", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in CH or CL, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "CH4242", + "title": "Selected Periods of Chinese History I", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in CH or CL or 28 MCs in GL/GL recognised non- language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in CH or CL, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "CH4243", + "title": "Selected Periods of Chinese History II", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in CH or CL or 28 MCs in HY or 28 MCs in GL/GL recognised non- language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in CH or CL or 28 MCs in HY, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "CH4244", + "title": "Selected Topics on The Overseas Chinese", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in CH or CL or 28 MCs in GL/GL recognised non- language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in CH or CL, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "CH4246", + "title": "Chinese Local History", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in CH or CL or 28 MCs in GL/GL recognised, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in CH or CL, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "CH4247", + "title": "Print Culture in Modern China", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in CH or CL, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "CH4248", + "title": "China Transnational: 1850 to the Present", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in CH or CL or 28 MCs in GL/GL recognised non- language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in CH or CL, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "CH4251", + "title": "Modern-Contemporary Chinese Thought", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2015-2019:\nCompleted 80 MCs, including 28 MCs in CH or CL or 28 MCs in PH or 28 MCs in GL/GL recognised, with a minimum CAP of 3.20 or be on the Honours track. PH students who believe they have sufficient background knowledge for the module should consult the lecturer for permission to take it.\n\nCohort 2020 onwards:\n Completed 80 MCs, including 28 MCs in CH or CL or 28 MCs in PH, with a minimum CAP of 3.20 or be on the Honours track. PH students who believe they have sufficient background knowledge for the module should consult the lecturer for permission to take it.", + "corequisite": "" + }, + { + "moduleCode": "CH4261", + "title": "Prescribed Text: Zhuangzi", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012-2014:\nCompleted 80 MCs, including 28 MCs in CH or CL, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2015 onwards:\nCompleted 80 MCs, including 28 MCs in CH or CL or 28 MCs in PH, with a minimum CAP of 3.20 or be on the Honours track. PH students who believe they have sufficient background knowledge for the module should consult the lecturer for permission to take it.", + "corequisite": "" + }, + { + "moduleCode": "CH4262", + "title": "Transregional Chinese Literary Connections", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including minimum 28 MCs in CH or CL, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "CH4281", + "title": "Translation Studies", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: At least 2 translation modules (CL2280,CL2281,CL3281,CL3282,CL3283,CL3284,CL3285,CL3286) and completed 80 MCs, including 28 MCs in CH or CL or 28MCs in GL/GL recognised non- language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: At least 2 translation modules (CL2280,CL2281,CL3281,CL3282,CL3283,CL3284,CL3285,CL3286) and completed 80 MCs, including 28 MCs in CH or CL, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "CH4401", + "title": "Honours Thesis", + "moduleCredit": 15, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "CH4660", + "attributes": [ + false, + false, + false, + false, + true, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2015 and before;\nCompleted 110 MCs including 60 MCs of CH/CL major requirements with a minimum CAP of 3.50.\n\nCohort 2016 onwards;\nCompleted 110 MCs including 44 MCs of CH/CL major requirements with a minimum CAP of 3.50.", + "corequisite": "" + }, + { + "moduleCode": "CH4660", + "title": "Independent Study", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "CH4401, CH4401S", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in CH or CL, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in CH or CL, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "CH4881", + "title": "Topics in Chinese Literature II", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in CH or CL, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "CH4882", + "title": "Topics in Chinese History II", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in CH or CL or 28 MCs in GL/GL recognised non- language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in CH or CL, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "CH4882A", + "title": "Personalities in Modern Chinese History", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in CH or CL or 28 MCs in GL/GL recognised non- language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in CH or CL, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "CH4883", + "title": "Topics in Chinese Philosophy II", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012-2014:\nCompleted 80 MCs, including 28 MCs in CH or CL, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2015 onwards:\nCompleted 80 MCs, including 28 MCs in CH or CL or 28 MCs in PH, with a minimum CAP of 3.20 or be on the Honours track. PH students who believe they have sufficient background knowledge for the module should consult the lecturer for permission to take it.", + "corequisite": "" + }, + { + "moduleCode": "CH5209", + "title": "Topics in Rhetoric", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH5209R", + "title": "Topics in Rhetoric", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH5210", + "title": "Chinese Lexical Semantics", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Graduate students in Chinese Studies, or 120 MCs (or equivalent) and permission of Department", + "corequisite": "" + }, + { + "moduleCode": "CH5210R", + "title": "Chinese Lexical Semantics", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH5211", + "title": "Seminar in Chinese Pragmatics", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Graduate students in Chinese Studies, or 120 MCs (or equivalent) and permission of Department", + "corequisite": "" + }, + { + "moduleCode": "CH5211R", + "title": "Seminar In Chinese Pragmatics", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH5212", + "title": "THEORIES IN PHONOLOGY (Taught in English)", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Graduate students in Chinese Studies, or 120 MCs (or equivalent) and permission of Department", + "corequisite": "" + }, + { + "moduleCode": "CH5212R", + "title": "Theories in Phonology (Taught in English)", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH5213", + "title": "Cognitive Linguistics & Chinese Language", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "CH6201 - for students admitted before Academic Year 2005/2006.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Graduate Students in Chinese Studies, or 120 MCs (or equivalent) and permission of Department", + "corequisite": "" + }, + { + "moduleCode": "CH5213R", + "title": "Cognitive Linguistics & Chinese Language", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH5222", + "title": "Topics in Modern Chinese Literature", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Graduate students in Chinese Studies, or 120 MCs (or equivalent) and permission of Department", + "corequisite": "" + }, + { + "moduleCode": "CH5222R", + "title": "Topics in Modern Chinese Literature", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Graduate students in Chinese Studies, or 120 MCs (or equivalent) and permission of Department", + "corequisite": "" + }, + { + "moduleCode": "CH5223", + "title": "Selected Authors", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH5223R", + "title": "Selected Authors", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH5224", + "title": "Prescribed Texts in Literature", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH5224R", + "title": "Prescribed Texts in Literature", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH5225", + "title": "Topics in SE Asian Chinese Literature and Film", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Graduate students in Chinese Studies, or 120 MCs (or equivalent) and permission of Department", + "corequisite": "" + }, + { + "moduleCode": "CH5225R", + "title": "Topics in Se Asian Chinese Literature", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Graduate students in Chinese Studies, or 120 MCs (or equivalent) and permission of Department", + "corequisite": "" + }, + { + "moduleCode": "CH5242", + "title": "Selected Texts in Chinese Historiography", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Admission to a graduate programme in Chinese Studies, or 120 MCs (or equivalent) and permission of the Department.", + "corequisite": "" + }, + { + "moduleCode": "CH5242R", + "title": "Selected Texts in Chinese Hist", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Admission to a graduate programme in Chinese Studies, or 120 MCs (or equivalent) and permission of the Department.", + "corequisite": "" + }, + { + "moduleCode": "CH5243", + "title": "Contemporary China-Southeast Asia Relations", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH5243R", + "title": "Contemporary China-Southeast Asia Relations", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH5244", + "title": "Topics On History of Modern China", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Graduate students in Chinese Studies, or 120 MCs (or equivalent) and permission of Department", + "corequisite": "" + }, + { + "moduleCode": "CH5244R", + "title": "Topics On History of Modern China", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Graduate students in Chinese Studies, or 120 MCs (or equivalent) and permission of Department", + "corequisite": "" + }, + { + "moduleCode": "CH5245", + "title": "Seminar in Early Taoism", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completion of an undergraduate degree in Chinese Studies (or permission of the instructor)", + "corequisite": "" + }, + { + "moduleCode": "CH5245R", + "title": "Seminar in Early Taoism", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completion of an undergraduate degree in Chinese Studies (or permission of the instructor)", + "corequisite": "" + }, + { + "moduleCode": "CH5246", + "title": "Seminar in Modern Taoism", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completion of an undergraduate degree in Chinese Studies (or permission of the instructor)", + "corequisite": "" + }, + { + "moduleCode": "CH5246R", + "title": "Seminar in Modern Taoism", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completion of an undergraduate degree in Chinese Studies (or permission of the instructor)", + "corequisite": "" + }, + { + "moduleCode": "CH5247", + "title": "Business Culture in Traditional China", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH5247R", + "title": "Business Culture in Traditional China", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH5660", + "title": "Independent Study", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Subject to the approval from HOD", + "corequisite": "" + }, + { + "moduleCode": "CH5880", + "title": "Topics in Applied Chinese Linguistics", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH5880R", + "title": "Topics in Applied Chinese Linguistics", + "moduleCredit": 5, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH6201", + "title": "Topics in Chinese Linguistics", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "\"Graduate Students in Chinese Studies, or 120 MCs (or equivalent) and permission of Department\"", + "corequisite": "" + }, + { + "moduleCode": "CH6202", + "title": "Universal Principles and Chinese Grammar", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH6203", + "title": "Grammaticalization and Chinese Grammar", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH6221", + "title": "Topics in Classical Chinese Literature", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH6226", + "title": "Chinese Literary Theories and Movements", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Admission to a graduate programme in Chinese Studies, or 120 MCs (or equivalent) and permission of the Department.", + "corequisite": "" + }, + { + "moduleCode": "CH6227", + "title": "Culture and Society Through Literature", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH6241", + "title": "Topics in Chinese History", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Graduate students in Chinese Studies, or 120 MCs (or equivalent) and permission of Department", + "corequisite": "" + }, + { + "moduleCode": "CH6243", + "title": "Seminar in Se Asian Chinese Studies", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "\"Graduate Students in Chinese Studies, or 120 MCs (or equivalent) and permission of Department\"", + "corequisite": "" + }, + { + "moduleCode": "CH6245", + "title": "Culture and Society in Chinese History", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Graduate Students in Chinese Studies, or 120MCs (or equivalent) and permission of Department", + "corequisite": "" + }, + { + "moduleCode": "CH6246", + "title": "Chinese History and Historians", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH6247", + "title": "Cold War and the Chinese in Southeast Asia", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Graduate students in Chinese Studies, or 120 MCs (or equivalent) and permission of Department.", + "corequisite": "" + }, + { + "moduleCode": "CH6248", + "title": "Studies in Sino-S.e. Asian Interactions", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Graduate students in Chinese Studies, or 120 MCs (or equivalent) and permission of Department", + "corequisite": "" + }, + { + "moduleCode": "CH6249", + "title": "Essential Outsiders?  The  Chinese  in  Southeast Asia", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Graduate  students  in  Chinese  Studies,  or  120 MCs  (or equivalent) and permission of Department", + "corequisite": "" + }, + { + "moduleCode": "CH6251", + "title": "Topics in Chinese Philosophy", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Graduate students in Chinese Studies, or 120 MCs (or equivalent) and permission of Department", + "corequisite": "" + }, + { + "moduleCode": "CH6252", + "title": "Intellectual Landscapes in Pre-Qin China", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Admission to a graduate programme in Chinese Studies, or 120 MCs (or equivalent) and permission of the Department.", + "corequisite": "" + }, + { + "moduleCode": "CH6261", + "title": "Chinese Studies in the West", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CH6262", + "title": "Independent Study in Chinese Studies", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Subject to the approval from HOD", + "corequisite": "" + }, + { + "moduleCode": "CH6263", + "title": "Translation: Formal, Cultural, Political", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Graduate students in Chinese Studies, or 120 MCs (or equivalent) and permission of Department", + "corequisite": "" + }, + { + "moduleCode": "CH6770", + "title": "Graduate Research Seminar", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Subject to the approval from HOD", + "corequisite": "" + }, + { + "moduleCode": "CHC5101", + "title": "Contemporary Research in Chinese Studies", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CHC5102", + "title": "Contemporary Research in Chinese Language", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CHC5301", + "title": "History and Civilizations of the Tang Empire", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CHC5302", + "title": "Chinese Buddhist Proselytic Literature", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CHC5303", + "title": "Traditional Chinese Culture in Singapore and Malaysia", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CHC5304", + "title": "Society and Culture of the Ming Dynasty", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CHC5305", + "title": "Prominent Nanyang Chinese in Modern China", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CHC5306", + "title": "Chinese Intellectual History, 10th – 19th Century", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CHC5307", + "title": "Major Themes in Chinese History", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CHC5308", + "title": "Chinese Kinship and Local Society", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CHC5309", + "title": "Economic & Management Thought in Pre-Modern China", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CHC5310", + "title": "Chinese Rhapsody", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CHC5311", + "title": "Ci Studies", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CHC5312", + "title": "Tang-Song Poetry and Poetics", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CHC5313", + "title": "Thematics in Chinese Literature", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CHC5314", + "title": "Chinese Religion", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CHC5315", + "title": "Neo‐Taoism", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All graduates in our new Master’s program.", + "corequisite": "" + }, + { + "moduleCode": "CHC5316", + "title": "Print Culture and Chinese Literature: From Ming to Modern", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CHC5317", + "title": "New Approaches to Modern Chinese Culture", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CHC5318", + "title": "Time and Space in Traditional Chinese Culture", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CHC5319", + "title": "Development of the Chinese Opera Scene in Singapore", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CHC5320", + "title": "Grammaticalization in Chinese", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CHC5321", + "title": "Beauty Through Chinese Lenses", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CHC5322", + "title": "Pragmatics and Politeness", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CHC5323", + "title": "Special Topics in Chinese Linguistics", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CHC5324", + "title": "Lexicon in Old Chinese", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CHC5325", + "title": "Chinese Language Education and Research", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CHC5326", + "title": "Comparative Grammar between Chinese and English", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CHC5330", + "title": "Chinese Popular Culture: Transformation and Flows", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CK3550", + "title": "China Studies Internship (taught in English)", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Any other XX3550 internship modules in China. \n(Note: Students who change major may not do a second internship in their new major)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Major in CH/CL with 24 MCs of CH/CL modules.", + "corequisite": "" + }, + { + "moduleCode": "CL1101E", + "title": "Chinese Language: Its Past and Present", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "A pass in GCE \"O\" Level Chinese Language \"B\" syllabus or higher, or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "CL2101", + "title": "The Chinese Script : History and Issues", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "CL2201", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CL2102", + "title": "Chinese Phonetics", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "CL2202", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CL2103", + "title": "Chinese Grammar", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "CL2203", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CL2104", + "title": "Reading/Writing Chinese", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CL2206", + "title": "Topics in Chinese Linguistics I", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CL2207", + "title": "Chinese Language and Culture", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CL2260", + "title": "Selected Readings", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CL2280", + "title": "Basic Translation", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "1) Exempted from NUS Qualifying English Test, or passed NUS Qualifying English Test, or exempted from further CELC Remedial English modules; AND\n2) Grade 'B4' and above in Higher Chinese (HCL) at GCE 'O' Level or Chinese (CL) at GCE 'AO' Level; OR Grade 'C' and above in Chinese Language (H1CL) at GCE 'A' Level.", + "corequisite": "" + }, + { + "moduleCode": "CL2281", + "title": "Translation and Interpretation", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "1) Exempted from NUS Qualifying English Test, or passed NUS Qualifying English Test, or exempted from further CELC Remedial English modules; AND\n2) Grade 'B4' and above in Higher Chinese (HCL) at GCE 'O' Level or Chinese (CL) at GCE 'AO' Level; OR Grade 'C' and above in Chinese Language (H1CL) at GCE 'A' Level.", + "corequisite": "" + }, + { + "moduleCode": "CL2291", + "title": "Chinese Anthropolinguistics (taught in English)", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CL3201", + "title": "Communicating through Chinese Rhetoric and Metaphors", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CL3202", + "title": "Chinese Lexicology", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CL3203", + "title": "Chinese Pragmatics", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CL3204", + "title": "Classical Chinese", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CL1101E", + "corequisite": "" + }, + { + "moduleCode": "CL3205", + "title": "Topics on Chinese Linguistics II", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CL3206", + "title": "History of Chinese Language", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CL1101E", + "corequisite": "" + }, + { + "moduleCode": "CL3207", + "title": "Chinese Sociolinguistics", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CL3208", + "title": "Chinese Phonology", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "CH4201", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CL3209", + "title": "Chinese Language Acquisition", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "CL2206 & CL2209", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CL3210", + "title": "The Grammars and Lexicons of the Chinese Dialects", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have obtained:\n1) at least a B4 for (a) Higher Chinese at GCE ‘O’ level, or (b) Chinese Language at GCE ‘AO’ level (at GCE ‘A’ level examination); OR\n2) at least a pass for (a) Chinese at GCE ‘A’ level, or (b) Higher Chinese at GCE ‘A’ level; OR\n3) at least C grade for Chinese Language (H1CL) at GCE ‘A’ level; OR\n4) at least a pass for (a) Chinese Language and Literature (H2CLL) at GCE ‘A’ level, or (b) Chinese Language and Literature (H3CLL) at GCE ‘A’ level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CL3211", + "title": "The Standardization of the Chinese Language", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "\"Students must have obtained:\n1) at least a B4 for (a) Higher Chinese at GCE ‘O’ level, or (b) Chinese Language at GCE ‘AO’ level (at GCE ‘A’ level examination); OR\n2) at least a pass for (a) Chinese at GCE ‘A’ level, or (b) Higher Chinese at GCE ‘A’ level; OR\n3) at least C grade for Chinese Language (H1CL) at GCE ‘A’ level; OR\n4) at least a pass for (a) Chinese Language and Literature (H2CLL) at GCE ‘A’ level, or (b) Chinese Language and Literature (H3CLL) at GCE ‘A’ level.\n5) Equivalent qualifications may be accepted.\"", + "corequisite": "" + }, + { + "moduleCode": "CL3212", + "title": "Trendy Chinese", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n(i) At least a B4 for (a) Higher Chinese at GCE ‘O’ Level, or (b) Chinese Language at GCE ‘AO’ Level (at GCE ‘A’ Level examination); Or\n(ii) At least a pass for (a) Chinese at GCE ‘A’ Level, or (b) Higher Chinese at GCE ‘A’ Level; OR\n(iii) At least C grade for Chinese Language (H1CL) at GCE\n‘A’ Level; OR\n(iv) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE ‘A’ Level, or (b) Chinese Language and Literature (H3CLL) at GCE ‘A’ Level.", + "corequisite": "" + }, + { + "moduleCode": "CL3213", + "title": "Chinese Semantics", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "CL2204", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CL3214", + "title": "Aspects of Chinese Linguistics", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "CL2292, CL2208", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CL3215", + "title": "Chinese Language and Culture", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "CL2207", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or (b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CL3216", + "title": "Chinese Stylistics", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must obtain:\n1) At least a B4 for (a) Higher Chinese at GCE 'O' Level, or \n(b) Chinese Language at GCE 'AO' Level (at GCE 'A' Level examination); OR\n2) At least a pass for (a) Chinese at GCE 'A' Level, or (b) Higher Chinese at GCE 'A' Level; OR\n3) At least C grade for Chinese Language (H1CL) at GCE 'A' Level; OR\n4) At least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' Level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' Level.\n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "CL3217", + "title": "The Analysis of Chinese Morphosyntax", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "CL2210", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CL2103", + "corequisite": "" + }, + { + "moduleCode": "CL3281", + "title": "Advanced Translation", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CL2280 or CL2281", + "corequisite": "" + }, + { + "moduleCode": "CL3282", + "title": "Mass Media Translation", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CL2280 or CL2281", + "corequisite": "" + }, + { + "moduleCode": "CL3283", + "title": "Film and Television Subtitling Translation", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CL2280 or CL2281", + "corequisite": "" + }, + { + "moduleCode": "CL3284", + "title": "Literary Translation", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CL2280 or CL2281", + "corequisite": "" + }, + { + "moduleCode": "CL3285", + "title": "Computer-Assisted Translation Tools", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CL2280 or CL2281", + "corequisite": "" + }, + { + "moduleCode": "CL3286", + "title": "Translation Theories", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CL2280 or CL2281", + "corequisite": "" + }, + { + "moduleCode": "CL3550", + "title": "Chinese Language Internship", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 4 + ], + "preclusion": "Any other XX3550 internship modules\n(Note: Students who change major may not do a second internship in their new major)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Major in CH/CL with 24 MCs of CH/CL modules.", + "corequisite": "" + }, + { + "moduleCode": "CL3551", + "title": "FASS Undergraduate Research Opportunity (UROP)", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "Students must:\nhave declared a Major, completed a minimum of 24 MCs in that Major, and have a CAP of at least 3.20.", + "corequisite": "" + }, + { + "moduleCode": "CLC1101", + "title": "Engaging and Building Communities", + "moduleCredit": 4, + "department": "Chua Thian Poh Comm Leader Center", + "faculty": "NUS", + "semester": [ + 1 + ], + "preclusion": "Students who have previously read CLC2101 or UHB2213 through the University Scholars Programme (USP) will NOT be required to undertake this module.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CLC2101", + "title": "Engaging and Building Communities", + "moduleCredit": 4, + "department": "Chua Thian Poh Comm Leader Center", + "faculty": "NUS", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CLC2201", + "title": "Community Development Practicum I", + "moduleCredit": 4, + "department": "Chua Thian Poh Comm Leader Center", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CLC1101 or CLC2101 and CLC2202 (or taken concurrently with CLC2202)\nThis is a REQUIRED module for both Certificate and Minor students. Certificate students are strongly encouraged to access a course on research methods formally or informally to equip themselves for the practicum. Relevant methods courses include: CLC2202 Research Methods for Community Development, SC2101 Methods of Social Research, or SW3101 Social Work Research Methods", + "corequisite": "" + }, + { + "moduleCode": "CLC2202", + "title": "Research Methods for Community Development", + "moduleCredit": 4, + "department": "Chua Thian Poh Comm Leader Center", + "faculty": "NUS", + "semester": [ + 1 + ], + "preclusion": "Nil (but exemption will be granted for Sociology and\nSocial Work Major students who have already read\nSC2101 and SW3101 as part of their Major requirements)", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CLC1101 (or CLC2101)", + "corequisite": "" + }, + { + "moduleCode": "CLC2203", + "title": "Community Development Practicum I", + "moduleCredit": 8, + "department": "Chua Thian Poh Comm Leader Center", + "faculty": "NUS", + "semester": [], + "preclusion": "CLC2201", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "CLC1101 or CLC2101 and CLC2202\n\nCLC2203 Practicum I is a REQUIRED module for both Certificate and Minor students. Certificate students are strongly encouraged to access a course on research methods formally or informally to equip themselves for the practicum. Relevant methods courses include: CLC2202 Research Methods for Community Development, SC2101 Methods of Social Research, or SW3101 Social Work Research Methods", + "corequisite": "" + }, + { + "moduleCode": "CLC3301", + "title": "Communicating Social Issues in Singapore", + "moduleCredit": 4, + "department": "Chua Thian Poh Comm Leader Center", + "faculty": "NUS", + "semester": [ + 1 + ], + "preclusion": "NM4230", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CLC3302", + "title": "Diversity and Inclusion", + "moduleCredit": 4, + "department": "Chua Thian Poh Comm Leader Center", + "faculty": "NUS", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CLC3303", + "title": "Community Leadership", + "moduleCredit": 4, + "department": "Chua Thian Poh Comm Leader Center", + "faculty": "NUS", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CLC3304", + "title": "Special Topics in Community Development & Leadership", + "moduleCredit": 4, + "department": "Chua Thian Poh Comm Leader Center", + "faculty": "NUS", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CLC3305", + "title": "Community Development Practicum II", + "moduleCredit": 4, + "department": "Chua Thian Poh Comm Leader Center", + "faculty": "NUS", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Practicum II is ONLY open to CLC Minor students.\nMinor students must first read and passed the 3\ncompulsory CLC modules before accessing Practicum II\n(CLC3305). These 3 modules are: the theory module\n(CLC1101), the Methods module (CLC2201 or the\nrecognized methods modules SC2101 or SW3101), AND\nPracticum I (CLC2202).", + "corequisite": "" + }, + { + "moduleCode": "CLC3306", + "title": "Community Development Practicum II", + "moduleCredit": 8, + "department": "Chua Thian Poh Comm Leader Center", + "faculty": "NUS", + "semester": [], + "preclusion": "CLC3305", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "CLC1101 (Engaging and Building Communities), CLC2202 (Research Methods for Community Development), and CLC2203 (Community Development Practicum I)\n\nPracticum II is now open to both CLC Certificate and Minor students with the change in the Certificate programme from 2 to 3 modules.\n\nStudents must first read and passed the 3 compulsory CLC modules before accessing Practicum II (CLC3306). These 3 modules are: CLC1101 Engaging and Building Communities, CLC2202 Research Methods for Community Development or the recognized methods modules SC2101 or SW3101), AND CLC2203 Community Development Practicum I.", + "corequisite": "" + }, + { + "moduleCode": "CM1111", + "title": "Inorganic Chemistry 1", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "'A' level or H2 pass in Chemistry or equivalent", + "corequisite": "" + }, + { + "moduleCode": "CM1121", + "title": "Organic Chemistry 1", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "CM1501 or CM1503 or CM1401", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "'A' level or H2 pass in Chemistry or equivalent or CM1417/CM1417X", + "corequisite": "" + }, + { + "moduleCode": "CM1131", + "title": "Physical Chemistry 1", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "'A' level or H2 pass in Chemistry or equivalent", + "corequisite": "" + }, + { + "moduleCode": "CM1191", + "title": "Experiments in Chemistry 1", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "H2/A‐level Chemistry or its equivalent or by permission", + "corequisite": "" + }, + { + "moduleCode": "CM1401", + "title": "Chemistry for Life Sciences", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "CM1121 or CM1402 or CM1501", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GCE 'A' level or H2 pass in Chemistry or equivalent or CM1417/CM1417X", + "corequisite": "" + }, + { + "moduleCode": "CM1402", + "title": "General Chemistry", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "CM1401 – Chemistry for Life Sciences", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GCE 'A' level or H2 pass in Chemistry or equivalent or CM1417 /CM1417X", + "corequisite": "" + }, + { + "moduleCode": "CM1417", + "title": "Fundamentals of Chemistry", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "A level or H2 Chemistry or equivalent or CM1417X", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "'O' Level pass in Chemistry or equivalent", + "corequisite": "" + }, + { + "moduleCode": "CM1417X", + "title": "Fundamentals of Chemistry", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 2, + 3 + ], + "preclusion": "Students with ‘A’ level or H2 Chemistry or equivalent.\nor CM1417", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "’O’ level pass in chemistry or equivalent", + "corequisite": "" + }, + { + "moduleCode": "CM1501", + "title": "Organic Chemistry for Engineers", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "CM1121, CM1503, CM1401", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "'A' level or H2 pass in Chemistry or equivalent or CM1417 /CM1417X", + "corequisite": "" + }, + { + "moduleCode": "CM1502", + "title": "General and Physical Chemistry for Engineers", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [], + "preclusion": "Chemistry majors, CM1502FC or CM1502X", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "'A' level or H2 pass in Chemistry or equivalent or CM1417 /CM1417X", + "corequisite": "" + }, + { + "moduleCode": "CM1502X", + "title": "General and Physical Chemistry for Engineers", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [], + "preclusion": "CM1502, CM1502FC, Chemistry majors", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "'A' level or H2 pass in Chemistry or equivalent or CM1417 /CM1417X", + "corequisite": "" + }, + { + "moduleCode": "CM2101", + "title": "Physical Chemistry 2", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM1131 Physical Chemistry 1", + "corequisite": "" + }, + { + "moduleCode": "CM2111", + "title": "Inorganic Chemistry 2", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM1111", + "corequisite": "" + }, + { + "moduleCode": "CM2121", + "title": "Organic Chemistry 2", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM1121 or by department approval", + "corequisite": "" + }, + { + "moduleCode": "CM2142", + "title": "Analytical Chemistry 1", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM1131 or FST1101 or CM1401 by department approval", + "corequisite": "" + }, + { + "moduleCode": "CM2161", + "title": "Principles of Chemical Process II", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM1161", + "corequisite": "" + }, + { + "moduleCode": "CM2191", + "title": "Experiments in Chemistry 2", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM1191 or by department approval.", + "corequisite": "" + }, + { + "moduleCode": "CM2192", + "title": "Experiments in Chemistry 3", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "CM2142", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM1191 or by department approval.", + "corequisite": "" + }, + { + "moduleCode": "CM2192A", + "title": "Experiments in Chemistry 3A", + "moduleCredit": 2, + "department": "Chemistry", + "faculty": "Science", + "semester": [], + "preclusion": "CM2192", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM1191 or FST1101 or by department approval", + "corequisite": "" + }, + { + "moduleCode": "CM2288", + "title": "Basic UROPS in Chemistry I", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "CM1111 or CM1121or CM1131; AND Departmental Approval", + "corequisite": "" + }, + { + "moduleCode": "CM2289", + "title": "Basic UROPS In Chemistry II", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "CM1111 or CM1121 or CM1131; and Departmental Approval", + "corequisite": "" + }, + { + "moduleCode": "CM3201", + "title": "Principles of Chemical Processes", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [], + "preclusion": "CN1111, CM1161, CM2161", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM1131, CM2101 and MA1421/MA1102R", + "corequisite": "" + }, + { + "moduleCode": "CM3211", + "title": "Organometallic Chemistry", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM2111", + "corequisite": "" + }, + { + "moduleCode": "CM3212", + "title": "Transition Metal Chemistry", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM2111", + "corequisite": "" + }, + { + "moduleCode": "CM3221", + "title": "Organic Synthesis: The Disconnection Approach", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM2121", + "corequisite": "" + }, + { + "moduleCode": "CM3222", + "title": "Organic Reaction Mechanisms", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM2121", + "corequisite": "" + }, + { + "moduleCode": "CM3225", + "title": "Biomolecules", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM2121", + "corequisite": "" + }, + { + "moduleCode": "CM3231", + "title": "Quantum Chem & Molecular Thermodynamics", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM2101", + "corequisite": "" + }, + { + "moduleCode": "CM3232", + "title": "Phy Chem of the Solid State & Interfaces", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM2101", + "corequisite": "" + }, + { + "moduleCode": "CM3241", + "title": "Instrumental Analysis I", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM2192", + "corequisite": "" + }, + { + "moduleCode": "CM3242", + "title": "Instrumental Analysis II", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + true, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM2142 or CM2192 or LSM2191 or Department approval", + "corequisite": "" + }, + { + "moduleCode": "CM3251", + "title": "Nanochemistry", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SP2251", + "corequisite": "" + }, + { + "moduleCode": "CM3252", + "title": "Polymer Chemistry 1", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "CM2264, CM3262, CM3265, CM3266", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM1131 and CM2121", + "corequisite": "" + }, + { + "moduleCode": "CM3253", + "title": "Materials Chemistry 1", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "CM2263 and CM3262", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM1131 and CM2111", + "corequisite": "" + }, + { + "moduleCode": "CM3261", + "title": "Environmental Chemistry", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM2142 or CM2192", + "corequisite": "" + }, + { + "moduleCode": "CM3267", + "title": "Computational Thinking and Programming in Chemistry", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Either (a) OR (b) below:\n(a) CM2191 Experiments in Chemistry 2 AND\nCM2192 Experiments in Chemistry 3\nOR\n(b) FST2102B Chemistry of Food Components", + "corequisite": "" + }, + { + "moduleCode": "CM3288", + "title": "Advanced UROPS in Chemistry I", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CM3289", + "title": "Advanced UROPS in Chemistry II", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CM3291", + "title": "Advanced Experiments In Organic & Inorganic Chemistry", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1, + 2, + 3 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM2111, CM2121 and CM2191", + "corequisite": "" + }, + { + "moduleCode": "CM3292", + "title": "Advanced Experiments In Analytical & Physical Chemistry", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1, + 2, + 4 + ], + "preclusion": "YSC2248", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM2101 and (CM2142 OR CM2192)", + "corequisite": "" + }, + { + "moduleCode": "CM3295", + "title": "Selected Experiments in Analytical Chemistry", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "YSC2248", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM2142 Analytical Chemistry 1 or CM2192 Experiments in Chemistry 3", + "corequisite": "" + }, + { + "moduleCode": "CM3296", + "title": "Molecular Modelling: Theory & Practice", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM2101", + "corequisite": "" + }, + { + "moduleCode": "CM3301", + "title": "Advanced Forensic Science", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEK1542", + "corequisite": "" + }, + { + "moduleCode": "CM3302", + "title": "Overseas Exploratory Project (Europe)", + "moduleCredit": 2, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CM3303", + "title": "Overseas Exploratory Project (CHINA)", + "moduleCredit": 2, + "department": "Chemistry", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CM3310", + "title": "Undergraduate Professional Internship Programme", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 3, + 4 + ], + "preclusion": "XX3310 modules offered in Science, where XX stands for the subject prefix of the respective major", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed 3 regular semesters of study, having declared Chemistry as first major and have completed a minimum of 32 MCs in Chemistry major at the time of application.", + "corequisite": "" + }, + { + "moduleCode": "CM3311", + "title": "Undergraduate Professional Internship Programme", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 3, + 4 + ], + "preclusion": "XX3311 modules offered in Science, where XX stands for the subject prefix for the respective major.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed 3 regular semesters of study, have declared Chemistry as first major and have completed a minimum of 32 MCs in Chemistry major at time of application.", + "corequisite": "" + }, + { + "moduleCode": "CM3312", + "title": "Enhanced Undergraduate Professional Internship Programme", + "moduleCredit": 12, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "XX3312 modules offered in Science, where XX stands for the subject prefix for the respective major.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed 3 regular semesters of study, have declared Chemistry as first major and have completed a minimum of 32 MCs in Chemistry major at time of application.", + "corequisite": "" + }, + { + "moduleCode": "CM3313", + "title": "Undergraduate Professional Internship Programme Extended", + "moduleCredit": 12, + "department": "Chemistry", + "faculty": "Science", + "semester": [], + "preclusion": "This module XX3313 Extended Undergraduate Professional Internship Programme, where XX stands for the subject prefix of the respective major", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed 3 regular semesters of study, having declared CM as first major and have completed a minimum of 32 MCs in CM major at the time of application and have completed CM3312", + "corequisite": "Students should be in their 3rd year of studies (SCI3)" + }, + { + "moduleCode": "CM3974", + "title": "Physics and the Environment", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CM4199A", + "title": "Honours Project in Chemistry", + "moduleCredit": 16, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "CM4299", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "At least an overall CAP of 3.50, on fulfillment of 100MC or more; and major requirements under the B.Sc. programme. ( Only for students entering NUS in or after 2002 ). Students from Cohort 2012 and onwards should have at least an overall CAP of 3.20, on fulfillment of 100MC or more; and major requirements under the B.Sc. programme.", + "corequisite": "" + }, + { + "moduleCode": "CM4199B", + "title": "Honours Project in Applied Chemistry", + "moduleCredit": 16, + "department": "Chemistry", + "faculty": "Science", + "semester": [], + "preclusion": "CM4299", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "At least an overall CAP of 3.50, on fulfillment of 100MC or more; and major requirements under the B.Sc. programme. ( Only for students entering NUS in or after 2002 ). Students from Cohort 2012 and onwards should have at least an overall CAP of 3.20, on fulfillment of 100MC or more; and major requirements under the B.Sc. programme.", + "corequisite": "" + }, + { + "moduleCode": "CM4201", + "title": "Directed Independent Study in Modern Chemistry", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CM4211", + "title": "Advanced Coordination Chemistry", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM3211 or CM3212", + "corequisite": "" + }, + { + "moduleCode": "CM4212", + "title": "Advanced Organometallic Chemistry", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM3211 or CM3212", + "corequisite": "" + }, + { + "moduleCode": "CM4214", + "title": "Structural Methods in Inorganic Chem", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM3211 or CM3212", + "corequisite": "" + }, + { + "moduleCode": "CM4215", + "title": "Bioinorganic Chemistry", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM3211 or CM3212 or CM3268", + "corequisite": "" + }, + { + "moduleCode": "CM4225", + "title": "Organic Spectroscopy", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM2121", + "corequisite": "" + }, + { + "moduleCode": "CM4227", + "title": "Chemical Biology", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "LSM4233", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM1121 or CM1401 and LSM1101 or LSM1401", + "corequisite": "" + }, + { + "moduleCode": "CM4228", + "title": "Catalysis", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM2121", + "corequisite": "" + }, + { + "moduleCode": "CM4236", + "title": "Spectroscopy & Imaging in Biophysical Chemistry", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM2101 Physical Chemistry 2", + "corequisite": "" + }, + { + "moduleCode": "CM4237", + "title": "Interfaces and the Liquid State", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM3232 or by permission", + "corequisite": "" + }, + { + "moduleCode": "CM4238", + "title": "Selected Topics in Physical Chemistry", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [], + "preclusion": "CM4236 or CM4237", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM2101", + "corequisite": "" + }, + { + "moduleCode": "CM4241", + "title": "Trace Analysis", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM3242 or by Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "CM4242", + "title": "Advanced Analytical Techniques", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM3242 or by Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "CM4251", + "title": "Characterization Techniques in Materials Chemistry", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM3252 or CM3253", + "corequisite": "" + }, + { + "moduleCode": "CM4252", + "title": "Polymer Chemistry 2", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "CM4264, CM4265, CM4266, CM4268", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM3252", + "corequisite": "" + }, + { + "moduleCode": "CM4253", + "title": "Materials Chemistry 2", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "CM4266", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM3253", + "corequisite": "" + }, + { + "moduleCode": "CM4254", + "title": "Chemistry of Semiconductors", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM3232 or CM3253", + "corequisite": "" + }, + { + "moduleCode": "CM4258", + "title": "Advanced Polymer Science", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "CM4268", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM3252", + "corequisite": "" + }, + { + "moduleCode": "CM4261", + "title": "Surface Science", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM2101", + "corequisite": "" + }, + { + "moduleCode": "CM4267", + "title": "Current Topics in Analytical Techniques", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM3242", + "corequisite": "" + }, + { + "moduleCode": "CM4269", + "title": "Sustainable & Green Chemistry", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM1121 and CM1131 and (CM2121 or CM2101)", + "corequisite": "" + }, + { + "moduleCode": "CM4271", + "title": "Medicinal Chemistry", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM2121 and CM3225", + "corequisite": "" + }, + { + "moduleCode": "CM4273", + "title": "Computational Drug Design", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [], + "preclusion": "CM5236", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM3221 or CM3222", + "corequisite": "" + }, + { + "moduleCode": "CM4274", + "title": "The Art and Methodology in Total Synthesis", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "CM4221", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM3221", + "corequisite": "" + }, + { + "moduleCode": "CM4282", + "title": "Energy Resources", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM1131 and CM1111", + "corequisite": "" + }, + { + "moduleCode": "CM4299", + "title": "Applied Project in Chemistry", + "moduleCredit": 16, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "Pharmacy majors are precluded from reading this module. This module would preclude XX4199 and vice versa.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must be reading the Bachelor of Science degree and have met Honours eligibility requirements for specific major.", + "corequisite": "" + }, + { + "moduleCode": "CM5100", + "title": "M.sc. Project", + "moduleCredit": 8, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "CM5100A", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CM5100A", + "title": "Advanced MSc Project", + "moduleCredit": 16, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "CM5100", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CM5101", + "title": "Advanced Analysis and Characterization Techniques", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "CM5201 – Practical Synthetic and Analytical Chemistry\n(this module has some analytical component similar to\nthe proposed module)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CM5151", + "title": "Energy Storage and Conversion Chemistry", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CM5152", + "title": "Water Chemistry and Environment", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "CM5244 Advanced Topics in Environmental Chemistry", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CM5161", + "title": "Advanced Chemical Laboratory Safety", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CM5198", + "title": "Graduate Seminar Module in Chemistry", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "Graduate seminar modules by other departments", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Registered as a Graduate Student in the Department of Chemistry in either one of the following programmes:\n1) PhD in Chemistry\n2) MSc by Research in Chemistry\n3) MSc by Coursework in Chemistry", + "corequisite": "" + }, + { + "moduleCode": "CM5199", + "title": "M.Sc. R&D project", + "moduleCredit": 16, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CM5211", + "title": "Contemporary Organometallic Chemistry", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM4212 or by permission", + "corequisite": "" + }, + { + "moduleCode": "CM5212", + "title": "Crystal Engineering", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM4214 or by Department Approval", + "corequisite": "" + }, + { + "moduleCode": "CM5221", + "title": "Advanced Organic Synthesis", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM4222 or by permission", + "corequisite": "" + }, + { + "moduleCode": "CM5223", + "title": "Topics in Supramolecular Chemistry", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "By permission", + "corequisite": "" + }, + { + "moduleCode": "CM5224", + "title": "Emerging Concepts in Drug Discovery", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "By Department approval", + "corequisite": "" + }, + { + "moduleCode": "CM5225", + "title": "Asymmetric Catalysis", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Subject to departmental approval", + "corequisite": "" + }, + { + "moduleCode": "CM5232", + "title": "Topics in Chemical Kinetics", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "By permission", + "corequisite": "" + }, + { + "moduleCode": "CM5237", + "title": "Advanced Optical Spectroscopy and Imaging", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CM5241", + "title": "Modern Analytical Techniques", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM4242 or by permission", + "corequisite": "" + }, + { + "moduleCode": "CM5244", + "title": "Topics in Environmental Chemistry", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "By Department approval", + "corequisite": "" + }, + { + "moduleCode": "CM5245", + "title": "Bioanalyticalchemistry", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CM5262", + "title": "Contemporary Materials Chemistry", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "By permission", + "corequisite": "" + }, + { + "moduleCode": "CM5268", + "title": "Advanced Organic Materials", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For Applied Chemistry Students: Polymer Chemistry II (CM3221), Advanced Polymer Science (CM4268). For Chemistry students: Organic Reaction Mechanisms (CM3221).", + "corequisite": "" + }, + { + "moduleCode": "CM5731", + "title": "Environmental Chemistry for A-level Chemistry Teachers", + "moduleCredit": 1, + "department": "Chemistry", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed a Bachelor’s degree in Chemistry or a related subject", + "corequisite": "" + }, + { + "moduleCode": "CN1101", + "title": "Chemical Engineering Principles and Practice I", + "moduleCredit": 6, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN1101A", + "title": "Chemical Engineering Principles and Practice I", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "CN1101", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN1102", + "title": "Chemical Engineering Principles and Practice II", + "moduleCredit": 6, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN1111", + "title": "Chemical Engineering Principles", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "CM1161, CN1111FC", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "H2 Mathematics, H2 Chemistry and H2 Physics (or PC1221 Fundamentals of Physics I) or equivalent", + "corequisite": "" + }, + { + "moduleCode": "CN1111E", + "title": "Chemical Engineering Principles", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TC1101, TCN1111", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN1111X", + "title": "Chemical Engineering Principles", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "CN1111, CN1111FC", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "H2 Mathematics, H2 Chemistry and H2 Physics (or PC1221 Fundamentals of Physics I) or equivalent", + "corequisite": "" + }, + { + "moduleCode": "CN2101", + "title": "Material and Energy Balances", + "moduleCredit": 3, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN2102", + "title": "Chemical Engineering Principles and Practice II", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "CN1102", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN2108", + "title": "Chemical Engineering Process Laboratory I", + "moduleCredit": 2, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CN2121: Chemical Kinetics and Reactor Design\nCN2122: Fluid Mechanics\nLSM1401: Fundamentals of Biochemistry", + "corequisite": "" + }, + { + "moduleCode": "CN2116", + "title": "Chemical Kinetics & Reactor Design", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "CN2125: Heat and Mass Transfer" + }, + { + "moduleCode": "CN2116E", + "title": "Chemical Kinetics And Reactor Design", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TC2106/ TCN2116", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TC1101/ CN1111E", + "corequisite": "TC2115/ CN2125E" + }, + { + "moduleCode": "CN2121", + "title": "Chemical Engineering Thermodynamics", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN2121E", + "title": "Chemical Engineering Thermodynamics", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TC2111, TCN2121", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CN1111E", + "corequisite": "" + }, + { + "moduleCode": "CN2122", + "title": "Fluid Mechanics", + "moduleCredit": 5, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1505: Mathematics I\nMA1506: Mathematics II\nor\nMA1511: Engineering Calculus\nMA1512: Differential Equations for Engineering", + "corequisite": "" + }, + { + "moduleCode": "CN2122A", + "title": "Fluid Mechanics", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "CN2122", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "H2 Physics\nMA1511: Engineering Calculus\nMA1512: Differential Equations for Engineering", + "corequisite": "" + }, + { + "moduleCode": "CN2122E", + "title": "Fluid Mechanics", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TC2112, TCN2122", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TC2411", + "corequisite": "" + }, + { + "moduleCode": "CN2125", + "title": "Heat & Mass Transfer", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "CN2122/CN2122A: Fluid Mechanics" + }, + { + "moduleCode": "CN2125E", + "title": "Heat And Mass Transfer", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TC2115, TCN2125", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TC2112/ CN2122E", + "corequisite": "" + }, + { + "moduleCode": "CN3101", + "title": "Chemical Engineering Process Lab I", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CN2116: Chemical Kinetics & Reactor Design \nCN2121: Chemical Engineering Thermodynamics \nCN2122: Fluid Mechanics\nCN2125: Heat and Mass Transfer", + "corequisite": "" + }, + { + "moduleCode": "CN3102", + "title": "Chemical Engineering Process Lab II", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CN3121: Process Dynamics and Control\nCN3132: Separation Processes", + "corequisite": "" + }, + { + "moduleCode": "CN3108", + "title": "Chemical Engineering Process Laboratory II", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CN2108: Chemical Engineering Laboratory I\nCN2116: Chemical Kinetics and Reactor Design\nCN2125: Heat and Mass Transfer\nCN3124: Fluid-Solid Systems", + "corequisite": "" + }, + { + "moduleCode": "CN3109", + "title": "Chemical Engineering Process Laboratory III", + "moduleCredit": 2, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CN3121: Process Dynamics and Control\nCN3132: Separation Processes", + "corequisite": "" + }, + { + "moduleCode": "CN3121", + "title": "Process Dynamics & Control", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1505: Mathematics I\nMA1506: Mathematics II\nor\nMA1511: Engineering Calculus\nMA1512: Differential Equations for Engineering\nMA1513: Linear Algebra with Differential Equations", + "corequisite": "" + }, + { + "moduleCode": "CN3121E", + "title": "Process Dynamics & Control", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TC3111, TCN3121", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TC2411", + "corequisite": "" + }, + { + "moduleCode": "CN3124", + "title": "Fluid-Solid Systems", + "moduleCredit": 3, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "CN2122: Fluid Mechanics" + }, + { + "moduleCode": "CN3124A", + "title": "Fluid-Particle Systems", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "CN2122A: Fluid Mechanics" + }, + { + "moduleCode": "CN3124E", + "title": "Particle Technology", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TC3114, TCN3124", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TC2112/ CN2122E", + "corequisite": "" + }, + { + "moduleCode": "CN3132", + "title": "Separation Processes", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CN1111: Chemical Engineering Principles\nCN2125: Heat and Mass Transfer\nor\nCN2101: Material and Energy Balances\nCN2121: Chemical Engineering Thermodynamics\nCN2125: Heat and Mass Transfer", + "corequisite": "" + }, + { + "moduleCode": "CN3132E", + "title": "Separation Processes", + "moduleCredit": 5, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TC2113, TCN3132", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CN1111E & CN2121E & CN2125E", + "corequisite": "" + }, + { + "moduleCode": "CN3135", + "title": "Process Safety, Health and Environment", + "moduleCredit": 3, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CN2121: Chemical Engineering Thermodynamics\nCN2122/CN2122A: Fluid Mechanics", + "corequisite": "" + }, + { + "moduleCode": "CN3135E", + "title": "Process Safety, Health and Environment", + "moduleCredit": 3, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 3 + ], + "preclusion": "TCN3135", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CN2121E & CN2122E", + "corequisite": "" + }, + { + "moduleCode": "CN3421", + "title": "Process Modeling And Numerical Simulation", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1505: Mathematics I\nMA1506: Mathematics II\nor\nMA1511: Engineering Calculus\nMA1512: Differential Equations for Engineering\nMA1513: Linear Algebra with Differential Equations", + "corequisite": "CN2116: Chemical Kinetics and Reactor Design" + }, + { + "moduleCode": "CN3421E", + "title": "Process Modeling & Numerical Simulation", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TC3411, TCN3421", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "To pass the following: CN2116E, CN2121E and CN2125E", + "corequisite": "" + }, + { + "moduleCode": "CN4111E", + "title": "Process Design & Safety", + "moduleCredit": 5, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "TC4211", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN4118", + "title": "B.Eng. Dissertation", + "moduleCredit": 8, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "Students must pass/complete the following:\n1) CN3101: Chemical Engineering Laboratory I\n2) CN3121: Process Dynamics and Control \n3) CN3132: Separation Processes\n4) CN3135: Process Safety, Health and Environment\n5) CN3421: Process Modeling and Numerical Simulation\n\nIn addition, students have to pass the safety quiz in CN3108 or CN3101 lab before starting CN4118. Those who did not take or pass the safety quiz will not be allowed to start CN4118.", + "corequisite": "" + }, + { + "moduleCode": "CN4118E", + "title": "B.Tech. Dissertation", + "moduleCredit": 10, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TC4118, CN4119E, TCN4119", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "TC1401 & TC1422 & CN1111E & TC1402/ TC2401 & TC2421 & CN2121E & CN2122E & CN2116E & CN2125E & CN3124E & CN3421E & CN3121E & CN3132E & CN4111E/CN3135E", + "corequisite": "" + }, + { + "moduleCode": "CN4118N", + "title": "Capstone Research Project", + "moduleCredit": 8, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "CN4118", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Host department will access whether students meet pre-requisite on a case-by-case basis.", + "corequisite": "" + }, + { + "moduleCode": "CN4118R", + "title": "B.Eng. Dissertation", + "moduleCredit": 10, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "CN3108 and at least 4 of the 5 core modules: CN3121, CN3124, CN3132, CN3135 and CN3421, or approved by the Head of the Department", + "corequisite": "" + }, + { + "moduleCode": "CN4119E", + "title": "B.Tech. Dissertation", + "moduleCredit": 8, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TCN4119, CN4118E", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "All Level 3000 Essential Modules", + "corequisite": "" + }, + { + "moduleCode": "CN4122", + "title": "Process Synthesis and Simulation", + "moduleCredit": 3, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CN2116: Chemical Kinetics and Reactor Design\nCN2121: Chemical Engineering Thermodynamics\nCN3124: Particle Technology\nCN3132: Separation Processes\nor\nCN2116: Chemical Kinetics and Reactor Design\nCN2121: Chemical Engineering Thermodynamics\nCN2122/CN2122A: Fluid Mechanics\nCN3132: Separation Processes", + "corequisite": "" + }, + { + "moduleCode": "CN4122E", + "title": "Process Synthesis and Simulation", + "moduleCredit": 3, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TCN4122", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CN2116E Chemical Kinetics and Reactor Design\nCN2121E Chemical Engineering Thermodynamics\nCN3124E Particle Technology\nCN3132E Separation Processes", + "corequisite": "" + }, + { + "moduleCode": "CN4122N", + "title": "Process Synthesis and Simulation", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "CN4122 Process Synthesis and Simulation", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Host department will access whether students meet pre-requisite on a case-by-case basis.", + "corequisite": "" + }, + { + "moduleCode": "CN4123", + "title": "Design Project", + "moduleCredit": 7, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CN3135: Process Safety, Health and Environment\nCN3421: Process Modelling & Numerical Simulation\nCN4122: Process Synthesis and Simulation\nEG2401: Engineering Professionalism", + "corequisite": "" + }, + { + "moduleCode": "CN4123E", + "title": "Design Project", + "moduleCredit": 7, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "CN3135E Process Safety, Health and Environment\nCN3421E Process Modelling & Numerical Simulation\nCN4122E Process Synthesis and Simulation\nTG2415 Ethics in Engineering", + "corequisite": "" + }, + { + "moduleCode": "CN4123R", + "title": "Final Year Design Project", + "moduleCredit": 6, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CN3135: Process Safety, Health and Environment\nCN4122: Process Synthesis and Simulation\nEG2401/EG2401A: Engineering Professionalism", + "corequisite": "" + }, + { + "moduleCode": "CN4124E", + "title": "Final Year Design Project", + "moduleCredit": 6, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TCN4124", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "CN3135E Process Safety, Health and Environment\nCN3421E Process Modelling & Numerical Simulation\nCN4122E Process Synthesis and Simulation\nTG2415 Ethics in Engineering", + "corequisite": "" + }, + { + "moduleCode": "CN4201R", + "title": "Petroleum Refining", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CN2116: Chemical Kinetics and Reactor Design\nCN3132: Separation Processes", + "corequisite": "" + }, + { + "moduleCode": "CN4203E", + "title": "Polymer Engineering", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "TCN4203", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN4203R", + "title": "Polymer Engineering", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN4205E", + "title": "Pinch Analysis and Process Integration", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TCN4205", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CN2125E Heat and Mass Transfer, CN3421E Process Modelling and Numerical Simulation.", + "corequisite": "" + }, + { + "moduleCode": "CN4205R", + "title": "Pinch Analysis and Process Integration", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "CN2125: Heat and Mass Transfer\nCN3421/CN3421A: Process Modelling and Numerical Simulation", + "corequisite": "" + }, + { + "moduleCode": "CN4207R", + "title": "Business Skills for Oil & Petrochemical Industry", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN4208E", + "title": "Biochemical Engineering", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "TCN4208", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TC2106 / CN2116E & TC2112 / CN2122E", + "corequisite": "" + }, + { + "moduleCode": "CN4210E", + "title": "Membrane Science And Engineering", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2 + ], + "preclusion": "TC4210, TCN4210", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN4211E", + "title": "Petrochemicals & Processing Technology", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "TC4211, TCN4211", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN4211R", + "title": "Petrochemicals and Processing Technology", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "CN2116: Chemical Kinetics and Reactor Design\nCN2121: Chemical Engineering Thermodynamics", + "corequisite": "" + }, + { + "moduleCode": "CN4213", + "title": "Introduction to Advanced Porous Materials", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN4215E", + "title": "Food Technology And Engineering", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "TC4215, TCN4215", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CN2122E & CN3132E", + "corequisite": "" + }, + { + "moduleCode": "CN4215R", + "title": "Food Technology and Engineering", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CN2125: Heat and Mass Transfer\nCN3132: Separation Processes", + "corequisite": "" + }, + { + "moduleCode": "CN4216E", + "title": "Electronic Materials Science", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 3 + ], + "preclusion": "TC4216, TCN4216", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TC1422", + "corequisite": "" + }, + { + "moduleCode": "CN4216R", + "title": "Electronic Materials Science", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN4217E", + "title": "Processing of Microelectronic Materials", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "TCN4217", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TC1422", + "corequisite": "" + }, + { + "moduleCode": "CN4217R", + "title": "Processing of Microelectronic Materials", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN4218", + "title": "Particle Technology Fundamentals and Applications", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN4221R", + "title": "Control of Industrial Processes", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "CN3121: Process Dynamics and Control\nCN4122: Process Synthesis and Simulation", + "corequisite": "" + }, + { + "moduleCode": "CN4223R", + "title": "Microelectronic Thin Films", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN4227E", + "title": "Advanced Process Control", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TC4227, TCN4227", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TC3111/ CN3121E", + "corequisite": "" + }, + { + "moduleCode": "CN4227R", + "title": "Advanced Process Control", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CN3121: Process Dynamics and Control", + "corequisite": "" + }, + { + "moduleCode": "CN4229E", + "title": "Computer Aided Chemical Engineering", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "TCN4229", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CN3421E", + "corequisite": "" + }, + { + "moduleCode": "CN4231E", + "title": "Downstream Processing of Biochemical and Pharmaceutical Products", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "TCN4231", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN4233E", + "title": "Good Manufacturing Practices in Pharmaceutical Industry", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "CN4233R Good Manufacturing Practices in\nPharmaceutical Industry\nPR2143 Pharmaceutical Analysis for Quality Assurance\nPR3145 Compliance & Good Practices in Pharmacy\nPR4206 Industrial Pharmacy\nTCN4233", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CN2122E Fluid Mechanics; CN2125E Heat and Mass\nTransfer", + "corequisite": "" + }, + { + "moduleCode": "CN4233R", + "title": "Good Manufacturing Practices in Pharmaceutical Industry", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "PR2143 Pharmaceutical Analysis for Quality Assurance\nPR3145 Compliance & Good Practices in Pharmacy\nPR4206 Industrial Pharmacy", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CN2108: Chemical Engineering Laboratory I\nLSM1401: Fundamentals of Biochemistry\nor\nCN1102/CN2102: Chemical Engineering Principles and Practice II\nCN3132: Separation Processes", + "corequisite": "" + }, + { + "moduleCode": "CN4238E", + "title": "Chemical & Biochemical Process Modeling", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "TCN4238", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CN1111E & CN3421E", + "corequisite": "" + }, + { + "moduleCode": "CN4238R", + "title": "Chemical & Biochemical Process Modeling", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "CN3421/CN3421A: Process Modeling and Numerical Simulation" + }, + { + "moduleCode": "CN4240E", + "title": "Unit Operations and Processes for Effluent Treatment", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TCN4240", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN4240R", + "title": "Unit Operations and Processes for Effluent Treatment", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CN2116: Chemical Kinetics and Reactor Design", + "corequisite": "" + }, + { + "moduleCode": "CN4241R", + "title": "Engineering Principles for Drug Delivery", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN4242E", + "title": "Optimization of Chemical Processes", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TCN4242", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TC2411, CN3421E", + "corequisite": "" + }, + { + "moduleCode": "CN4245R", + "title": "Data Based Process Characterisation", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CN3121: Process Dynamics and Control", + "corequisite": "" + }, + { + "moduleCode": "CN4246E", + "title": "Chemical And Bio-Catalysis", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TCN4246", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN4246R", + "title": "Chemical and Bio Catalysis", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CN2116: Chemical Kinetics and Reactor Design", + "corequisite": "" + }, + { + "moduleCode": "CN4247R", + "title": "Enzyme Technology", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CN2116: Chemical Kinetics and Reactor Design", + "corequisite": "" + }, + { + "moduleCode": "CN4248", + "title": "Sustainable Process Development", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CN2116: Chemical Kinetics and Reactor Design\nCN3132: Separation Processes", + "corequisite": "" + }, + { + "moduleCode": "CN4249", + "title": "Engg. Design in Molecular Biotechnology", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN4250", + "title": "Chemical Product Design", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CN2116: Chemical Kinetics and Reactor Design\nCN3132: Separation Processes\nCN3135: Process Safety, Health and Environment", + "corequisite": "EG2401/EG2401A: Engineering Professionalism" + }, + { + "moduleCode": "CN4251", + "title": "Troubleshooting with Case Studies for Process Engineers", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CN2116: Chemical Kinetics and Reactor Design\nCN2121: Chemical Engineering Thermodynamics\nCN2125: Heat and Mass Transfer\nCN3132: Separation Processes", + "corequisite": "" + }, + { + "moduleCode": "CN4291", + "title": "Selected Topics in Chemical Engineering", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CN2116 Chemical Kinetics and Reactor Design\nCN3124 Particle Technology\nCN3132 Separation Processes\nCN3135 Process Safety, Health and Environment\nCN3421 Process Modelling and Numerical Simulation", + "corequisite": "" + }, + { + "moduleCode": "CN5010", + "title": "Mathematical & Computing Methods for Chemical Engineers", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN5020", + "title": "Advanced Reaction Engineering", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN5030", + "title": "Advanced Chemical Engineering Thermodynamics", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN5040", + "title": "Advanced Transport Phenomena", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN5050", + "title": "Advanced Separation Processes", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN5111", + "title": "Optimization of Chemical Processes", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN5111B", + "title": "Process Optimization with Industrial Applications", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "Calculus, linear algebra and numerical methods at undergraduate level", + "corequisite": "" + }, + { + "moduleCode": "CN5131", + "title": "Colloids & Surfaces", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN5161", + "title": "Polymer Processing Engineering", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "CN4203", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN5162", + "title": "Advanced Polymeric Materials", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN5172", + "title": "Biochemical Engineering", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "CN4208", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN5173", + "title": "Downstream Processing of Biochemical & Pharmaceutical Products", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "CN4231", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "CN3132", + "corequisite": "" + }, + { + "moduleCode": "CN5181", + "title": "Computer Aided Chemical Engineering", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "CN4229", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN5191", + "title": "Project Engineering", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "CN4225", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN5192", + "title": "Future Fuel Options: Prospects and Technologies", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN5193", + "title": "Instrumental Methods of Analysis", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN5215", + "title": "Atomistic Modelling of Molecules and Materials", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN5222", + "title": "Pharmaceuticals & Fine Chemicals", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "CN4232", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN5251", + "title": "Membrane Science & Technology", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN5252", + "title": "Metabolic Engineering", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Linear algebra and numerical methods at undergraduate level, Fundamentals of Biochemistry", + "corequisite": "" + }, + { + "moduleCode": "CN5371", + "title": "Special Topics in Biochemical Engineering and Bioseparations", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN5391", + "title": "Selected Topics in Advanced Chemical Engineering I", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN5392", + "title": "Selected Topics in Advanced Chemical Engineering II", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN5401", + "title": "Contemporary Topics in Advanced Chemical Engineering", + "moduleCredit": 2, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN5555", + "title": "Chemical Engineering Project", + "moduleCredit": 8, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN5666", + "title": "Industrial Attachment", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN5999", + "title": "Graduate Seminars", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN6020", + "title": "Advanced Reaction Engineering", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN6162", + "title": "Advanced Polymeric Materials", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "CN5162", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN6163", + "title": "Inorganic Nanomaterials for Sustainability", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CN5020 Advanced Reaction Engineering, or CN5030 Advanced Chem Eng Thermodynamics, or equivalent, or Lecturers' Permission. This module is designed for Ph.D. and M.Eng. students.", + "corequisite": "" + }, + { + "moduleCode": "CN6222", + "title": "Pharmaceuticals & Fine Chemicals", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "CN4232 and CN5222", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN6251", + "title": "Membrane Science & Technology", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "CN5251", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CN6999", + "title": "Doctoral Seminars", + "moduleCredit": 8, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "COS2000", + "title": "Computational Thinking for Scientists", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CP2106", + "title": "Independent Software Development Project (Orbital)", + "moduleCredit": 4, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "CS2103 Software Engineering or its equivalent", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS1010 Programming Methodology or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "CP2201", + "title": "Journey of the Innovator", + "moduleCredit": 2, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CP2202", + "title": "Work Experience Internship", + "moduleCredit": 4, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "Full-time undergraduate students who have accumulated more than 12 MCs for previous internship stints.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This internship module is open to full-time undergraduate students who have completed at least 60MCs and plan to proceed on an approved internship of at least 10 weeks in duration in the vacation period.", + "corequisite": "" + }, + { + "moduleCode": "CP3101", + "title": "Topics in Computing", + "moduleCredit": 4, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Depends on the topic being offered.", + "corequisite": "" + }, + { + "moduleCode": "CP3101A", + "title": "Global Open Source Project", + "moduleCredit": 4, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2103 or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "CP3106", + "title": "Independent Project", + "moduleCredit": 4, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "[(CS2102 or CS2102S) and CS2105 and read (CS3214 or CS3215)] or IS3102 or IS4102 or CS3201 or CS3281 or CS4201 or CS4203", + "corequisite": "" + }, + { + "moduleCode": "CP3107", + "title": "Computing for Voluntary Welfare Organisations", + "moduleCredit": 6, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2010 or CS2020 or (((CS2030 or its equivalent) or CS2113/T) and CS2040/C). Student selection process will be enforced.", + "corequisite": "" + }, + { + "moduleCode": "CP3108A", + "title": "Independent Work", + "moduleCredit": 2, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "CS3108A", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CP3108B", + "title": "Independent Work", + "moduleCredit": 4, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "CS3108B", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CP3109", + "title": "Overseas Exploratory Project", + "moduleCredit": 2, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "CS3109", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CP3110", + "title": "Computing for Voluntary Welfare Organisations II", + "moduleCredit": 6, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CP3107", + "corequisite": "" + }, + { + "moduleCode": "CP3200", + "title": "Internship", + "moduleCredit": 6, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students can only take this module after completing 70\nMCs. Student Selection process will be enforced", + "corequisite": "Students can only take this module after completing 70" + }, + { + "moduleCode": "CP3201", + "title": "Industry Seminar", + "moduleCredit": 2, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students can only take this module after completing 70 MCs", + "corequisite": "" + }, + { + "moduleCode": "CP3202", + "title": "Internship II", + "moduleCredit": 6, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CP3200 Internship", + "corequisite": "" + }, + { + "moduleCode": "CP3208", + "title": "Undergraduate Research in Computing I", + "moduleCredit": 4, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "CS3208", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SoC students who have passed at least 60 MCs and with approval from respective department.", + "corequisite": "" + }, + { + "moduleCode": "CP3209", + "title": "Undergraduate Research Project in Computing", + "moduleCredit": 8, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "Completed 60MCs", + "corequisite": "" + }, + { + "moduleCode": "CP3880", + "title": "Advanced Technology Attachment Programme", + "moduleCredit": 12, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "EG3601", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(IS2101 Business and Technical Communication or CS2101 Effective Communication for Computing Professionals or their equivalents)\nand\n(CS2103/CS2103T Software Engineering or IS2103 Enterprise Systems Development Concepts or IS2150 E-Business Design and Implementation or BT2101 IT and Decision Making)", + "corequisite": "" + }, + { + "moduleCode": "CP3881", + "title": "Incubation Project", + "moduleCredit": 12, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "CS3881", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CP4101", + "title": "B.Comp. Dissertation", + "moduleCredit": 12, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "CS4101", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "Attain at least 70% of the MC requirement for the respective degree", + "corequisite": "" + }, + { + "moduleCode": "CP4106", + "title": "Computing Project", + "moduleCredit": 8, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "CG4001, BT4101, CP4101, or any Integrated Honours Thesis/Project/Dissertation module", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "Completed at least 112 MCs for the respective degree.", + "corequisite": "" + }, + { + "moduleCode": "CP5010", + "title": "Graduate Research Paper", + "moduleCredit": 0, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CP5101", + "title": "MComp Dissertation", + "moduleCredit": 16, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "- CP5102 (MComp Information Security Project - 8MC)\n- CP5103 (Master of Computing Project – 8MC)\n- CP5104 (Graduate Project in Computing – 4MC)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CP5102", + "title": "MComp Information Security Project", + "moduleCredit": 8, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must be in Master of Computing programme, Infocomm Security specialisation", + "corequisite": "" + }, + { + "moduleCode": "CP5103", + "title": "Master of Computing Project", + "moduleCredit": 8, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "CP5101 (MComp Dissertation), CP5102 (MComp\nInformation Security Project) or any project/ dissertation\nmodule.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must be in Master of Computing programme.", + "corequisite": "" + }, + { + "moduleCode": "CP5104", + "title": "Graduate Project in Computing", + "moduleCredit": 4, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "CP5101", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Student must be enrolled in a postgraduate programme.", + "corequisite": "" + }, + { + "moduleCode": "CP6010", + "title": "Doctoral Seminar", + "moduleCredit": 0, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS1010", + "title": "Programming Methodology", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "CS1010E, CS1010J, CS1010S, CS1010X, CS1010XCP, CS1101S", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS1010E", + "title": "Programming Methodology", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "CS1010, CS1010J, CS1010S, CS1010X, CS1010XCP, CS1101S", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS1010J", + "title": "Programming Methodology", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "CS1010 and its equivalents", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS1010R", + "title": "Programming Methodology", + "moduleCredit": 1, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "CG1101, CS1010, CS1010E, CS1101, CS1101C, CZ1102, IT1002, Engineering students", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Co-read with host module in current semester or pass host module in previous semester. Student selection process is enforced.", + "corequisite": "" + }, + { + "moduleCode": "CS1010S", + "title": "Programming Methodology", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "CS1010, CS1010E, CS1010J, CS1010X, CS1010XCP, CS1101S", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS1010X", + "title": "Programming Methodology", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "CS1010 or its equivalent, CS1010FC", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS1010XCP", + "title": "Programming Methodology", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "CS1010 or its equivalent, CS1010FC", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS1020", + "title": "Data Structures and Algorithms I", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "CS1020E, CS2020, CS2030, CS2040, CS2040C", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS1010 Programming Methodology", + "corequisite": "" + }, + { + "moduleCode": "CS1020E", + "title": "Data Structures and Algorithms I", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "CS1020, CS2020, CS2030, CS2040, CS2040C", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS1010E or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "CS1101S", + "title": "Programming Methodology", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "CS1010 or its equivalents", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS1105A", + "title": "Computing and Society", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS1231", + "title": "Discrete Structures", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "MA1100, CS1231S", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "A-level Mathematics or H2 Mathematics or MA1301 or MA1301FC or MA1301X", + "corequisite": "" + }, + { + "moduleCode": "CS1231R", + "title": "Discrete Structures", + "moduleCredit": 1, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "MA1100", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Co-read with host module in current semester or pass host module in previous semester. Student selection process is enforced.", + "corequisite": "" + }, + { + "moduleCode": "CS1231S", + "title": "Discrete Structures", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "MA1100 and CS1231 or its equivalent", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "A-level Mathematics or H2 Mathematics or MA1301 or MA1301FC or MA1301X", + "corequisite": "" + }, + { + "moduleCode": "CS1300", + "title": "Unrestricted Electives for Poly Candidates", + "moduleCredit": 8, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS2002", + "title": "External Module", + "moduleCredit": 4, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS2003", + "title": "Exchange CS Module", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS2004", + "title": "Exchange CS Module", + "moduleCredit": 1, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS2006", + "title": "Exchange CS Module", + "moduleCredit": 3, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS2010", + "title": "Data Structures and Algorithms II", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "CS2020, CS2030, CS2040, CS2040C", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS1020 or CS1020E or CG1103 Data Structures and Algorithms I", + "corequisite": "" + }, + { + "moduleCode": "CS2010R", + "title": "Data Structures and Algorithms II", + "moduleCredit": 1, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "CG1102, CS1102, CS1102C, CS1102S, CS2020", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Co-read with host module in current semester or pass host module in previous semester. Student selection process is enforced.", + "corequisite": "" + }, + { + "moduleCode": "CS2020", + "title": "Data Structures and Algorithms Accelerated", + "moduleCredit": 6, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "CS1020, CS1020E, CS2010, CS2030, CS2040, CS2040C", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Obtain a grade of at least A- in either CS1010 or CS1101S or CS1010S or CS1010FC or their equivalents", + "corequisite": "Obtain a grade of at least A− in either CS1010 or CS1101S Programming Methodology" + }, + { + "moduleCode": "CS2030", + "title": "Programming Methodology II", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "CS2030S", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS1010 or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "CS2030S", + "title": "Programming Methodology II", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "CS2030", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS1010 or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "CS2040", + "title": "Data Structures and Algorithms", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "CS1020, CS1020E, CS2020, CS2010, CS2040C, CS2040S", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS1010 or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "CS2040C", + "title": "Data Structures and Algorithms", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "CS1020, CS1020E, CS2020, CS2010, CS2040, CS2040S", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS1010 or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "CS2040S", + "title": "Data Structures and Algorithms", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "CS1020, CS1020E, CS2020, CS2010, CS2040, CS2040C", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(MA1100 or (CS1231 or its equivalent)) and (CS1010 or its equivalent)", + "corequisite": "" + }, + { + "moduleCode": "CS2100", + "title": "Computer Organisation", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "CS1104 or Students from Department of ECE", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS1010 or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "CS2100R", + "title": "Computer Organisation", + "moduleCredit": 1, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "CS1104 or Students from Department of ECE", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Co-read with host module in current semester or pass host module in previous semester. Student selection process is enforced.", + "corequisite": "" + }, + { + "moduleCode": "CS2101", + "title": "Effective Communication for Computing Professionals", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "CS2103 Software Engineering, IS2101 Business Technical Communication or its equivalent, ES2002, ES2007D, and ES1601.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students have to complete ES1000 and/or ES1103 (if required to take the module/s) before reading this module.", + "corequisite": "Students have to read CS2103T Software Engineering at the same time as this module." + }, + { + "moduleCode": "CS2102", + "title": "Database Systems", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "CS2102S, IT2002", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "((CS1020 or its equivalent) or CS2020 or (CS2030 or its equivalent) or (CS2040 or its equivalent)) \nand (MA1100 or (CS1231 or its equivalent))", + "corequisite": "" + }, + { + "moduleCode": "CS2102R", + "title": "Database Systems", + "moduleCredit": 1, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "CS2102S, IT2002", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS1020 or its equivalent) and (CS1231 or MA1100)", + "corequisite": "" + }, + { + "moduleCode": "CS2103", + "title": "Software Engineering", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "CS2103T, CS2113, CS2113T", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS1020 or its equivalent) or CS2020 or ((CS2030 or its equivalent) and (CS2040 or its equivalent))", + "corequisite": "" + }, + { + "moduleCode": "CS2103R", + "title": "Software Engineering", + "moduleCredit": 1, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Co-read with host module in current semester or pass host module in previous semester. Student selection process is enforced.", + "corequisite": "" + }, + { + "moduleCode": "CS2103T", + "title": "Software Engineering", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "CS2103, CS2113, CS2113T, IS2101 or its equivalent.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For SoC students only. (CS1020 or its equivalent) or CS2020 or ((CS2030 or its equivalent) and (CS2040 or its equivalent))", + "corequisite": "Students have to read CS2101 Effective Communication for Computing Professionals at the same time as this module" + }, + { + "moduleCode": "CS2104", + "title": "Programming Language Concepts", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS1020 or its equivalent) or CS2020 or (CS2030 or its equivalent) or CS2113/T", + "corequisite": "" + }, + { + "moduleCode": "CS2104R", + "title": "Programming Language Concepts", + "moduleCredit": 1, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Co-read with host module in current semester or pass host module in previous semester. Student selection process is enforced.", + "corequisite": "" + }, + { + "moduleCode": "CS2105", + "title": "Introduction to Computer Networks", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "IT2001, EE3204/E, EE4204/E, EE4210/E. CEG, CPE and EEE students are not allowed to take this module.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS1020 or its equivalent) or CS2020 or (CS2040 or its equivalents)", + "corequisite": "" + }, + { + "moduleCode": "CS2105R", + "title": "Introduction to Computer Networks", + "moduleCredit": 1, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Co-read with host module in current semester or pass host module in previous semester. Student selection process is enforced.", + "corequisite": "" + }, + { + "moduleCode": "CS2106", + "title": "Introduction to Operating Systems", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "CG2271 or EE4214. CEG students are not allowed to take this module.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2100 or EE2007 or EE2024 or EE2028", + "corequisite": "" + }, + { + "moduleCode": "CS2106R", + "title": "Introduction to Operating Systems", + "moduleCredit": 1, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "CG2271 or EE4214. CEG students are not allowed to take this module.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Co-read with host module in current semester or pass host module in previous semester. Student selection process is enforced.", + "corequisite": "" + }, + { + "moduleCode": "CS2107", + "title": "Introduction to Information Security", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS1010 or its equivalence", + "corequisite": "" + }, + { + "moduleCode": "CS2108", + "title": "Introduction to Media Computing", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "CS3246", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS1020 or its equivalent) or CS2020 or (CS2040 or its equivalent)", + "corequisite": "" + }, + { + "moduleCode": "CS2113", + "title": "Software Engineering & Object-Oriented Programming", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "CS2103, CS2103T, (CS2113T for CS2113), (CS2113 for CS2113T)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2040C or ((CS2030 or its equivalent) and CS2040/S)", + "corequisite": "CS2101 Effective Communication for Computing Professionals is co-requisite for CS2113T. Students exempted from CS2101 will take CS2113 which does not have CS2101 as co-req. Otherwise, CS2113 and CS2113T are identical." + }, + { + "moduleCode": "CS2113T", + "title": "Software Engineering & Object-Oriented Programming", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "CS2103, CS2103T, (CS2113T for CS2113), (CS2113 for CS2113T)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2040C or ((CS2030 or its equivalent) and CS2040/S)", + "corequisite": "CS2101 Effective Communication for Computing Professionals is co-requisite for CS2113T. Students exempted from CS2101 will take CS2113 which does not have CS2101 as co-req. Otherwise, CS2113 and CS2113T are identical." + }, + { + "moduleCode": "CS2220", + "title": "Introduction to Computational Biology", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS1020 or its equivalent) or CS2020 or (CS2040 or its equivalent)", + "corequisite": "" + }, + { + "moduleCode": "CS2220R", + "title": "Introduction to Computational Biology", + "moduleCredit": 1, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Co-read with host module in current semester or pass host module in previous semester. Student selection process is enforced.", + "corequisite": "" + }, + { + "moduleCode": "CS2309", + "title": "CS Research Methodology", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "CS2305S", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS2010 or its equivalent) or CS2020 or ((CS2030 or its equivalent) or CS2113/T) and (CS2040 or its equivalent))\nand \n(MA1100 or (CS1231 or its equivalent))", + "corequisite": "" + }, + { + "moduleCode": "CS3001", + "title": "External Module", + "moduleCredit": 4, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS3002", + "title": "Exchange CS Module", + "moduleCredit": 4, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS3003", + "title": "Exchange CS Module", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS3004", + "title": "Exchange CS Module", + "moduleCredit": 1, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS3005", + "title": "Exchange CS Module", + "moduleCredit": 2, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS3006", + "title": "Exchange CS Module", + "moduleCredit": 3, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS3103", + "title": "Computer Networks Practice", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2105 or EE3204/E or EE4204", + "corequisite": "" + }, + { + "moduleCode": "CS3201", + "title": "Software Engineering Project I", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "CS3215", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS2103 or its equivalent) and (CS2101 or IS2101)", + "corequisite": "CS3202 Software Engineering Project II" + }, + { + "moduleCode": "CS3201R", + "title": "Software Engineering Project I", + "moduleCredit": 1, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "CS3215", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Co-read with host module in current semester or pass host module in previous semester. Student selection process is enforced.", + "corequisite": "CS3202 Software Engineering Project II" + }, + { + "moduleCode": "CS3202", + "title": "Software Engineering Project II", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "CS3215 Software Engineering Project", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2103 Software Engineering or its equivalent.", + "corequisite": "CS3201 Software Engineering Project I" + }, + { + "moduleCode": "CS3202R", + "title": "Software Engineering Project II", + "moduleCredit": 1, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "CS3215 Software Engineering Project", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Co-read with host module in current semester or pass host module in previous semester. Student selection process is enforced.", + "corequisite": "" + }, + { + "moduleCode": "CS3203", + "title": "Software Engineering Project", + "moduleCredit": 8, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "CS3201, CS3202", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS2103/T or CS2113/T)", + "corequisite": "" + }, + { + "moduleCode": "CS3210", + "title": "Parallel Computing", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2100 or CG2007 or CG2028 or EE2024 or EE2028", + "corequisite": "" + }, + { + "moduleCode": "CS3211", + "title": "Parallel and Concurrent Programming", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2106 or CG2271", + "corequisite": "" + }, + { + "moduleCode": "CS3216", + "title": "Software Product Engineering for Digital Markets", + "moduleCredit": 5, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2103 or its equivalent or with special approval from instructor. Students will submit personal statements to apply for a place in the course instead of bidding through the CORS system.", + "corequisite": "" + }, + { + "moduleCode": "CS3217", + "title": "Software Engineering on Modern Application Platforms", + "moduleCredit": 5, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2103 or its equivalent or with special approval from instructor. Students will submit personal statements to apply for a place in the course instead of bidding through the CORS system.", + "corequisite": "" + }, + { + "moduleCode": "CS3218", + "title": "Multimodal Processing in Mobile Platforms", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "((CS1020 or its equivalent) or \n(CS2030 or its equivalent) or \n(CS2040 or its equivalent)) and \n(MA1101R or MA1311 or MA1508E or MA1513) and \n(MA1102R or MA1505 or MA1507 or (MA1511 and MA1512) or MA1521)", + "corequisite": "" + }, + { + "moduleCode": "CS3219", + "title": "Software Engineering Principles and Patterns", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "CS3213 Software Systems Design", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2103 or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "CS3219R", + "title": "Software Engineering Principles and Patterns", + "moduleCredit": 1, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "CS3213 Software Systems Design", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Co-read with host module in current semester or pass host module in previous semester. Student selection process is enforced.", + "corequisite": "" + }, + { + "moduleCode": "CS3220", + "title": "Computer Architecture", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "EEE & CPE students are not allowed to take this module as cfm/breadth.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2106", + "corequisite": "" + }, + { + "moduleCode": "CS3221", + "title": "Operating Systems Design and Pragmatics", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS1020 or its equivalent) and CS2106", + "corequisite": "" + }, + { + "moduleCode": "CS3223", + "title": "Database Systems Implementation", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "((CS2010 or its equivalent) or CS2020 or (CS2040 or its equivalent)) and (CS2102 or IT2002)", + "corequisite": "" + }, + { + "moduleCode": "CS3223R", + "title": "Database Systems Implementation", + "moduleCredit": 1, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Co-read with host module in current semester or pass host module in previous semester. Student selection process is enforced.", + "corequisite": "" + }, + { + "moduleCode": "CS3225", + "title": "Combinatorial Methods in Bioinformatics", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS2010 or CS2020 or CS2040 or CS2040C) and (CS2220 or LSM2104)", + "corequisite": "" + }, + { + "moduleCode": "CS3226", + "title": "Web Programming and Applications", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "CP3101B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2010 or CS2020 or (CS2030 or its equivalent) or CS2113/T", + "corequisite": "" + }, + { + "moduleCode": "CS3230", + "title": "Design and Analysis of Algorithms", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "EEE and CPE students can only take this module as a technical elective to satisfy the program requirements or UEM but not CFM/ULR-Breadth.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "((CS2010 or its equivalent) or CS2020 or (CS2040 or its equivalent)) and (MA1100 or (CS1231 or its equivalent))", + "corequisite": "" + }, + { + "moduleCode": "CS3230R", + "title": "Design and Analysis of Algorithms", + "moduleCredit": 1, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Co-read host module. Student selection process is enforced.", + "corequisite": "" + }, + { + "moduleCode": "CS3233", + "title": "Competitive Programming", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "At least grade A- in (CS2010 or CS2020 or (both CS2030 and CS2040)) or special permission", + "corequisite": "" + }, + { + "moduleCode": "CS3233R", + "title": "Competitive Programming", + "moduleCredit": 1, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Co-read with host module in current semester or pass host module in previous semester. Student selection process is enforced.", + "corequisite": "" + }, + { + "moduleCode": "CS3234", + "title": "Logic for Proofs and Programs", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1100 or (CS1231 or its equivalent); Programming experience is preferred.", + "corequisite": "" + }, + { + "moduleCode": "CS3234R", + "title": "Logic and Formal Systems", + "moduleCredit": 1, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Co-read with host module in current semester or pass host module in previous semester. Student selection process is enforced.", + "corequisite": "" + }, + { + "moduleCode": "CS3235", + "title": "Computer Security", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS2105 or EE3204 or EE4204) and (CS2106 or CG2271) and CS2107", + "corequisite": "" + }, + { + "moduleCode": "CS3236", + "title": "Introduction to Information Theory", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(MA1100 or (CS1231 or its equivalent)) and \n(EE2012/A or MA2216 or ST2131 or ST2334)", + "corequisite": "" + }, + { + "moduleCode": "CS3236R", + "title": "Introduction to Information Theory", + "moduleCredit": 1, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "same as CS3236", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Co-read with host module in current semester or pass host module in previous semester. Student selection process is enforced.", + "corequisite": "" + }, + { + "moduleCode": "CS3237", + "title": "Introduction to Internet of Things", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS1010 or equivalent) and (CG2028 or CS2100 or EE2024 or EE2028)", + "corequisite": "" + }, + { + "moduleCode": "CS3240", + "title": "Interaction Design", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS1020 or its equivalent) or CS2020 or (CS2030 or its equivalent) or CS2113/T or NM3209 or NM2207/Y", + "corequisite": "" + }, + { + "moduleCode": "CS3240R", + "title": "Interaction Design", + "moduleCredit": 1, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Co-read with host module in current semester or pass host module in previous semester. Student selection process is enforced.", + "corequisite": "" + }, + { + "moduleCode": "CS3241", + "title": "Computer Graphics", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "EEE and CPE students can only take this module as a technical elective to satisfy the program requirements or UEM but not CFM/ULR-Breadth.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS2010 or its equivalent) or CS2020 or (((CS2030 or its equivalent) or CS2113/T) and ((CS2040 or its equivalent)))", + "corequisite": "" + }, + { + "moduleCode": "CS3241R", + "title": "Computer Graphics", + "moduleCredit": 1, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Co-read with host module in current semester or pass host module in previous semester. Student selection process is enforced.", + "corequisite": "" + }, + { + "moduleCode": "CS3242", + "title": "3D Modeling and Animation", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "CS4342", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3241 and (PC1221 or PC1221X) and \n(MA1101R or MA1311 or MA1508E or MA1513) and \n(MA1102R or MA1505 or MA1507 or (MA1511 and MA1512) or MA1521)", + "corequisite": "" + }, + { + "moduleCode": "CS3243", + "title": "Introduction to Artificial Intelligence", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "EEE and CPE students can only take this module as a technical elective to satisfy the program requirements or UEM but not CFM/ULR-Breadth.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "((CS2010 or its equivalent) or CS2020 or (CS2040 or its equivalent))\nand (MA1100 or (CS1231 or its equivalent))", + "corequisite": "" + }, + { + "moduleCode": "CS3243R", + "title": "Introduction to Artificial Intelligence", + "moduleCredit": 1, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "EEE and CPE students can only take this module as a technical elective to satisfy the program requirements or UEM but not CFM/ULR-Breadth.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Co-read with host module in current semester or pass host module in previous semester. Student selection process is enforced.", + "corequisite": "" + }, + { + "moduleCode": "CS3244", + "title": "Machine Learning", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "IT3011, BT4240", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS2010 or CS2020 or CS2040 or its equivalent) and \n(MA1101R or MA1311 or MA1508E or MA1513) and \n(MA1102R or MA1505 or MA1507 or (MA1511 and MA1512) or MA1521) and \n(EE2012/A or MA2216 or ST2131 or ST2334)", + "corequisite": "" + }, + { + "moduleCode": "CS3244R", + "title": "Machine Learning", + "moduleCredit": 1, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Co-read with host module in current semester or pass host module in previous semester. Student selection process is enforced.", + "corequisite": "" + }, + { + "moduleCode": "CS3245", + "title": "Information Retrieval", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS2010 or its equivalent) or CS2020 or (CS2040 or its equivalent)", + "corequisite": "" + }, + { + "moduleCode": "CS3245R", + "title": "Information Retrieval", + "moduleCredit": 1, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Co-read with host module in current semester or pass host module in previous semester. Student selection process is enforced.", + "corequisite": "" + }, + { + "moduleCode": "CS3247", + "title": "Game Development", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3241", + "corequisite": "" + }, + { + "moduleCode": "CS3249", + "title": "User Interface Development", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2103 or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "CS3271", + "title": "Software Engineering for Reactive Systems", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "EE3304, EE/CPE students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CG2271 or CS2271", + "corequisite": "" + }, + { + "moduleCode": "CS3281", + "title": "Thematic Systems Project I", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS2103 or its equivalent) and have passed at least one primary module in a CS focus area. Student selection process will be enforced.", + "corequisite": "" + }, + { + "moduleCode": "CS3281R", + "title": "Thematic Systems Project I", + "moduleCredit": 1, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Co-read with host module in current semester or pass host module in previous semester. Student selection process is enforced.", + "corequisite": "" + }, + { + "moduleCode": "CS3282", + "title": "Thematic Systems Project II", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3281 and have passed at least two primary modules in a CS focus area. Student selection process will be enforced.", + "corequisite": "" + }, + { + "moduleCode": "CS3282R", + "title": "Thematic Systems Project II", + "moduleCredit": 1, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Co-read with host module in current semester or pass host module in previous semester. Student selection process is enforced.", + "corequisite": "" + }, + { + "moduleCode": "CS3283", + "title": "Media Technology Project I", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "CS4201, CS4202, CS4203, CS4204.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SoC students: (CS2103 or CS2103T) and (CS3218 or CS3240 or CS3241 or CS3242 or CS3245 or CS3246 or CS3247 or CS3249 or module approved by Department of Computer Science); Other students: NM3216 or NM3221 or NM3226 or NM3227 or NM3231 or the prerequisites for SoC students", + "corequisite": "" + }, + { + "moduleCode": "CS3284", + "title": "Media Technology Project II", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "CS4201, CS4202, CS4203, CS4204.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3283 Media Technology Project I", + "corequisite": "" + }, + { + "moduleCode": "CS3882", + "title": "Breakthrough Ideas for Digital Markets", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Read and passed 80 MCs of modules. Students from Engineering, Science, and FASS with sufficient computing background and have read and passed 80 MCs of module may also apply to read. Student selection process will be enforced.", + "corequisite": "" + }, + { + "moduleCode": "CS4001", + "title": "SEP Module", + "moduleCredit": 4, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS4002", + "title": "Exchange CS Module", + "moduleCredit": 4, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS4003", + "title": "Exchange CS Module", + "moduleCredit": 4, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS4004", + "title": "Exchange CS Module", + "moduleCredit": 1, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS4005", + "title": "Exchange CS Module", + "moduleCredit": 2, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS4007", + "title": "Exchange CS Module", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS4008", + "title": "Exchange CS Module", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS4211", + "title": "Formal Methods for Software Engineering", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2103 or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "CS4212", + "title": "Compiler Design", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2104 Programming Language", + "corequisite": "" + }, + { + "moduleCode": "CS4214", + "title": "Formal Semantics", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2104 or CS3212 or CS3234", + "corequisite": "" + }, + { + "moduleCode": "CS4215", + "title": "Programming Language Implementation", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS2010 or its equivalent) or CS2020 or (((CS2030 or its equivalent) or CS2113/T) and ((CS2040 or its equivalent)))", + "corequisite": "" + }, + { + "moduleCode": "CS4215R", + "title": "Programming Language Implementation", + "moduleCredit": 1, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Co-read with host module in current semester or pass host module in previous semester. Student selection process is enforced.", + "corequisite": "" + }, + { + "moduleCode": "CS4216", + "title": "Constraint Logic Programming", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2104 Programming Language Concepts.", + "corequisite": "" + }, + { + "moduleCode": "CS4218", + "title": "Software Testing", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3219 Software Engineering Principles and Patterns.", + "corequisite": "" + }, + { + "moduleCode": "CS4220", + "title": "Knowledge Discovery Methods in Bioinformatics", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2220 or LSM2241", + "corequisite": "" + }, + { + "moduleCode": "CS4220R", + "title": "Knowledge Discovery Methods in Bioinformatics", + "moduleCredit": 1, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Co-read with host module in current semester or pass host module in previous semester. Student selection process is enforced.", + "corequisite": "" + }, + { + "moduleCode": "CS4221", + "title": "Database Applications Design and Tuning", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "CS5421", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3223", + "corequisite": "" + }, + { + "moduleCode": "CS4222", + "title": "Wireless Networking", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "CS5422", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS2105 or EE3204/E or EE4204) and \n(EE2012/A or MA2216 or ST2131 or ST2334)", + "corequisite": "" + }, + { + "moduleCode": "CS4223", + "title": "Multi-core Architectures", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS2106 Operating Systems or CG2271 Realtime Operating Systems) and (CS3210 Parallel Computing or CS3220 Computer Architecture or CG3207 Computer Architecture).", + "corequisite": "" + }, + { + "moduleCode": "CS4223R", + "title": "Multi-core Architectures", + "moduleCredit": 1, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Co-read with host module in current semester or pass host module in previous semester. Student selection process is enforced.", + "corequisite": "" + }, + { + "moduleCode": "CS4224", + "title": "Distributed Databases", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "CS5424", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3223", + "corequisite": "" + }, + { + "moduleCode": "CS4225", + "title": "Big Data Systems for Data Science", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "BT4221 and CS5425", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2102 or IT2002", + "corequisite": "" + }, + { + "moduleCode": "CS4226", + "title": "Internet Architecture", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS2105 or EE3204 or EE4204) and \n(EE2012/A or MA2216 or ST2131 or ST2334)", + "corequisite": "" + }, + { + "moduleCode": "CS4231", + "title": "Parallel and Distributed Algorithms", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3230 Design and Analysis of Algorithms or CS3210 Parallel Computing", + "corequisite": "" + }, + { + "moduleCode": "CS4232", + "title": "Theory of Computation", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS1231 or CS1231S or any level-2 MA module", + "corequisite": "" + }, + { + "moduleCode": "CS4232R", + "title": "Theory of Computation", + "moduleCredit": 1, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Co-read with host module in current semester or pass host module in previous semester. Student selection process is enforced.", + "corequisite": "" + }, + { + "moduleCode": "CS4234", + "title": "Optimisation Algorithms", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3230 and \n(MA1101R or MA1311 or MA1508E or MA1513)", + "corequisite": "" + }, + { + "moduleCode": "CS4234R", + "title": "Optimisation Algorithms", + "moduleCredit": 1, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Co-read with host module in current semester or pass host module in previous semester. Student selection process is enforced.", + "corequisite": "" + }, + { + "moduleCode": "CS4235", + "title": "Computational Geometry", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3230 and (MA1101R or MA1506)", + "corequisite": "" + }, + { + "moduleCode": "CS4236", + "title": "Cryptography Theory and Practice", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "((CS2010 or its equivalent) or CS2020 or (CS2040 or its equivalent)) and (MA1100 or (CS1231 or its equivalent)) and CS2107", + "corequisite": "" + }, + { + "moduleCode": "CS4238", + "title": "Computer Security Practice", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3235 Computer Security", + "corequisite": "" + }, + { + "moduleCode": "CS4239", + "title": "Software Security", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "CS5439", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3235 Computer Security and (CS2103 or its equivalent)", + "corequisite": "" + }, + { + "moduleCode": "CS4240", + "title": "Interaction Design for Virtual and Augmented Reality", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3240 and (MA1301 or A-level / H2 Mathematics)", + "corequisite": "" + }, + { + "moduleCode": "CS4240R", + "title": "Interaction Design for Virtual and Augmented Reality", + "moduleCredit": 1, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Co-read with host module in current semester or pass host module in previous semester. Student selection process is enforced.", + "corequisite": "" + }, + { + "moduleCode": "CS4241", + "title": "Multimedia Information Retrieval", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3245 Information Retrieval and CS3246 Hypermedia and World Wide Web", + "corequisite": "" + }, + { + "moduleCode": "CS4242", + "title": "Social Media Computing", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2108 Introduction to Media Computing and CS3245 Information Retrieval.", + "corequisite": "" + }, + { + "moduleCode": "CS4243", + "title": "Computer Vision and Pattern Recognition", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "EE4212 Computer Vision", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "((CS1020 or its equivalent) or (((CS2030 or its equivalent) or CS2113/T) and (CS2040 or its equivalent))) and \n(MA1101R or MA1311 or MA1508E or MA1513) and \n(MA1102R or MA1505 or MA1507 or (MA1511 and MA1512) or MA1521) and \n(EE2012/A or MA2216 or ST1131/A or ST1232 or ST2131 or ST2334)", + "corequisite": "" + }, + { + "moduleCode": "CS4243R", + "title": "Computer Vision and Pattern Recognition", + "moduleCredit": 1, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Co-read with host module in current semester or pass host module in previous semester. Student selection process is enforced.", + "corequisite": "" + }, + { + "moduleCode": "CS4244", + "title": "Knowledge Representation and Reasoning", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3243", + "corequisite": "" + }, + { + "moduleCode": "CS4246", + "title": "AI Planning and Decision Making", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "CS5446", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3243 and \n(EE2012/A or ST2132 or ST2334 or ((MA2216 or ST2131) and (ST1131/A or ST1232 or DSC2008)))", + "corequisite": "" + }, + { + "moduleCode": "CS4246R", + "title": "AI Planning and Decision Making", + "moduleCredit": 1, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Co-read with host module in current semester or pass host module in previous semester. Student selection process is enforced.", + "corequisite": "" + }, + { + "moduleCode": "CS4247", + "title": "Graphics Rendering Techniques", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3241", + "corequisite": "" + }, + { + "moduleCode": "CS4248", + "title": "Natural Language Processing", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS3243 or CS3245) and \n(EE2012/A or MA2216 or ST2131 or ST2334)", + "corequisite": "" + }, + { + "moduleCode": "CS4248R", + "title": "Natural Language Processing", + "moduleCredit": 1, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Co-read with host module in current semester or pass host module in previous semester. Student selection process is enforced.", + "corequisite": "" + }, + { + "moduleCode": "CS4249", + "title": "Phenomena and Theories of Human-Computer Interaction", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3240 or NM2213 or NM2216", + "corequisite": "" + }, + { + "moduleCode": "CS4257", + "title": "Algorithmic Foundations of Privacy", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2107 and CS3230 and \n(EE2012/A or ST2132 or ST2334 or ((MA2216 or ST2131) and (ST1131/A or ST1232 or DSC2008)))", + "corequisite": "" + }, + { + "moduleCode": "CS4261", + "title": "Algorithmic Mechanism Design", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "CS5461", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS2010 or CS2020 or CS2040 or its equivalent) and ((MA1100 or (CS1231 or its equivalent)) and \n(MA1101R or MA1311 or MA1508E or MA1513) and \n(EE2012/A or MA2216 or ST2131 or ST2334)", + "corequisite": "" + }, + { + "moduleCode": "CS4268", + "title": "Quantum Computing", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3230 and \n(MA1101R or MA1311 or MA1508E or MA1513) and \n(EE2012/A or MA2216 or ST2131 or ST2334)", + "corequisite": "" + }, + { + "moduleCode": "CS4269", + "title": "Fundamentals of Logic in Computer Science", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "CS5469", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS2010 or CS2020 or CS2040/C/S) and (CS1231/S or MA1100).", + "corequisite": "" + }, + { + "moduleCode": "CS4276", + "title": "IoT Security", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "CS5476", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CG3002 or CG4002 or CS3237", + "corequisite": "" + }, + { + "moduleCode": "CS4277", + "title": "3D Computer Vision", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "CS5477", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(MA1101R or MA1311 or MA1506 or MA1508E) and (CS2040 or its equivalent)", + "corequisite": "" + }, + { + "moduleCode": "CS4278", + "title": "Intelligent Robots: Algorithms and Systems", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "CS5478", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3243 and (MA1101R or MA1311 or MA1508E) and (MA1102R or MA1505 or (MA1511 and MA1512) or MA1521) and (EE2012/A or ST2131 or ST2334)", + "corequisite": "" + }, + { + "moduleCode": "CS4330", + "title": "Combinatorial Methods in Bioinformatics", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "CS3225 Combinatorial Methods in Bioinformatics", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS2010 or its equivalent) and (CS2220 or LSM2104)", + "corequisite": "" + }, + { + "moduleCode": "CS4344", + "title": "Networked and Mobile Gaming", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS2106 or CG2271) and (CS3103 or CG3204L)", + "corequisite": "" + }, + { + "moduleCode": "CS4345", + "title": "General-Purpose Computation on GPU", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3241", + "corequisite": "" + }, + { + "moduleCode": "CS4347", + "title": "Sound and Music Computing", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2108 and \n(MA1101R or MA1311 or MA1508E or MA1513) and \n(MA1102R or MA1505 or MA1507 or (MA1511 and MA1512) or MA1521)", + "corequisite": "" + }, + { + "moduleCode": "CS4350", + "title": "Game Development Project", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3247 or NM3216", + "corequisite": "" + }, + { + "moduleCode": "CS4351", + "title": "Real-Time Graphics", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3241 Computer Graphics", + "corequisite": "" + }, + { + "moduleCode": "CS4880", + "title": "Digital Entrepreneurship", + "moduleCredit": 4, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "TR3002 New Venture Creation", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students in their 3rd year of study in science, technology or\nbusiness", + "corequisite": "" + }, + { + "moduleCode": "CS5201", + "title": "Foundation in Theoretical CS", + "moduleCredit": 0, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS5202", + "title": "Foundation in Computer Systems", + "moduleCredit": 0, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS5205", + "title": "Foundation in Programming Languages", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3212", + "corequisite": "" + }, + { + "moduleCode": "CS5206", + "title": "Foundation in Algorithms", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2010 or its equivalent and CS3230", + "corequisite": "" + }, + { + "moduleCode": "CS5207", + "title": "Foundation in Operating Systems", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS5208", + "title": "Foundation in Database Systems", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3223", + "corequisite": "" + }, + { + "moduleCode": "CS5209", + "title": "Foundation in Logic and AI", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3234", + "corequisite": "" + }, + { + "moduleCode": "CS5214", + "title": "Design of Optimising Compilers", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3212 or CS4212", + "corequisite": "" + }, + { + "moduleCode": "CS5215", + "title": "Constraint Processing", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2104", + "corequisite": "" + }, + { + "moduleCode": "CS5216", + "title": "Logic Programming and Constraints", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS5218", + "title": "Principles and Practice of Program Analysis", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS4212 Compiler Design or CS4215 Programming Language Implementation", + "corequisite": "" + }, + { + "moduleCode": "CS5219", + "title": "Automated Software Validation", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2104 Programming Language Concepts", + "corequisite": "" + }, + { + "moduleCode": "CS5222", + "title": "Advanced Computer Architecture", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3220 Computer Architecture or CS4223 Multi-core Architecture", + "corequisite": "" + }, + { + "moduleCode": "CS5223", + "title": "Distributed Systems", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3211 Parallel and Concurrent Programming", + "corequisite": "" + }, + { + "moduleCode": "CS5224", + "title": "Cloud Computing", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS5226", + "title": "Database Tuning", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3223", + "corequisite": "" + }, + { + "moduleCode": "CS5228", + "title": "Knowledge Discovery and Data Mining", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "CS2102 and CS3243 and \n(EE2012/A or ST2132 or ST2334 or ((MA2216 or ST2131) and (ST1131/A or ST1232 or DSC2008)))", + "corequisite": "" + }, + { + "moduleCode": "CS5229", + "title": "Advanced Computer Networks", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS4226 Internet Architecture or EE4210 Computer Communications Networks II", + "corequisite": "" + }, + { + "moduleCode": "CS5230", + "title": "Computational Complexity", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "CS4230", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS4232 Theory of Computation", + "corequisite": "" + }, + { + "moduleCode": "CS5231", + "title": "Systems Security", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3235 Computer Security", + "corequisite": "" + }, + { + "moduleCode": "CS5232", + "title": "Formal Specification and Design Techniques", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(MA1100 or (CS1231 or its equivalent)) and CS2103", + "corequisite": "" + }, + { + "moduleCode": "CS5233", + "title": "Simulation and Modelling Techniques", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS4231 and \n(EE2012/A or ST2132 or ST2334 or ((MA2216 or ST2131) and (ST1131/A or ST1232 or DSC2008)))", + "corequisite": "" + }, + { + "moduleCode": "CS5234", + "title": "Algorithms at Scale", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3230", + "corequisite": "" + }, + { + "moduleCode": "CS5236", + "title": "Advanced Automata Theory", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS4232 Theory of Computation", + "corequisite": "" + }, + { + "moduleCode": "CS5237", + "title": "Computational Geometry and Applications", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3230 Design and Analysis of Algorithms", + "corequisite": "" + }, + { + "moduleCode": "CS5238", + "title": "Advanced Combinatorial Methods in Bioinformatics", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3230", + "corequisite": "" + }, + { + "moduleCode": "CS5239", + "title": "Computer System Performance Analysis", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "((CS1020 or its equivalent) or CS2020 or (CS2030 or its equivalent) or CS2113/T) and (EE2012/A or ST2132 or ST2334 or ((MA2216 or ST2131) and (ST1131/A or ST1232 or DSC2008)))", + "corequisite": "" + }, + { + "moduleCode": "CS5240", + "title": "Theoretical Foundations in MultiMedia", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "((CS1020 or its equivalent) or CS2020 or (CS2040 or its equivalent)) and (MA1101R or MA1311 or MA1508E or MA1513) and \n(MA1102R or MA1505 or MA1507 or (MA1511 and MA1512) or MA1521) and \n(EE2012/A or MA2216 or ST1131/A or ST1232 or ST2131 or ST2334)", + "corequisite": "" + }, + { + "moduleCode": "CS5241", + "title": "Speech Processing", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS1020 or its equivalent) and CS1231 and (MA1102R or MA1505 or MA1521) and (MA1101R or MA1506)", + "corequisite": "" + }, + { + "moduleCode": "CS5242", + "title": "Neural Networks and Deep Learning", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "CS3244 Machine Learning", + "corequisite": "" + }, + { + "moduleCode": "CS5246", + "title": "Text Mining", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2103 and \n(MA1101R or MA1311 or MA1508E or MA1513) and \n(EE2012/A or MA2216 or ST2131 or ST2334)", + "corequisite": "" + }, + { + "moduleCode": "CS5248", + "title": "Systems Support for Continuous Media", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2106 Introduction to Operating Systems and CS4226 Internet Architecture", + "corequisite": "" + }, + { + "moduleCode": "CS5249", + "title": "Audio in Multimedia Systems", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS1020 or its equivalent) and CS1231 and (MA1102R or MA1505 or MA1505C or MA1521) and (MA1101R or MA1506)", + "corequisite": "" + }, + { + "moduleCode": "CS5250", + "title": "Advanced Operating Systems", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2106 Introduction to Operating Systems or CG2271\nReal-Time Operating Systems", + "corequisite": "" + }, + { + "moduleCode": "CS5260", + "title": "Neural Networks and Deep Learning II", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "CS5242 Neural Networks and Deep Learning", + "corequisite": "" + }, + { + "moduleCode": "CS5271", + "title": "Performance Analysis of Embedded Systems", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS2271 or CG2271 or CS3220 or CS4223) and CS4212", + "corequisite": "" + }, + { + "moduleCode": "CS5272", + "title": "Embedded Software Design", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "(CG2271 or CS2106) and (CS2103 or its equivalent)", + "corequisite": "" + }, + { + "moduleCode": "CS5321", + "title": "Network Security", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "CS3235 Computer Security", + "corequisite": "" + }, + { + "moduleCode": "CS5322", + "title": "Database Security", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "CS3223 Database Systems Implementation", + "corequisite": "" + }, + { + "moduleCode": "CS5330", + "title": "Randomized Algorithms", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3230", + "corequisite": "" + }, + { + "moduleCode": "CS5331", + "title": "Web Security", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "CS3235 Computer Security", + "corequisite": "" + }, + { + "moduleCode": "CS5332", + "title": "Biometric Authentication", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "(CS2040 or its equivalent) and (MA1101R or MA1311 or MA1508E or MA1513) and \n(MA1102R or MA1505 or MA1507 or (MA1511 and MA1512) or MA1521) and \n(EE2012/A or ST2132 or ST2334 or ((MA2216 or ST2131) and (ST1131/A or ST1232 or DSC2008)))", + "corequisite": "" + }, + { + "moduleCode": "CS5338", + "title": "Principles of Planning and Decision Making", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "CS4246", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(MA2216 Probability or ST2131 Probability or ST2334 Probability\nand Statistics) and CS3243 Foundations of Artificial Intelligence", + "corequisite": "" + }, + { + "moduleCode": "CS5339", + "title": "Theory and Algorithms for Machine Learning", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "CS3244", + "corequisite": "" + }, + { + "moduleCode": "CS5340", + "title": "Uncertainty Modelling in AI", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3243 and \n(EE2012/A or ST2132 or ST2334 or ((MA2216 or ST2131) and (ST1131/A or ST1232 or DSC2008)))", + "corequisite": "" + }, + { + "moduleCode": "CS5342", + "title": "Multimedia Computing and Applications", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS4341 or CS3246", + "corequisite": "" + }, + { + "moduleCode": "CS5343", + "title": "Advanced Computer Animation", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS2010 or CS2020 or ((CS2030 or its equivalent) or CS2113/T) and (CS2040 or its equivalent)) and (MA1101R or MA1506) and (MA1102R or MA1505 or MA1505C or MA1521) and CS3241", + "corequisite": "" + }, + { + "moduleCode": "CS5344", + "title": "Big-Data Analytics Technology", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BT5110 (Data Management and Warehousing) or database related modules; programming experience (with data structures and algorithms) is required", + "corequisite": "" + }, + { + "moduleCode": "CS5345", + "title": "Social and Digital Media Analytics", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS5346", + "title": "Information Visualisation", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS2040 or its equivalent) and CS2102 and CS3240 and \n(EE2012/A or ST1131/A or ST1232 or DSC2008 or ST2132 or ST2334)", + "corequisite": "" + }, + { + "moduleCode": "CS5351", + "title": "The Business of Software", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Undergraduate students in their 4th year can apply. Open to PhD students.", + "corequisite": "" + }, + { + "moduleCode": "CS5421", + "title": "Database Applications Design and Tuning", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "CS4221", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "CS3223", + "corequisite": "" + }, + { + "moduleCode": "CS5422", + "title": "Wireless Networking", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "CS4222", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "(CS2105 or EE3204/E or EE4204) and \n(EE2012/A or MA2216 or ST2131 or ST2334)", + "corequisite": "" + }, + { + "moduleCode": "CS5424", + "title": "Distributed Databases", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "CS4224", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "CS3223", + "corequisite": "" + }, + { + "moduleCode": "CS5425", + "title": "Big Data Systems for Data Science", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "BT4221 and CS4225", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "CS2102", + "corequisite": "" + }, + { + "moduleCode": "CS5439", + "title": "Software Security", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "CS4239", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "CS3235 and (CS2103 or its equivalent)", + "corequisite": "" + }, + { + "moduleCode": "CS5446", + "title": "AI Planning and Decision Making", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "CS4246", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3243 and \n(EE2012/A or ST2132 or ST2334 or ((MA2216 or ST2131) and (ST1131/A or ST1232 or DSC2008)))", + "corequisite": "" + }, + { + "moduleCode": "CS5461", + "title": "Algorithmic Mechanism Design", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "CS4261", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS2010 or CS2020 or CS2040 or its equivalent) and ((MA1100 or (CS1231 or its equivalent)) and \n(MA1101R or MA1311 or MA1508E or MA1513) and \n(EE2012/A or MA2216 or ST2131 or ST2334)", + "corequisite": "" + }, + { + "moduleCode": "CS5469", + "title": "Fundamentals of Logic in Computer Science", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "CS4269", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS2010 or CS2020 or CS2040/C/S) and (CS1231/S or MA1100).", + "corequisite": "" + }, + { + "moduleCode": "CS5476", + "title": "IoT Security", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "CS4276", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "CG3002 or CG4002 or CS3237", + "corequisite": "" + }, + { + "moduleCode": "CS5477", + "title": "3D Computer Vision", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "CS4277", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(MA1101R or MA1311 or MA1506 or MA1508E) and\n(CS2040 or its equivalent)", + "corequisite": "" + }, + { + "moduleCode": "CS5478", + "title": "Intelligent Robots: Algorithms and Systems", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "CS4278", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3243 and (MA1101R or MA1311 or MA1508E) and (MA1102R or MA1505 or (MA1511 and MA1512) or MA1521) and (EE2012/A or ST2131 or ST2334)", + "corequisite": "" + }, + { + "moduleCode": "CS6101", + "title": "Exploration of Computer Science Research", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS6202", + "title": "Advanced Topics in Programming Languages", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "3211 or CS3212 or CS4212", + "corequisite": "" + }, + { + "moduleCode": "CS6203", + "title": "Advanced Topics in Database Systems", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3223", + "corequisite": "" + }, + { + "moduleCode": "CS6204", + "title": "Advanced Topics in Networking", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS5229 or Permission from lecturer.", + "corequisite": "" + }, + { + "moduleCode": "CS6205", + "title": "Advanced Modelling & Simulation", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3232 or CS4237", + "corequisite": "" + }, + { + "moduleCode": "CS6206", + "title": "Advanced Topics in Human-Computer Interaction", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3240", + "corequisite": "" + }, + { + "moduleCode": "CS6207", + "title": "Advanced Natural Language Processing", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS4248", + "corequisite": "" + }, + { + "moduleCode": "CS6208", + "title": "Advanced Topics in Artificial Intelligence", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3243", + "corequisite": "" + }, + { + "moduleCode": "CS6209", + "title": "Topics in Cryptography", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS6210", + "title": "The Art of Computer Science Research", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3230 Design and Analysis of Algorithms", + "corequisite": "" + }, + { + "moduleCode": "CS6211", + "title": "Analytical Performance Modelling for Computer Systems", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(ST2334 or ST2131) and CS2105 and CS2106.", + "corequisite": "" + }, + { + "moduleCode": "CS6212", + "title": "Topics in Media", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Variable, depending on the choice of topics or departmental approval.", + "corequisite": "" + }, + { + "moduleCode": "CS6213", + "title": "Special Topics in Distributed Computing", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3211 or CS4231", + "corequisite": "" + }, + { + "moduleCode": "CS6215", + "title": "Advanced Topics in Program Analysis", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3230 and CS4212", + "corequisite": "" + }, + { + "moduleCode": "CS6216", + "title": "Advanced Topics in Machine Learning", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3244", + "corequisite": "" + }, + { + "moduleCode": "CS6217", + "title": "Topics in Prog. Languages & Software Engineering", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS6218", + "title": "Principles of Prog. Languages & Software Engineering", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS6219", + "title": "Advanced Topics in Computer Systems", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2105 and CS2106", + "corequisite": "" + }, + { + "moduleCode": "CS6220", + "title": "Advanced Topics in Data Mining", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS5228", + "corequisite": "" + }, + { + "moduleCode": "CS6222", + "title": "Advanced Topics in Computational Biology", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2220", + "corequisite": "" + }, + { + "moduleCode": "CS6230", + "title": "Topics in Information Security", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS4236 and CS5321", + "corequisite": "" + }, + { + "moduleCode": "CS6231", + "title": "Advanced Topics in Security and Privacy", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS4236 Cryptography Theory and Practice or \nCS3235 Computer Security or \nCS5231 System Security.", + "corequisite": "" + }, + { + "moduleCode": "CS6234", + "title": "Advanced Algorithms", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS5234", + "corequisite": "" + }, + { + "moduleCode": "CS6235", + "title": "Advanced Topics in Theoretical Computer Science", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3230", + "corequisite": "" + }, + { + "moduleCode": "CS6240", + "title": "Multimedia Analysis", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS4243 or CS5240", + "corequisite": "" + }, + { + "moduleCode": "CS6241", + "title": "Advanced Topics in Computer Graphics", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS6242", + "title": "Digital Libraries", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3245 and CS3246 or their equivalent", + "corequisite": "" + }, + { + "moduleCode": "CS6244", + "title": "Advanced Topics in Robotics", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3230 and \n(MA1101R or MA1311 or MA1506 or MA1508E) and\n(ST2131 or ST2334)", + "corequisite": "" + }, + { + "moduleCode": "CS6270", + "title": "Virtual Machines", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3220 Computer Architecture or CS4223 Multi-core Architectures", + "corequisite": "" + }, + { + "moduleCode": "CS6280", + "title": "Topics in Computer Science: Systems Design for Next Gen Hardware", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2100 Computer Organization and CS2106 Introduction to Operating Systems", + "corequisite": "" + }, + { + "moduleCode": "CS6281", + "title": "Topics in Computer Science: Property Testing", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3230 Design and Analysis of Algorithms and (ST2334 Probability and Statistics or ST2131 Probability)", + "corequisite": "" + }, + { + "moduleCode": "CS6282", + "title": "Topics in Computer Science: Internet-of-Things Security", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "Variable, depend on the choice of topics or departmental approval.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3235 Computer Security and CS3103 Computer Networks Practice and CS4222 Wireless Networking", + "corequisite": "" + }, + { + "moduleCode": "CS6283", + "title": "Topics in Computer Science: Trustworthy Machine Learning", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "Variable, depend on the choice of topics or departmental approval.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3244 Machine Learning", + "corequisite": "" + }, + { + "moduleCode": "CS6284", + "title": "Topics in Computer Science: Big Data Meets New Hardware", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "Variable, depend on the choice of topics or departmental approval.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2100 Computer Organization and CS2102 Database Systems", + "corequisite": "" + }, + { + "moduleCode": "CS6285", + "title": "Topics in Computer Science: Bridging System and Deep Learning", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "Variable, depend on the choice of topics or departmental approval.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS5242 and CS3210", + "corequisite": "" + }, + { + "moduleCode": "CS6290", + "title": "Lecture Series in Computer Science I", + "moduleCredit": 2, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS6291", + "title": "Lecture Series in Computer Science II", + "moduleCredit": 2, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS6292", + "title": "Lecture Series in Computer Science III", + "moduleCredit": 2, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CS6880", + "title": "Advanced Topics in Software Engineering", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2103 or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "CSA6101", + "title": "Cultural Studies Theory and Analysis", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CSA6102", + "title": "Cultural Studies in Asia", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CSA6770", + "title": "Graduate Research Seminar", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CSA6880", + "title": "Topics in Cultural Studies in Asia", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CSX2991", + "title": "Exchange Breadth Module", + "moduleCredit": 4, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CSX2992", + "title": "Exchange Breadth Module", + "moduleCredit": 1, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CSX2994", + "title": "Exchange Breadth Module", + "moduleCredit": 3, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CSX2995", + "title": "Exchange Breadth Module", + "moduleCredit": 4, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CSX3991", + "title": "Exchange Breadth Module", + "moduleCredit": 4, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CSX3992", + "title": "Exchange Breadth Module", + "moduleCredit": 1, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CSX4991", + "title": "Exchange Breadth Module", + "moduleCredit": 4, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CSX4992", + "title": "Exchange Breadth Module", + "moduleCredit": 1, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CSX4993", + "title": "Exchange Breadth Module", + "moduleCredit": 2, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CSX4994", + "title": "Exchange Breadth Module", + "moduleCredit": 3, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CZ5101", + "title": "Numerical Recipes", + "moduleCredit": 5, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CZ5102", + "title": "Computational Tools", + "moduleCredit": 5, + "department": "Center for Computational Science and Engineering", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CZ5103", + "title": "Modeling and Simulation", + "moduleCredit": 5, + "department": "Center for Computational Science and Engineering", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CZ5198", + "title": "Graduate Seminar Module in Computational Science", + "moduleCredit": 4, + "department": "Center for Computational Science and Engineering", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CZ5211", + "title": "Topics in Computational Science 1", + "moduleCredit": 4, + "department": "Center for Computational Science and Engineering", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "CZ5274", + "title": "Computational Fluid Dynamics", + "moduleCredit": 4, + "department": "Center for Computational Science and Engineering", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DA1000", + "title": "Dental Anatomy & Histology", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DAO1704", + "title": "Decision Analytics using Spreadsheets", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "DSC1007; DSC1007X", + "attributes": [ + true, + true, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DAO1704X", + "title": "Decision Analytics using Spreadsheets", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "DSC1007; DSC1007X", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DAO1704Y", + "title": "Decision Analytics using Spreadsheets", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "DSC1007; DSC1007X", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DAO2702", + "title": "Programming for Business Analytics", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "DSC1007", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DAO1704/DAO1704X", + "corequisite": "" + }, + { + "moduleCode": "DAO2703", + "title": "Operations and Technology Management", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DBA3701", + "title": "Introduction to Optimization", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "DSC3214; IE2110.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DAO2702", + "corequisite": "" + }, + { + "moduleCode": "DBA3702", + "title": "Descriptive Analytics with R", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DAO1704 Decision Analytics using Spreadsheets (2017 curriculum), or\nDSC1007 Business Analytics - Models and Decisions (pre-2017 curriculum)", + "corequisite": "" + }, + { + "moduleCode": "DBA3711", + "title": "Stochastic Models in Management", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "DSC3215", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DAO2702", + "corequisite": "" + }, + { + "moduleCode": "DBA3712", + "title": "Dynamic Pricing & Revenue Management", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "DSC3224", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DAO2702", + "corequisite": "" + }, + { + "moduleCode": "DBA3751", + "title": "Independent Study in Business Analytics", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "Depends on the subject matter.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Depends on the subject matter.", + "corequisite": "Depends on the subject matter." + }, + { + "moduleCode": "DBA3752", + "title": "Independent Study in Business Analytics", + "moduleCredit": 2, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "Depends on the subject matter.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Depends on the subject matter.", + "corequisite": "Depends on the subject matter." + }, + { + "moduleCode": "DBA3761", + "title": "Topics in Business Analytics", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DAO1704 Decision Analytics using Spreadsheets\nDAO2702 Programming for Business Analytics", + "corequisite": "" + }, + { + "moduleCode": "DBA3803", + "title": "Predictive Analytics in Business", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "DSC3216", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DAO2702", + "corequisite": "" + }, + { + "moduleCode": "DBA4711", + "title": "Advanced Analytics with R", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "DSC4217", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DAO2702, DBA3702 and DBA3803.", + "corequisite": "" + }, + { + "moduleCode": "DBA4712", + "title": "Statistical Learning for Managerial Decision", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DAO2702 and DBA3803.", + "corequisite": "" + }, + { + "moduleCode": "DBA4751", + "title": "Advanced Independent Study in Business Analytics", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "Depends on the subject matter.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Depends on the subject matter.", + "corequisite": "Depends on the subject matter." + }, + { + "moduleCode": "DBA4752", + "title": "Advanced Independent Study in Business Analytics", + "moduleCredit": 2, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "Depends on the subject matter.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Depends on the subject matter.", + "corequisite": "Depends on the subject matter." + }, + { + "moduleCode": "DBA4761", + "title": "Seminars in Analytics", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DAO2702, DBA3702 and DBA3803.", + "corequisite": "" + }, + { + "moduleCode": "DBA4811", + "title": "Analytical Tools for Consulting", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "DSC4213", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DAO2702", + "corequisite": "" + }, + { + "moduleCode": "DBA5101", + "title": "Analytics in Managerial Economics", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "DSC5101", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DBA5102", + "title": "Business Analytics Capstone Project", + "moduleCredit": 12, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "DSC5102", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DBA5103", + "title": "Operations Research and Analytics", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "BDC5101", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DBA5104", + "title": "Introduction to Network Science & Analytics", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "DSC5104", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DBA5105", + "title": "Fintech, Enabling Technologies and Analytics", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "DSC5105", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DBA5106", + "title": "Foundation in Business Analytics", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "BT4222 Mining Web Data for Business Insights,\nST5202 Applied Regression Analysis,\nST5318 Statistical Methods for Health Science\nDCS5106 Foundation in Data Analytics I\nBT5154 Foundation of Business Analytics", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DBA5107", + "title": "Data Analytics in Banking", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "DSC5107", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Good to have a basic understanding of data mining, machine learning and OR, but not compulsory as this module gives an introduction in those areas", + "corequisite": "" + }, + { + "moduleCode": "DBA5108", + "title": "Advanced Analytics and Machine Learning", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BT4222 Mining Web Data for Business Insights,\nST5202 Applied Regression Analysis,\nST5318 Statistical Methods for Health Science,\nBT5152 Decision Making Technology for Business,\nIS5152 Data-Driven Decision Making", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DSC5106 Foundation in Data Analytics I\nDSC5106 Foundations of Business Analytics\nDSC5103 Statistics", + "corequisite": "" + }, + { + "moduleCode": "DBA5109", + "title": "Quantitative Risk Management", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "DSC5211C", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DBA5121", + "title": "Hands-on with Business Analytics (Finance)", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "DSC5121", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DE4201", + "title": "Seminars in Sustainable Cities", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DE5106", + "title": "Environmental Management And Assessment", + "moduleCredit": 4, + "department": "SDE Dean's Office", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DE5107", + "title": "Environmental Planning", + "moduleCredit": 4, + "department": "SDE Dean's Office", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DE5108", + "title": "Study Report", + "moduleCredit": 6, + "department": "SDE Dean's Office", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DE5109", + "title": "Dissertation", + "moduleCredit": 10, + "department": "SDE Dean's Office", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DE5110", + "title": "Gis For Environmental Studies", + "moduleCredit": 4, + "department": "SDE Dean's Office", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DE5111", + "title": "Managing the Tropical Marine Environment", + "moduleCredit": 4, + "department": "SDE Dean's Office", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DE5269", + "title": "Environmental Economics and Sustainable Development", + "moduleCredit": 4, + "department": "SDE Dean's Office", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "PP5269 – DE 5269 is replacing PP5269 for the MEM Program", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DEP5101", + "title": "Urban Analysis Workshop", + "moduleCredit": 4, + "department": "SDE Dean's Office", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DEP5101A", + "title": "Qualitative Methods for Urban Planning", + "moduleCredit": 4, + "department": "SDE Dean's Office", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + false, + false, + false, + false + ], + "prerequisite": "Must be taken together with DEP5101 Urban Analysis Workshop", + "corequisite": "" + }, + { + "moduleCode": "DEP5102", + "title": "Urban Planning History & Theory", + "moduleCredit": 4, + "department": "SDE Dean's Office", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DEP5103", + "title": "Urban and Regional Planning", + "moduleCredit": 8, + "department": "SDE Dean's Office", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + false, + false, + false, + false + ], + "prerequisite": "UP5101 Urban Analysis Workshop OR UD5622 Methods of Urban Design & Urban Analysis", + "corequisite": "" + }, + { + "moduleCode": "DEP5103A", + "title": "Quantitative Methods for Urban Planning", + "moduleCredit": 4, + "department": "SDE Dean's Office", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + false, + false, + false, + false + ], + "prerequisite": "Must be taken together with DEP5103 Urban Planning Studio", + "corequisite": "" + }, + { + "moduleCode": "DEP5104", + "title": "Urban and Regional Economics", + "moduleCredit": 4, + "department": "SDE Dean's Office", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DEP5105", + "title": "Urban Infrastructure and Mobility Systems", + "moduleCredit": 4, + "department": "SDE Dean's Office", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DEP5106", + "title": "Integrated Urban Planning Studio", + "moduleCredit": 8, + "department": "SDE Dean's Office", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "UP5101 Urban Analysis Workshop OR UD5622 Methods of Urban Design & Urban Analysis", + "corequisite": "" + }, + { + "moduleCode": "DEP5107", + "title": "Dissertation", + "moduleCredit": 8, + "department": "SDE Dean's Office", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Any 5000 Research Methods module", + "corequisite": "" + }, + { + "moduleCode": "DEP5108", + "title": "MUP Internship Module", + "moduleCredit": 8, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "The students have to clarify with the employer that the\nworking time is not in conflict with the compulsory\nmodules of the MUP programme in the related semester.\nThis condition must be supervised by the programme\ndirector or tutor.", + "corequisite": "" + }, + { + "moduleCode": "DEP5109", + "title": "Integrated Planning Project", + "moduleCredit": 8, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Pre-requisites for the new module is the compulsory\nprogramme of MUP in the first 3 semesters:\n- DEP5101 Urban Analysis Workshop\n- DEP5103 Urban Planning Studio\n- UD5601 Urban Design Studio\n- DEP5101A Qualitative Methods\n- DEP5103A Quantitative Methods\n- DEP5102 History and Theory\n- DEP5104 Urban and Regional Economics\n- DEP5105 Urban Infrastructure & Mobility Systems\n- UD5521 Planning Process", + "corequisite": "" + }, + { + "moduleCode": "DEP5110", + "title": "Urban Design and Planning", + "moduleCredit": 8, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DEP5101 Urban Analysis Workshop and DEP5103 Urban\nPlanning Studio", + "corequisite": "" + }, + { + "moduleCode": "DEP5111", + "title": "Planning Technologies", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DEP5112", + "title": "Planning Policy and Process", + "moduleCredit": 4, + "department": "SDE Dean's Office", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DI5100", + "title": "Dental Implantology", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DI5200", + "title": "Graduate Diploma in Geriatric Dentistry", + "moduleCredit": 0, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DL5101", + "title": "Digital Organisation Models", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DL5102", + "title": "Digital Agility and Change Leadership", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DL5103 Innovation By Design", + "corequisite": "" + }, + { + "moduleCode": "DL5103", + "title": "Innovation By Design", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "N.A", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "N.A" + }, + { + "moduleCode": "DL5201", + "title": "Strategic Thinking & Digital Foresight", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DL5101 Digital Organisation Model", + "corequisite": "" + }, + { + "moduleCode": "DL5202", + "title": "Digital Business Strategy", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DL5201 Strategic Thinking and Digital Foresight", + "corequisite": "" + }, + { + "moduleCode": "DL5203", + "title": "Mastering Digital Architecture", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DL5101 Digital Organisation Model", + "corequisite": "" + }, + { + "moduleCode": "DL5302", + "title": "Managing Digitalisation Complexity", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DL5102 Digital Agility and Change Leadership", + "corequisite": "" + }, + { + "moduleCode": "DMA1201CH", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1201CL", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1201CLS", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1201EC", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1201EL", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1201EN", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1201EU", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1201GE", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1201GL", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1201HY", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1201JS", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1201MS", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1201NM", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1201PE", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1201PH", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1201PL", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1201PS", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1201SC", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1201SE", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1201SN", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1201SW", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1201TS", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1202CH", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1202CL", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1202CLS", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1202EC", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1202EL", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1202EN", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1202EU", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1202GE", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1202GL", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1202HY", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1202JS", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1202MS", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1202NM", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1202PE", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1202PH", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1202PL", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1202PS", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1202SC", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1202SE", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1202SN", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1202SW", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1202TS", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1301CH", + "title": "Design Your Own Module", + "moduleCredit": 3, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1301CL", + "title": "Design Your Own Module", + "moduleCredit": 3, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1301CLS", + "title": "Design Your Own Module", + "moduleCredit": 3, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1301EC", + "title": "Design Your Own Module", + "moduleCredit": 3, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1301EL", + "title": "Design Your Own Module", + "moduleCredit": 3, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1301EN", + "title": "Design Your Own Module", + "moduleCredit": 3, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1301EU", + "title": "Design Your Own Module", + "moduleCredit": 3, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1301GE", + "title": "Design Your Own Module", + "moduleCredit": 3, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1301GL", + "title": "Design Your Own Module", + "moduleCredit": 3, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1301HY", + "title": "Design Your Own Module", + "moduleCredit": 3, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1301JS", + "title": "Design Your Own Module", + "moduleCredit": 3, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1301MS", + "title": "Design Your Own Module", + "moduleCredit": 3, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1301NM", + "title": "Design Your Own Module", + "moduleCredit": 3, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1301PE", + "title": "Design Your Own Module", + "moduleCredit": 3, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1301PH", + "title": "Design Your Own Module", + "moduleCredit": 3, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1301PL", + "title": "Design Your Own Module", + "moduleCredit": 3, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1301PS", + "title": "Design Your Own Module", + "moduleCredit": 3, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1301SC", + "title": "Design Your Own Module", + "moduleCredit": 3, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1301SE", + "title": "Design Your Own Module", + "moduleCredit": 3, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1301SN", + "title": "Design Your Own Module", + "moduleCredit": 3, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1301SW", + "title": "Design Your Own Module", + "moduleCredit": 3, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1301TS", + "title": "Design Your Own Module", + "moduleCredit": 3, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1401CH", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1401CL", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1401CLS", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1401EC", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1401EL", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1401EN", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1401EU", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1401GE", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1401GL", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1401HY", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1401JS", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1401L01", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1401LAF", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1401MS", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1401NM", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1401PE", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1401PH", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1401PL", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1401PS", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1401SC", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1401SE", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1401SN", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1401SW", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMA1401TS", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMB1201ACC", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMB1201BSP", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMB1201DAO", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMB1201DO", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMB1201FIN", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMB1201MKT", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMB1201MNO", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMB1202ACC", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMB1202BSP", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMB1202DAO", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMB1202DO", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMB1202FIN", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMB1202MKT", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMB1202MNO", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMB1203ACC", + "title": "Design Your Own Module", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMB1203BSP", + "title": "Design Your Own Module", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMB1203DAO", + "title": "Design Your Own Module", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMB1203DO", + "title": "Design Your Own Module", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMB1203FIN", + "title": "Design Your Own Module", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMB1203MKT", + "title": "Design Your Own Module", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMB1203MNO", + "title": "Design Your Own Module", + "moduleCredit": 3, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMB1204ACC", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMB1204BSP", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMB1204DAO", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMB1204DO", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMB1204FIN", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMB1204MKT", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMB1204MNO", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMC1401", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMC1401CS", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMC1401IS", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMP1201", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMP1202", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMR1201GC", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "Ridge View Residential College", + "faculty": "Residential College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMR1201GEQA", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "Ridge View Residential College", + "faculty": "Residential College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMR1201WRA", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "Ridge View Residential College", + "faculty": "Residential College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMR1201WRB", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "Ridge View Residential College", + "faculty": "Residential College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMS1401CM", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMS1401FST", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMS1401LS", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMS1401MA", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMS1401PC", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "Physics", + "faculty": "NUS", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMS1401SP", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMS1401ST", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMS1401ZB", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMX1101", + "title": "DYOM via edX MOOC", + "moduleCredit": 1, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMX1102", + "title": "DYOM via edX MOOC", + "moduleCredit": 1, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMX1103", + "title": "DYOM via edX MOOC", + "moduleCredit": 1, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMX1104", + "title": "DYOM via edX MOOC", + "moduleCredit": 1, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMX1105", + "title": "DYOM via edX MOOC", + "moduleCredit": 1, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMX1106", + "title": "DYOM via edX MOOC", + "moduleCredit": 1, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMX1107", + "title": "DYOM via edX MOOC", + "moduleCredit": 1, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMX1108", + "title": "DYOM via edX MOOC", + "moduleCredit": 1, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMX1201", + "title": "DYOM via edX MOOC", + "moduleCredit": 2, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMX1202", + "title": "DYOM via edX MOOC", + "moduleCredit": 2, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMX1203", + "title": "DYOM via edX MOOC", + "moduleCredit": 2, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMX1204", + "title": "DYOM via edX MOOC", + "moduleCredit": 2, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMX1301", + "title": "DYOM via edX MOOC", + "moduleCredit": 3, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMX1302", + "title": "DYOM via edX MOOC", + "moduleCredit": 3, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMX1401", + "title": "DYOM via edX MOOC", + "moduleCredit": 4, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMX1402", + "title": "DYOM via edX MOOC", + "moduleCredit": 4, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMX1501", + "title": "DYOM via edX MOOC", + "moduleCredit": 5, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMX1501AI", + "title": "DYOM via edX MOOC", + "moduleCredit": 5, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMX1501CT", + "title": "DYOM via edX MOOC", + "moduleCredit": 5, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMX1601", + "title": "DYOM via edX MOOC", + "moduleCredit": 6, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMX1701", + "title": "DYOM via edX MOOC", + "moduleCredit": 7, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMX1801", + "title": "DYOM via edX MOOC", + "moduleCredit": 8, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMY1201RF", + "title": "Design Your Own Module", + "moduleCredit": 2, + "department": "Raffles Hall", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMY1401ELC", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMY1401FA", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "NUS Centre for the Arts", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMY1401HL", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMY1401KE", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMY1401PGP", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "Prince George’s Park House", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMY1401PSP", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMY1401RF", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "Raffles Hall", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMY1401SOG", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMY1401TH", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DMY1401TT", + "title": "Design Your Own Module", + "moduleCredit": 4, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DOS3701", + "title": "Supply Chain Management", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "DSC3201", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DAO2703", + "corequisite": "" + }, + { + "moduleCode": "DOS3702", + "title": "Purchasing and Materials Management", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "DSC3202", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DAO2703", + "corequisite": "" + }, + { + "moduleCode": "DOS3703", + "title": "Service Operations Management", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "DSC3203", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DAO2703", + "corequisite": "" + }, + { + "moduleCode": "DOS3704", + "title": "Operations Strategy", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "DSC4211C SIOSCM: Operations Strategy", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DAO2703 Operations and Technology Management", + "corequisite": "" + }, + { + "moduleCode": "DOS3712", + "title": "Physical Distribution Management", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "DSC3218", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DAO2703", + "corequisite": "" + }, + { + "moduleCode": "DOS3713", + "title": "Project Management", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "DSC3225", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DOS3714", + "title": "Sustainable Operations Management", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "DSC3226", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DAO2703", + "corequisite": "" + }, + { + "moduleCode": "DOS3751", + "title": "Independent Study in Ops & Supply Chain Management", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DAO2703 and additional module(s) as required.", + "corequisite": "" + }, + { + "moduleCode": "DOS3752", + "title": "Independent Study in Ops & Supply Chain Management (2 MC)", + "moduleCredit": 2, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DAO2703 and additional module(s) as required.", + "corequisite": "" + }, + { + "moduleCode": "DOS3761", + "title": "Topics in Operations & Supply Chain Management", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DAO2703 and additional module(s) as required.", + "corequisite": "" + }, + { + "moduleCode": "DOS3761X", + "title": "Topics in Operations & Supply Chain Management", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DAO2703 and additional module(s) as required.", + "corequisite": "" + }, + { + "moduleCode": "DOS3761Y", + "title": "Topics in Operations & Supply Chain Management", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DAO2703 and additional module(s) as required.", + "corequisite": "" + }, + { + "moduleCode": "DOS3761Z", + "title": "Topics in Operations & Supply Chain Management", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DAO2703 and additional module(s) as required.", + "corequisite": "" + }, + { + "moduleCode": "DOS3811", + "title": "Technology and Business Innovation", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "DOS3711, DSC3227, DSC3213", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DOS4711", + "title": "Supply Chain Applied Project", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DAO2702, DAO2703 and DOS3701.", + "corequisite": "" + }, + { + "moduleCode": "DOS4712", + "title": "Co-ordination and Flexibility in SCM", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "DSC4214 Co-ordination and Flexibility in SCM", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(1) DSC2006 Operations Management or DAO2703 Operations and Technology Management\n(2) DSC3201/DOS3701 Supply Chain Management\n(3) DAO1704/DAO1704X Decision Analytics using Spreadsheets (or has knowledge of calculus and probability)", + "corequisite": "" + }, + { + "moduleCode": "DOS4714", + "title": "Service Design", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "DSC4211G Seminars in Ops & SCM: Service Design", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(1) DAO2703 Technology and Operations Management\n(2) MKT1705 Principles of Marketing", + "corequisite": "" + }, + { + "moduleCode": "DOS4751", + "title": "Advanced Independent Study in Ops & Supply Chain Mgt", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DAO2703 and DOS3701.", + "corequisite": "" + }, + { + "moduleCode": "DOS4752", + "title": "Advanced Independent Study in Ops & Supply Chain Mgt (2 MC)", + "moduleCredit": 2, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DAO2703 and DOS3701.", + "corequisite": "" + }, + { + "moduleCode": "DOS4761", + "title": "Seminars in Operations and Supply Chain Management", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DAO2703 and DOS3701.", + "corequisite": "" + }, + { + "moduleCode": "DOS4811", + "title": "Data Visualisation", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "DSC4215", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DAO2702 and DOS3702.", + "corequisite": "" + }, + { + "moduleCode": "DOS4812", + "title": "Business-Driven Technology", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "DSC4216", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All BBA core modules, except ES2002, MNO2705 and BSP3701.", + "corequisite": "" + }, + { + "moduleCode": "DOS5101", + "title": "Supply Chain Coordination and Risk Management", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "DSC5211A", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Knowledge in Operations Management and Supply Chain Management\nKnowledge of Calculus and Probability", + "corequisite": "" + }, + { + "moduleCode": "DOS5101A", + "title": "Managing the Financial Supply Chain", + "moduleCredit": 2, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "DSC5211A Supply Chain Co-ordination & Risk Management \nDOS5101 Supply Chain Co-ordination & Risk Management\nDSC5221A Managing the Financial Supply Chain", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DOS5101B", + "title": "Supply Chain Risk Management", + "moduleCredit": 2, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "DSC5211A Supply Chain Co-ordination & Risk Management \nDOS5101 Supply Chain Co-ordination & Risk Management\nDSC5221B Supply Chain Risk Management", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DOS5102", + "title": "Analytical Tools for Consulting", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "DSC5211B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DOS5102A", + "title": "Analytics for Consulting - Part 1", + "moduleCredit": 2, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "DSC5211B Analytical Tools for Consulting \nDOS5102 Analytical Tools for Consulting\nDSC5222A Analytics for Consulting – Part 1", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DOS5102B", + "title": "Analytics for Consulting - Part 2", + "moduleCredit": 2, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "DSC5211B Analytical Tools for Consulting \nDOS5102 Analytical Tools for Consulting\nDSC5222B Analytics for Consulting – Part 2", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DSC5222A Analytics for Consulting – Part 1, or\nDOS5102A Analytics for Consulting – Part 1", + "corequisite": "" + }, + { + "moduleCode": "DOS5103", + "title": "Global Supply Chain Management", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BMS5202, DSC5211D", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DOS5104", + "title": "Sustainable Supply Chains", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "DSC5211E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DSA1101", + "title": "Introduction to Data Science", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "YSC2239", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "H2 pass in Mathematics or H2 Further Mathematics or equivalent\nThis module is offered only to DSA students", + "corequisite": "" + }, + { + "moduleCode": "DSA1361", + "title": "Introductory Data Science with Python and Tableau", + "moduleCredit": 2, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 4 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DSA2101", + "title": "Essential Data Analytics Tools: Data Visualisation", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DSA1101 and MA1101R and ST2131/MA2216", + "corequisite": "" + }, + { + "moduleCode": "DSA2102", + "title": "Essential Data Analytics Tools: Numerical Computation", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "MA2213", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1101R and MA1102R", + "corequisite": "" + }, + { + "moduleCode": "DSA2361", + "title": "Data Analytics for Customer Insights", + "moduleCredit": 2, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 4 + ], + "preclusion": "All DSA major students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DSA1361 or department approval", + "corequisite": "Students must either fulfil DSA1361 as pre-requisite or must read this module together with DSA1361" + }, + { + "moduleCode": "DSA2362", + "title": "Decision Trees for Machine Learning and Data Analysis", + "moduleCredit": 2, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DSA1361 or department approval", + "corequisite": "" + }, + { + "moduleCode": "DSA3101", + "title": "Data Science in Practice", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DSA2101 and ST2132", + "corequisite": "" + }, + { + "moduleCode": "DSA3102", + "title": "Essential Data Analytics Tools: Convex Optimisation", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS1010/CS1010E/CS1010S/CS1010X and MA1101R and {MA1104 or MA2104 or MA2311}", + "corequisite": "" + }, + { + "moduleCode": "DSA3310", + "title": "Undergraduate Professional Internship Programme", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 3, + 4 + ], + "preclusion": "XX3310 modules offered in Science, where XX stands for the subject prefix of the respective major", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed 3 regular semesters of study, having declared Data Science and Analytics as first major and have completed a minimum of 32 MCs in Data Science and Analytics major at the time of application.", + "corequisite": "" + }, + { + "moduleCode": "DSA3311", + "title": "Undergraduate Professional Internship Programme", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 3, + 4 + ], + "preclusion": "Any other XX3311 modules offered in Science, where XX stands for the subject prefix for the respective major.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed 3 regular semesters of study, have declared Data Science and Analytics as first major and have completed a minimum of 32 MCs in Data Science and Analytics major at time of application.", + "corequisite": "" + }, + { + "moduleCode": "DSA3312", + "title": "Enhanced Undergraduate Professional Internship Programme", + "moduleCredit": 12, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "XX3312 modules offered in Science, where XX stands for the subject prefix for the respective major.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed 3 regular semesters of study, have declared Data Science and Analytics as first major and have completed a minimum of 32 MCs in Data Science and Analytics major at time of application.", + "corequisite": "" + }, + { + "moduleCode": "DSA3313", + "title": "Undergraduate Professional Internship Programme Extended", + "moduleCredit": 12, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "This module XX3313 Extended Undergraduate Professional Internship Programme, where XX stands for the subject prefix of the respective major", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed 3 regular semesters of study, having declared DSA as first major (co-op pathway) and have completed a minimum of 32 MCs in DSA major at the time of application and have completed DSA3312", + "corequisite": "Students should be in their 3rd year of studies (SCI3)" + }, + { + "moduleCode": "DSA4199", + "title": "Honours Project in Data Science and Analytics", + "moduleCredit": 16, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "DSA4299", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DSA4211", + "title": "High-Dimensional Statistical Analysis", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST3131", + "corequisite": "" + }, + { + "moduleCode": "DSA4212", + "title": "Optimisation for Large-Scale Data-Driven Inference", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1101R and {MA1104 or MA2311} and ST2132", + "corequisite": "" + }, + { + "moduleCode": "DSA4261", + "title": "Sense-making Case Analysis: Logistics and Transport", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "DSA4261A and DSA4261B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3244 Machine Learning and DSA3101 Data Science in Practice, or by permission", + "corequisite": "" + }, + { + "moduleCode": "DSA4261A", + "title": "Sense-making Case Analysis: Logistics", + "moduleCredit": 2, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "DSA4261 Sense-making Case Analysis: Logistics and Transport", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3244 Machine Learning and DSA3101 Data Science in Practice, or by permission", + "corequisite": "" + }, + { + "moduleCode": "DSA4261B", + "title": "Sense-making Case Analysis: Transport", + "moduleCredit": 2, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "DSA4261 Sense-making Case Analysis: Logistics and Transport", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3244 Machine Learning and DSA3101 Data Science in Practice, or by permission", + "corequisite": "" + }, + { + "moduleCode": "DSA4262", + "title": "Sense-making Case Analysis: Health and Medicine", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "DSA4262A and DSA4262B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3244 Machine Learning and DSA3101 Data Science in Practice, or by permission", + "corequisite": "" + }, + { + "moduleCode": "DSA4262A", + "title": "Sense-making Case Analysis: Health", + "moduleCredit": 2, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "DSA4262 Sense-making Case Analysis: Health and Medicine", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3244 Machine Learning and DSA3101 Data Science in Practice, or by permission", + "corequisite": "" + }, + { + "moduleCode": "DSA4262B", + "title": "Sense-making Case Analysis: Medicine", + "moduleCredit": 2, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "DSA4262 Sense-making Case Analysis: Health and Medicine", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3244 Machine Learning and DSA3101 Data Science in Practice, or by permission", + "corequisite": "" + }, + { + "moduleCode": "DSA4263", + "title": "Sense-making Case Analysis: Business and Commerce", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "DSA4263A and DSA4263B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3244 Machine Learning and DSA3101 Data Science in Practice, or by permission", + "corequisite": "" + }, + { + "moduleCode": "DSA4263A", + "title": "Sense-making Case Analysis: Business", + "moduleCredit": 2, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "DSA4263 Sense-making Case Analysis: Business and Commerce", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3244 Machine Learning and DSA3101 Data Science in Practice, or by permission", + "corequisite": "" + }, + { + "moduleCode": "DSA4263B", + "title": "Sense-making Case Analysis: Commerce", + "moduleCredit": 2, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "DSA4263 Sense-making Case Analysis: Business and Commerce", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3244 Machine Learning and DSA3101 Data Science in Practice, or by permission", + "corequisite": "" + }, + { + "moduleCode": "DSA4264", + "title": "Sense-making Case Analysis: Public Policy and Society", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "DSA4264A and DSA4264B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3244 Machine Learning and DSA3101 Data Science in Practice, or by permission", + "corequisite": "" + }, + { + "moduleCode": "DSA4264A", + "title": "Sense-making Case Analysis: Public Policy", + "moduleCredit": 2, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "DSA4264 Sense-making Case Analysis: Public Policy and Society", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3244 Machine Learning and DSA3101 Data Science in Practice, or by permission", + "corequisite": "" + }, + { + "moduleCode": "DSA4264B", + "title": "Sense-making Case Analysis: Society", + "moduleCredit": 2, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "DSA4264 Sense-making Case Analysis: Public Policy and Society", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3244 Machine Learning and DSA3101 Data Science in Practice, or by permission", + "corequisite": "" + }, + { + "moduleCode": "DSA4265", + "title": "Sense-making Case Analysis: Economics and Finance", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "DSA4265A and DSA4265B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3244 Machine Learning and DSA3101 Data Science in Practice, or by permission", + "corequisite": "" + }, + { + "moduleCode": "DSA4265A", + "title": "Sense-making Case Analysis: Economics", + "moduleCredit": 2, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "DSA4265 Sense-making Case Analysis: Economics and Finance", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3244 Machine Learning and DSA3101 Data Science in Practice, or by permission", + "corequisite": "" + }, + { + "moduleCode": "DSA4265B", + "title": "Sense-making Case Analysis: Finance", + "moduleCredit": 2, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "DSA4265 Sense-making Case Analysis: Economics and Finance", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3244 Machine Learning and DSA3101 Data Science in Practice, or by permission", + "corequisite": "" + }, + { + "moduleCode": "DSA4266", + "title": "Sense-making Case Analysis: Science and Technology", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "DSA4266A and DSA4266B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3244 Machine Learning and DSA3101 Data Science in Practice, or by permission", + "corequisite": "" + }, + { + "moduleCode": "DSA4266A", + "title": "Sense-making Case Analysis: Science", + "moduleCredit": 2, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "DSA4266 Sense-making Case Analysis: Science and Technology", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3244 Machine Learning and DSA3101 Data Science in Practice, or by permission", + "corequisite": "" + }, + { + "moduleCode": "DSA4266B", + "title": "Sense-making Case Analysis: Technology", + "moduleCredit": 2, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "DSA4266 Sense-making Case Analysis: Science and Technology", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3244 Machine Learning and DSA3101 Data Science in Practice, or by permission", + "corequisite": "" + }, + { + "moduleCode": "DSA4299", + "title": "Applied Project in Data Science and Analytics", + "moduleCredit": 16, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "Pharmacy majors are precluded from reading this module. This module would preclude XX4199 and vice versa.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must be reading the Bachelor of Science degree and have met Honours eligibility requirements for specific major.", + "corequisite": "" + }, + { + "moduleCode": "DSA4299C", + "title": "Applied Project in Data Science and Analytics", + "moduleCredit": 16, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "Pharmacy majors are precluded from reading this module. This module would preclude XX4199 and vice versa.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must be reading the Bachelor of Science degree and have met Honours eligibility requirements for specific major.", + "corequisite": "" + }, + { + "moduleCode": "DSA5101", + "title": "Introduction to Big Data for Industry", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "DSA5102", + "title": "Foundations of Machine Learning", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "CS5339", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Linear Algebra, Calculus, Probability, Programming Skills", + "corequisite": "" + }, + { + "moduleCode": "DSA5102X", + "title": "Foundations of Machine Learning", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "DSA5102, CS5339", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DSA5201", + "title": "DSML Industry Consulting and Applications Project", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2, + 3 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DSA5101 Introduction to Big Data for Industry", + "corequisite": "" + }, + { + "moduleCode": "DSA5202", + "title": "Advanced Topics in Machine Learning", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DSA5102 Foundations of Machine Learning, or departmental approval.", + "corequisite": "" + }, + { + "moduleCode": "DSA5203", + "title": "Visual Data Processing and Interpretation", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA4230 or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "DSA5204", + "title": "Deep Learning and Applications", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "CS5242", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "DSA5205", + "title": "Data Science in Quantitative Finance", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "DSA5231", + "title": "Data Analytics for the Digital Workplace", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DSA5731", + "title": "Data Science for A-level Mathematics Teachers", + "moduleCredit": 1, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed a Bachelor’s degree in a quantitative subject, including but not limited to mathematics, applied mathematics, statistics and engineering.", + "corequisite": "" + }, + { + "moduleCode": "DSA5811", + "title": "Data Analytics: Principles and Practice", + "moduleCredit": 1, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed a Bachelor’s degree with modules/courses in calculus, linear algebra and probability", + "corequisite": "" + }, + { + "moduleCode": "DSA5812", + "title": "Data Analytics: Further Principles and Practice", + "moduleCredit": 1, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed DSA5811 Data Analytics: Principles and Practice", + "corequisite": "" + }, + { + "moduleCode": "DSA5821", + "title": "Data Visualisation: Principles and Practice", + "moduleCredit": 1, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed a Bachelor’s degree", + "corequisite": "" + }, + { + "moduleCode": "DSA5822", + "title": "Data Visualisation: Further Principles and Practice", + "moduleCredit": 1, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed DSA5821 Data Visualisation: Principles and Practice", + "corequisite": "" + }, + { + "moduleCode": "DSA5831", + "title": "Learning from Data: Principles and Practice", + "moduleCredit": 1, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed a Bachelor’s degree with modules/courses in calculus, linear algebra, probability, and inferential statistics\nOR\nPassed DSA5812 Data Analytics: Further Principles and Practice", + "corequisite": "" + }, + { + "moduleCode": "DSA5841", + "title": "Learning from Data: Decision Trees", + "moduleCredit": 1, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed DSA5831 Learning from Data: Principles and Practice", + "corequisite": "" + }, + { + "moduleCode": "DSA5842", + "title": "Learning from Data: Support Vector Machines", + "moduleCredit": 1, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed DSA5831 Learning from Data: Principles and Practice", + "corequisite": "" + }, + { + "moduleCode": "DSA5843", + "title": "Learning from Data: Neural Networks", + "moduleCredit": 1, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed DSA5831 Learning from Data: Principles and Practice", + "corequisite": "" + }, + { + "moduleCode": "DSC1007", + "title": "Business Analytics - Models & Decisions", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "DSC1007X", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DSC1007X", + "title": "Business Analytics - Models & Decisions", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "DSC1007", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DSC1704", + "title": "Decision Analytics using Spreadsheets", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "DSC1007; DSC1007X", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DSC1704X", + "title": "Decision Analytics using Spreadsheets", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "DSC1007; DSC1007X", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DSC2003", + "title": "Management Science", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH2003 or BZ3415 or BK3503 or BK3519A or MA2215.\nAll Industrial & Systems Engineering (ISE) students.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DSC2006", + "title": "Operations Management", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "BH2006 or BZ2003 or BK2006 or IE3120. All Industrial & Systems (ISE) students", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DSC2008", + "title": "Business Analytics - Data & Decisions", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "ST1131/ST1131A Introduction to Statistics, ST1232 Statistics for Life Sciences and ST2334 Probability and Statistics.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DSC2702", + "title": "Programming for Business Analytics", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DSC1704 Decision Analytics using Spreadsheets.", + "corequisite": "" + }, + { + "moduleCode": "DSC2703", + "title": "Operations and Technology Management", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DSC3201", + "title": "Supply Chain Management", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "BH3201 or BZ3402 or BK3505 or IE4220 or CS5262.\nAll Industrial & Systems Engineering (ISE) students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DSC2006 or BH2006 or BZ2003 or BK2006", + "corequisite": "" + }, + { + "moduleCode": "DSC3202", + "title": "Purchasing And Materials Management", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "BH3202 or BZ3414 or BK3206", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DSC2006 or BH2006 or BZ2003 or BK2006", + "corequisite": "" + }, + { + "moduleCode": "DSC3203", + "title": "Service Operations Management", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "BH3203 or BZ3404 or BK3501", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DSC2006 or BH2006 or BZ2003 or BK2006", + "corequisite": "" + }, + { + "moduleCode": "DSC3211", + "title": "Internet For E-Business", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "IT1004", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DSC3214", + "title": "Introduction To Optimisation", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "IE2110", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DSC1007 or [(MA1101R or MA1311) and (MA1521 or MA1102R)]", + "corequisite": "" + }, + { + "moduleCode": "DSC3215", + "title": "Stochastic Models In Management", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DSC1007/DSC1007X or ST2131 or ST2334", + "corequisite": "" + }, + { + "moduleCode": "DSC3216", + "title": "Predictive Analytics in Business", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DSC3217", + "title": "Introduction to Decision Analysis", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "All Industrial and Systems Engineering (ISE) students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DSC3218", + "title": "Physical Distribution Management", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH3218 or BZ3401 or BK3504", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DSC2006 or BH2006 or BZ2003 or BK2006", + "corequisite": "" + }, + { + "moduleCode": "DSC3219", + "title": "Quality Management", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "IE2130", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST1131A and DSC2006", + "corequisite": "" + }, + { + "moduleCode": "DSC3222", + "title": "Topics in Operations and Supply Chain Management (TIOSCM)", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DSC2006", + "corequisite": "" + }, + { + "moduleCode": "DSC3222C", + "title": "TIOSCM: Management Of Invention and Innovation", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DSC3222K", + "title": "TIOSCM: Logistics and Transportation", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DSC3201 is co-requisite while DSC 2006 is a pre-requisite", + "corequisite": "" + }, + { + "moduleCode": "DSC3222M", + "title": "TIOSCM: Business Practicum", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Student should have completed all levels 1000 and 2000 foundation modules.", + "corequisite": "" + }, + { + "moduleCode": "DSC3222X", + "title": "Topics in Operations and Supply Chain Management (TIOSCM)", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DSC3222Y", + "title": "Topics in Operations and Supply Chain Management (TIOSCM)", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DSC3222Z", + "title": "Topics in Operations and Supply Chain Management (TIOSCM)", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DSC3223", + "title": "Operations Strategy", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DSC1007or ST1131 or ST1232 or MA2216 or ST2131 or ST2334 or EE2003 or ME2491", + "corequisite": "" + }, + { + "moduleCode": "DSC3224", + "title": "Dynamic Pricing & Revenue Management", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DSC1007 or IE2110 or DSC3214", + "corequisite": "" + }, + { + "moduleCode": "DSC3225", + "title": "Project Management", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DSC3226", + "title": "Sustainable Operations Management", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DSC2006 Operations Management", + "corequisite": "" + }, + { + "moduleCode": "DSC3227", + "title": "Technology and Business Innovation", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "DSC3213, DOS3811, DOS3711", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DSC3229", + "title": "Independent Study in Ops & Supply Chain Mgt", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Vary according to project topic. In general, however, students will have to have completed the core modules of the BBA/BBA(Acc) curriculum.", + "corequisite": "" + }, + { + "moduleCode": "DSC3239", + "title": "Independent Study in Ops & Supply Chain Mgt", + "moduleCredit": 2, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Vary according to project topic. In general, however,\nstudents will have to have completed the core modules of\nthe BBA/BBA(Acc) curriculum.", + "corequisite": "Vary according to project topics" + }, + { + "moduleCode": "DSC4211", + "title": "Seminar in Operations and Supply Chain Management (SIOSCM)", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Vary depending on specific modules offered.", + "corequisite": "" + }, + { + "moduleCode": "DSC4211C", + "title": "SIOSCM: Operations Strategy", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DSC4211E", + "title": "SIOSCM: Decision Models in Banking", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST1131A", + "corequisite": "" + }, + { + "moduleCode": "DSC4211F", + "title": "SIOSCM: Independent Study Module", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DSC4211G", + "title": "SIOSCM: Service Design", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DSC2006 Operations Management", + "corequisite": "" + }, + { + "moduleCode": "DSC4211X", + "title": "Seminars in Operations and Supply Chain Management", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DSC4212", + "title": "Managerial Decision Analysis", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DSC1007 and BSP1005", + "corequisite": "" + }, + { + "moduleCode": "DSC4213", + "title": "Analytical Tools for Consulting", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DSC1007 or IE2110 or DSC3214", + "corequisite": "" + }, + { + "moduleCode": "DSC4214", + "title": "Co-ordination and Flexibility in SCM", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DSC3201", + "corequisite": "" + }, + { + "moduleCode": "DSC4215", + "title": "Data Visualisation", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Operations and Technology Management", + "corequisite": "" + }, + { + "moduleCode": "DSC4216", + "title": "Business-driven Technology", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DSC3201 Supply Chain Management", + "corequisite": "" + }, + { + "moduleCode": "DSC4217", + "title": "Business Analytics with R", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DSC1007 Business Analytics – Models and Decisions;\nand\nDSC2008 Business Analytics – Data and Decisions", + "corequisite": "" + }, + { + "moduleCode": "DSC4219", + "title": "Advanced Independent Study in Ops & Supply Chain Mgt", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Vary according to project topic. In general, however, students will have to have completed the core modules of the BBA/BBA(Acc) curriculum.", + "corequisite": "" + }, + { + "moduleCode": "DSC4229", + "title": "Advanced Independent Study in Ops & Supply Chain Mgt", + "moduleCredit": 2, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Vary according to project topic. In general, however, students will have to have completed the core modules of the BBA/BBA(Acc) curriculum.", + "corequisite": "Vary according to project topics." + }, + { + "moduleCode": "DSC5101", + "title": "Analytics in Managerial Economics", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DSC5102", + "title": "Business Analytics Capstone Project", + "moduleCredit": 12, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DSC5103", + "title": "Statistics", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DSC5106", + "title": "Foundation in Data Analytics I", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BT4222 Mining Web Data for Business Insights,\nST5202 Applied Regression Analysis,\nST5318 Statistical Methods for Health Science", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MSBA students with familiarity with Python programming", + "corequisite": "" + }, + { + "moduleCode": "DSC5221A", + "title": "Managing the Financial Supply Chain", + "moduleCredit": 2, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "DSC5211A Supply Chain Co-ordination & Risk Management", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DSN3702", + "title": "Descriptive Analytics with R", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DSC1704 Decision Analytics using Spreadsheets", + "corequisite": "" + }, + { + "moduleCode": "DSN4712", + "title": "Statistical Learning for Managerial Decision", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DSC1704 Decision Analytics using Spreadsheets", + "corequisite": "" + }, + { + "moduleCode": "DSN4761", + "title": "Seminars in Analytics", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DSC1704 Decision Analytics using Spreadsheets", + "corequisite": "" + }, + { + "moduleCode": "DSS4711", + "title": "Supply Chain Applied Project", + "moduleCredit": 4, + "department": "Analytics and Operations", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DSC2703 Operations and Technology Management", + "corequisite": "" + }, + { + "moduleCode": "DTS2701", + "title": "Engineering Mathematics", + "moduleCredit": 2, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS3001", + "title": "Defence Technology Systems Project", + "moduleCredit": 2, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5001", + "title": "Fundamental Mathematics and Physics", + "moduleCredit": 6, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5002", + "title": "C4isr", + "moduleCredit": 3, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5003", + "title": "Firepower & Infrastructure Protection", + "moduleCredit": 3, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5111", + "title": "Land Systems", + "moduleCredit": 3, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5121", + "title": "Air Systems", + "moduleCredit": 3, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5131", + "title": "Naval Systems", + "moduleCredit": 3, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5201", + "title": "Communications", + "moduleCredit": 5, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5202", + "title": "Electronic Warfare", + "moduleCredit": 3, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5203", + "title": "Computer Networks and Data Fusion", + "moduleCredit": 2, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5204", + "title": "Sensors", + "moduleCredit": 4, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5205", + "title": "Lasers and Electro-Optics", + "moduleCredit": 4, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5311", + "title": "Advanced Communications", + "moduleCredit": 5, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5312", + "title": "Advanced Sensors", + "moduleCredit": 5, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5321", + "title": "Physics of Weapon Systems", + "moduleCredit": 6, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5322", + "title": "Control, Guidance & Propulsion", + "moduleCredit": 5, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5331", + "title": "Engineering Materials", + "moduleCredit": 5, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5332", + "title": "Protection Technology", + "moduleCredit": 3, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5401", + "title": "Operations Modelling & Decision Making", + "moduleCredit": 3, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5402", + "title": "Operational Test & Experimentation", + "moduleCredit": 3, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5403", + "title": "Systems Engineering", + "moduleCredit": 3, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5404", + "title": "Systems Simulation & Heuristics", + "moduleCredit": 2, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5405", + "title": "Defence Systems Assessment & Modelling", + "moduleCredit": 3, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5701", + "title": "Large Scale Systems Engineering", + "moduleCredit": 4, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5702", + "title": "C3 Systems", + "moduleCredit": 4, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5703", + "title": "Operations Research", + "moduleCredit": 4, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5704", + "title": "Integrated Logistics Support", + "moduleCredit": 4, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5707", + "title": "Modelling and Simulation", + "moduleCredit": 4, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5708", + "title": "Survivability", + "moduleCredit": 4, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5710", + "title": "Information Operations", + "moduleCredit": 3, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5711", + "title": "Integration Project", + "moduleCredit": 8, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5712", + "title": "Thesis Project", + "moduleCredit": 8, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5713", + "title": "Systems Engineering & Design", + "moduleCredit": 4, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5720", + "title": "Systems Engineering Project Management", + "moduleCredit": 4, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [], + "preclusion": "SDM5004 Systems Engineering Project Management", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5721", + "title": "Power Pack For Military Vehicles", + "moduleCredit": 3, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5722", + "title": "Advanced Protection Design", + "moduleCredit": 3, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5723", + "title": "Vehicle Dynamics", + "moduleCredit": 3, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5724", + "title": "Design and Case Studies", + "moduleCredit": 3, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5725", + "title": "Model-Based Systems Engineering", + "moduleCredit": 4, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [], + "preclusion": "SDM5010 Model-Based Systems Engineering", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5726", + "title": "Fundamentals of Systems Engineering and Architecting", + "moduleCredit": 4, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [], + "preclusion": "IE5402 Systems Engineering and Architecture\nSyE5001 Systems Engineering and Architecture\nSDM5001 Systems architecture\nSDM 5002 Systems Engineering\nDTS5716 Systems Approach to Engineering Management", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5727", + "title": "Operational Test and Evaluation", + "moduleCredit": 4, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Background in systems engineering and statistics is desired.", + "corequisite": "" + }, + { + "moduleCode": "DTS5729", + "title": "Research Thesis", + "moduleCredit": 16, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5731", + "title": "Fundamentals of Systems Engineering", + "moduleCredit": 2, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [ + 2 + ], + "preclusion": "IE5402 Systems Engineering and Architecture\nSyE5001 Systems Engineering and Architecture\nSDM 5002 Systems Engineering\nDTS5726 Fundamentals of Systems Engineering and Architecture", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5732", + "title": "Artificial Intelligence and Data Analytics", + "moduleCredit": 4, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Probability, statistics, linear algebra, and calculus.", + "corequisite": "" + }, + { + "moduleCode": "DTS5733", + "title": "Sensors and Intelligence", + "moduleCredit": 4, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5734", + "title": "Guided Systems", + "moduleCredit": 4, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Basic undergraduate mathematics at the level of\nDTS2701 Engineering Mathematics\nDTS2703 Probability and Statistics", + "corequisite": "" + }, + { + "moduleCode": "DTS5735", + "title": "Cybersecurity", + "moduleCredit": 4, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DTS5736", + "title": "Systems Design Project", + "moduleCredit": 2, + "department": "Temasek Defence Systems Inst", + "faculty": "Temasek Defence Sys. Institute", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DTS5731 Fundamentals of Systems Engineering", + "corequisite": "DTS5701 Large Scale Systems Engineering" + }, + { + "moduleCode": "DY5190", + "title": "Graduate Seminar module", + "moduleCredit": 0, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DY5310", + "title": "Endodontics", + "moduleCredit": 0, + "department": "Division of Graduate Dental Studies", + "faculty": "Dentistry", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DY5320", + "title": "Oral & Maxillofacial Surgery", + "moduleCredit": 0, + "department": "Division of Graduate Dental Studies", + "faculty": "Dentistry", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DY5330", + "title": "Orthodontics", + "moduleCredit": 0, + "department": "Division of Graduate Dental Studies", + "faculty": "Dentistry", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DY5340", + "title": "Periodontology", + "moduleCredit": 0, + "department": "Division of Graduate Dental Studies", + "faculty": "Dentistry", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DY5350", + "title": "Prosthodontics", + "moduleCredit": 0, + "department": "Division of Graduate Dental Studies", + "faculty": "Dentistry", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "DY5360", + "title": "Paediatric Dentistry", + "moduleCredit": 0, + "department": "Division of Graduate Dental Studies", + "faculty": "Dentistry", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EB5001", + "title": "Big Data Engineering for Analytics", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "There are no hard prerequisites in terms of existing courses, but it would be desirable for students to have some of familiarity with distributed computing, business intelligence and business analytics.", + "corequisite": "" + }, + { + "moduleCode": "EB5002", + "title": "Text Processing Using Machine Learning", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "KE5205", + "corequisite": "" + }, + { + "moduleCode": "EB5101", + "title": "Foundations of Business Analytics", + "moduleCredit": 8, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EB5102", + "title": "Data Analytics", + "moduleCredit": 8, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EB5001 Foundations of Business Analytics", + "corequisite": "" + }, + { + "moduleCode": "EB5103", + "title": "Advanced Analytics", + "moduleCredit": 8, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EB5001 Foundations of Business Analytics\nEB5002 Data Analytics", + "corequisite": "" + }, + { + "moduleCode": "EB5104", + "title": "Decision Making and Optimization", + "moduleCredit": 8, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EB5001 Foundations of Business Analytics", + "corequisite": "" + }, + { + "moduleCode": "EB5105", + "title": "Enterprise Business Analytics Project", + "moduleCredit": 12, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EB5001 Foundations of Business Analytics\nEB5002 Data Analytics\nEB5003 Advanced Analytics", + "corequisite": "" + }, + { + "moduleCode": "EB5106", + "title": "Enterprise Business Analytics Overseas Practicum", + "moduleCredit": 12, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "Students that select EB5105 Enterprise Business Analytics Project cannot also select the Enterprise Business Analytics Overseas Practicum and vice versa.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Before commencing the Enterprise Business Analytics Overseas Practicum, the students must successfully complete the four MTech EBAC core courses:\n\nEB5101 Foundations of Business Analytics\nEB5102 Data Analytics\nEB5103 Advanced Analytics\nEB5104 Decision Making and Optimization\n\nIn addition, they must demonstrate in the electives they have taken and/or in their work experience that they have the technical background for the project being offered by NOC.", + "corequisite": "" + }, + { + "moduleCode": "EB5201", + "title": "Campaign Management", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EB5001 Foundations of Business Analytics", + "corequisite": "" + }, + { + "moduleCode": "EB5202", + "title": "Web Analytics", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EB5001 Foundations of Business Analytics", + "corequisite": "" + }, + { + "moduleCode": "EB5203", + "title": "Customer Relationship Management", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EB5001 Foundations of Business Analytics", + "corequisite": "" + }, + { + "moduleCode": "EB5204", + "title": "New Media and Sentiment Mining", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EB5001 Foundations of Business Analytics", + "corequisite": "" + }, + { + "moduleCode": "EB5205", + "title": "Clinical Health Analytics", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EB5001 Foundations of Business Analytics", + "corequisite": "" + }, + { + "moduleCode": "EB5206", + "title": "Supply Chain Analytics", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EB5001 Foundations of Business Analytics", + "corequisite": "" + }, + { + "moduleCode": "EB5207", + "title": "Service Analytics", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EB5001 Foundations of Business Analytics", + "corequisite": "" + }, + { + "moduleCode": "EB5208", + "title": "Geospatial Analytics", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "There are no hard prerequisites in terms of existing courses, but it would be desirable for students to have some interest in data mining.", + "corequisite": "" + }, + { + "moduleCode": "EBA5001", + "title": "Management of Business Analytics Project", + "moduleCredit": 10, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EBA5002", + "title": "Business Analytics Practice", + "moduleCredit": 13, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EBA5003", + "title": "Customer Analytics", + "moduleCredit": 8, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EBA5002 Mandatory, EBA5001 Recommended", + "corequisite": "" + }, + { + "moduleCode": "EBA5004", + "title": "Practical Language Processing", + "moduleCredit": 13, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EBA5002 Mandatory, EBA5001 Recommended", + "corequisite": "" + }, + { + "moduleCode": "EBA5005", + "title": "Specialized Predictive Modelling and Forecasting", + "moduleCredit": 10, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EBA5002 Mandatory, EBA5001 Recommended, Qlik Sense Tools or equivalent for Service Analytics", + "corequisite": "" + }, + { + "moduleCode": "EBA5006", + "title": "Big Data Engineering and Web Analytics", + "moduleCredit": 10, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EBA5002 Mandatory, EBA5001 Recommended", + "corequisite": "" + }, + { + "moduleCode": "EBA5007", + "title": "Capstone Project in Data Analytics", + "moduleCredit": 6, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EBA5001, EBA5002", + "corequisite": "" + }, + { + "moduleCode": "EC1101E", + "title": "Introduction to Economic Analysis", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "EC1301, BSP1005/BSP1703, RE1704.\nAll BBA and BBA(Hons) students are not allowed to take EC1101E.\nAll BAC and BAC (Hons) students from Cohort 2016 and before are not allowed to take EC1101E.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC1301", + "title": "Principles of Economics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "EC1101E, BSP1005/BSP1703, RE1704.\nAll BBA and BBA(Hons) students are not allowed to take EC1101E.\nAll BAC and BAC (Hons) students from Cohort 2016 and before are not allowed to take EC1101E.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC2101", + "title": "Microeconomic Analysis I", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC1101E or EC1301 or RE1704 or BSP1005/BSP1703", + "corequisite": "" + }, + { + "moduleCode": "EC2102", + "title": "Macroeconomic Analysis I", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "BSP2001, BSE3701", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC1101E or EC1301 or RE1704 or BSP1005/BSP1703", + "corequisite": "" + }, + { + "moduleCode": "EC2104", + "title": "Quantitative Methods for Economic Analysis", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "Any 2MC MA modules and 4MC MA modules that is not MA1301/MA1301FC/MA1301X OR MA1311 OR MA1312 OR MA1421", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC2204", + "title": "Financial Accounting for Economists", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "ACC1002, ACC1002X, ACC1701, ACC1701X", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC1101E or EC1301 or GET1023", + "corequisite": "" + }, + { + "moduleCode": "EC2205", + "title": "Economic Analysis of Business", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "All BBA, BAC, BBA (Hons) and BAC(Hons) students are not allowed to take EC2205", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC1101E, EC1301", + "corequisite": "" + }, + { + "moduleCode": "EC2303", + "title": "Foundations for Econometrics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "All ST and SA modules, DSC1007 or DSC1007X, MA2216, BT1101", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC2374", + "title": "Economy of Modern China I", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC1101E or EC1301 or RE1704 or BSP1005/BSP1703", + "corequisite": "" + }, + { + "moduleCode": "EC2383", + "title": "Environmental Economics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "EC3383", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC1301 or EC1101E or BSP1703/BSP1005 or RE1704", + "corequisite": "" + }, + { + "moduleCode": "EC2880", + "title": "Topics in Economics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC3101", + "title": "Microeconomic Analysis II", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC2101 AND (EC2104 OR ANY MA MODULE THAT IS NOT MA1301/MA1301FC/MA1301X OR MA1311 OR MA1312 OR MA1421)", + "corequisite": "" + }, + { + "moduleCode": "EC3102", + "title": "Macroeconomic Analysis II", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC2102, EC2101, AND (EC2104 OR ANY MA MODULE THAT IS NOT MA1301/MA1301FC/MA1301X OR MA1311 OR MA1312 OR MA1421)", + "corequisite": "" + }, + { + "moduleCode": "EC3303", + "title": "Econometrics I", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "ST3131", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(EC1101E or EC1301 or BSP1005) and (EC2303 or DSC1007 or DSC1007X or any ST or SA module or MA2216)", + "corequisite": "" + }, + { + "moduleCode": "EC3304", + "title": "Econometrics II", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(EC3303 OR ST3131) AND (EC2104 OR ANY MA MODULE THAT IS NOT MA1301/MA1301FC/MA1301X OR MA1311 OR MA1312 OR MA1421)", + "corequisite": "" + }, + { + "moduleCode": "EC3305", + "title": "Programming Tools for Economics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC2303", + "corequisite": "" + }, + { + "moduleCode": "EC3312", + "title": "Game Theory & Applications to Economics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "MA4264", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC2101 and (EC2104 or any MA module that is not MA1301/MA1301FC/MA1301X or MA1311 or MA1312 or MA1421)", + "corequisite": "" + }, + { + "moduleCode": "EC3314", + "title": "Mathematics for Economists", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "EC3311, B.Eng. degree students, and students who major in Mathematics/Applied Mathematics", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(EC2104 or MA1101R or MA1102R or MA1505 or MA1506 or MA1507 or MA1508) and (EC2101 and EC2102)", + "corequisite": "" + }, + { + "moduleCode": "EC3322", + "title": "Industrial Organisation I", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "IS3240, CS3265", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC2101 AND (EC2104 OR ANY MA MODULE THAT IS NOT MA1301/MA1301FC/MA1301X OR MA1311 OR MA1312 OR MA1421)", + "corequisite": "" + }, + { + "moduleCode": "EC3332", + "title": "Money and Banking I", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC2102 AND (EC2104 OR ANY MA MODULE THAT IS NOT MA1301/MA1301FC/MA1301X OR MA1311 OR MA1312 OR MA1421)", + "corequisite": "" + }, + { + "moduleCode": "EC3333", + "title": "Financial Economics I", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC2101 AND (EC2102 OR BSP2001) AND (EC2104 OR ANY MA MODULE THAT IS NOT MA1301/MA1301FC/MA1301X OR MA1311 OR MA1312 OR MA1421)", + "corequisite": "" + }, + { + "moduleCode": "EC3342", + "title": "International Trade I", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "EC3341", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC2101 and EC2102", + "corequisite": "" + }, + { + "moduleCode": "EC3343", + "title": "International Finance I", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "EC3341", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC2101 and EC2102", + "corequisite": "" + }, + { + "moduleCode": "EC3351", + "title": "Public Finance", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC2101 AND (EC2104 OR ANY MA MODULE THAT IS NOT MA1301/MA1301FC/MA1301X OR MA1311 OR MA1312 OR MA1421)", + "corequisite": "" + }, + { + "moduleCode": "EC3361", + "title": "Labour Economics I", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "YSS3244", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC2101, (EC2104 OR ANY MA MODULE THAT IS NOT MA1301/MA1301FC/MA1301X OR MA1311 OR MA1312 OR MA1421), AND EC3303", + "corequisite": "" + }, + { + "moduleCode": "EC3362", + "title": "Population Economics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC2101 AND (EC2104 OR ANY MA MODULE THAT IS NOT MA1301/MA1301FC/MA1301X OR MA1311 OR MA1312 OR MA1421)", + "corequisite": "" + }, + { + "moduleCode": "EC3371", + "title": "Development Economics I", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "\"EC2101, (EC2104 OR ANY MA MODULE THAT IS NOT MA1301/MA1301FC/MA1301X OR MA1311 OR MA1312 OR MA1421), AND EC3303\"", + "corequisite": "" + }, + { + "moduleCode": "EC3373", + "title": "Asean Economies", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC3375, EC3376, EU3214", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC2101", + "corequisite": "" + }, + { + "moduleCode": "EC3374", + "title": "Economy of Modern China II", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC2374 or [EC2101 and EC2102/BSP2001]", + "corequisite": "" + }, + { + "moduleCode": "EC3375", + "title": "Economy and Business of Japan and Korea", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC2101", + "corequisite": "" + }, + { + "moduleCode": "EC3376", + "title": "Economics of European Integration", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC3373, EC3375, EU3214", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC2101 and EC2102", + "corequisite": "" + }, + { + "moduleCode": "EC3378", + "title": "Emerging India in Asia's Economic Integration", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC2102", + "corequisite": "" + }, + { + "moduleCode": "EC3381", + "title": "Urban Economics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "RE2102, RE2705", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC2101 AND (EC2104 OR ANY MA MODULE THAT IS NOT MA1301/MA1301FC/MA1301X OR MA1311 OR MA1312 OR MA1421)", + "corequisite": "" + }, + { + "moduleCode": "EC3384", + "title": "Resource and Energy Economics I", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC2101 AND (EC2104 OR ANY MA MODULE THAT IS NOT MA1301/MA1301FC/MA1301X OR MA1311 OR MA1312 OR MA1421)", + "corequisite": "" + }, + { + "moduleCode": "EC3385", + "title": "Maritime and Shipping Economics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC2101", + "corequisite": "" + }, + { + "moduleCode": "EC3386", + "title": "Port Economics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC3391", + "title": "Evolution of Economic Thought & Analysis", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC3393", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed in GCE A Level Economics or EC1301 or EC1101E or BH1005/BSP1005 or USE2301", + "corequisite": "" + }, + { + "moduleCode": "EC3392", + "title": "European Economic History", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC3391, EC3393, EU3215", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC3393", + "title": "Comparative Economic Systems", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC3391, EC3392, EU3215", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed in GCE A Level Economics or EC1301 or EC1101E or BSP1005/BH1005 or USE2301", + "corequisite": "" + }, + { + "moduleCode": "EC3394", + "title": "Economics and Psychology", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC2101 Microeconomic AnalysisI\nEC2102 Macroeconomic AnalysisI and\nEC3303 Econometrics I", + "corequisite": "" + }, + { + "moduleCode": "EC3395", + "title": "Economics and Ethics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC2101, EC2102, EC3101, EC3102", + "corequisite": "" + }, + { + "moduleCode": "EC3396", + "title": "Economic Analysis of Law I", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC2101", + "corequisite": "" + }, + { + "moduleCode": "EC3551", + "title": "FASS Undergraduate Research Opportunity (UROP)", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must:\nhave declared a Major, completed a minimum of 24 MCs in that Major, and have a CAP of at least 3.20.", + "corequisite": "" + }, + { + "moduleCode": "EC3880", + "title": "Topics in Economics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC2101 Microeconomic Analysis I and EC2102 Macroeconomic Analysis I", + "corequisite": "" + }, + { + "moduleCode": "EC3880A", + "title": "Topics in Economics: Understanding Government", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PP5141", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC2101, EC2102, EC3101 and EC3102", + "corequisite": "" + }, + { + "moduleCode": "EC3880C", + "title": "Topics in Economics: Economic History of Southeast Asia", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC3880D", + "title": "Topics in Economics: Empire, Economics, and Identity", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC3880E", + "title": "Topics in Economics: The Rise and Fall of Great Cities", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC3880F", + "title": "Topics in Economics: Miracle and Crisis in East Asia", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC3880G", + "title": "Topics in Economics: Introduction to Health Economics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC4103", + "title": "Singapore Economy: Practice and Policy", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012 onwards: Completed 110MCs including 60MCs in EC, with minimum CAP of 3.20 or be on the Honours track. EC3101, EC3102, and EC3303", + "corequisite": "" + }, + { + "moduleCode": "EC4301", + "title": "Microeconomic Analysis III", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs including 28MCs in EC, with a minimum CAP of\n3.20 or be on the Honours track. Prerequisite(s): minimum average grade point for EC3101 and EC3102 together of 4.0 Note: If you do not have the current prerequisites for EC4301 and EC4302, but have:\n1.\tpassed at least 56 MCs in Economics modules (inclusive of EC3101 and EC3102), and\n2.\tobtained an SJAP (average grade of all Economics modules) of at least 3.50,\nthen you may submit an appeal to waive the prerequisites for EC4301 and EC4302.", + "corequisite": "" + }, + { + "moduleCode": "EC4302", + "title": "Macroeconomic Analysis III", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs including 28MCs in EC, with a minimum CAP of\n3.20 or be on the Honours track. Prerequisite(s): minimum average grade point for EC3101 and EC3102 together of 4.0 Note: If you do not have the current prerequisites for EC4301 and EC4302, but have:\n1. passed at least 56 MCs in Economics modules (inclusive of EC3101 and EC3102), and \n2. obtained an SJAP (average grade of all Economics modules) of at least 3.50,\nthen you may submit an appeal to waive the prerequisites for EC4301 and EC4302.", + "corequisite": "" + }, + { + "moduleCode": "EC4303", + "title": "Econometrics III", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EC, with a minimum CAP of 3.20 or be on the Honours track. EC3101, EC3102 and EC3304.", + "corequisite": "" + }, + { + "moduleCode": "EC4304", + "title": "Economic and Financial Forecasting", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EC, with a minimum CAP of 3.20 or be on the Honours track. EC3303 and EC3304.", + "corequisite": "" + }, + { + "moduleCode": "EC4305", + "title": "Applied Econometrics", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EC, with a minimum CAP of 3.20 or be on the Honours track. EC3304.", + "corequisite": "" + }, + { + "moduleCode": "EC4306", + "title": "Applied Microeconomic Analysis", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "EC4301", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EC, with a minimum CAP of 3.20 or be on the Honours track. EC3101.", + "corequisite": "" + }, + { + "moduleCode": "EC4307", + "title": "Issues in Macroeconomics", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EC, with a minimum CAP of 3.20 or be on the Honours track. EC3102.", + "corequisite": "" + }, + { + "moduleCode": "EC4308", + "title": "Machine Learning and Economic Forecasting", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EC, with a minimum CAP of 3.20 or be on the Honours track.\nEC3304", + "corequisite": "" + }, + { + "moduleCode": "EC4311", + "title": "Mathematical Economic Analysis", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EC, with a minimum CAP of\n3.20 or be on the Honours track. EC3101 and EC3102.", + "corequisite": "" + }, + { + "moduleCode": "EC4313", + "title": "Search Theory and Applications", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EC, with a minimum CAP of 3.20 or be on the Honours track. EC3101 and EC3102.", + "corequisite": "" + }, + { + "moduleCode": "EC4322", + "title": "Industrial Organisation II", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EC, with a minimum CAP of 3.20 or be on the Honours track. EC3101, EC3102, EC3303, and (EC3322 or EC3312).", + "corequisite": "" + }, + { + "moduleCode": "EC4323", + "title": "Income Distribution Analysis", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EC, with a minimum CAP of 3.20 or be on the Honours track. EC3101, EC3102 and (EC3303 or ST3131).", + "corequisite": "" + }, + { + "moduleCode": "EC4324", + "title": "Economics of Competition Policy", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EC, with a minimum CAP of 3.20 or be on the Honours track. EC3101, EC3102, and (EC3312 or EC3322).", + "corequisite": "" + }, + { + "moduleCode": "EC4331", + "title": "Monetary Economics and Policy", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EC, with a minimum CAP of 3.20 or be on the Honours track. EC3102 and EC3332.", + "corequisite": "EC4302" + }, + { + "moduleCode": "EC4332", + "title": "Money and Banking II", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EC, with a minimum CAP of 3.20 or be on the Honours track. EC3101, EC3102, EC3303, and EC3332.", + "corequisite": "" + }, + { + "moduleCode": "EC4333", + "title": "Financial Economics II", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "MA3245 and MA4269", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EC, with a minimum CAP of 3.20 or be on the Honours track. EC3101, EC3102 and EC3333.", + "corequisite": "" + }, + { + "moduleCode": "EC4334", + "title": "Financial Market Microstructure", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EC, with a minimum CAP of 3.20 or be on the Honours track. EC3101, EC3304, and EC3333.", + "corequisite": "" + }, + { + "moduleCode": "EC4342", + "title": "International Trade II", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC4341", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EC modules, with a minimum CAP of 3.20 or be on the Honours track. EC3101, EC3102, EC3303, and EC3342", + "corequisite": "" + }, + { + "moduleCode": "EC4343", + "title": "International Finance II", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EC modules, with a minimum CAP of 3.20 or be on the Honours track. EC3101, EC3102, EC3303, and EC3343", + "corequisite": "" + }, + { + "moduleCode": "EC4351", + "title": "Public Economics", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EC, with a minimum CAP of 3.20 or be on the Honours track. EC3101, EC3102, EC3303, and EC3351.", + "corequisite": "" + }, + { + "moduleCode": "EC4352", + "title": "Singapore Economy: Practice and Policy", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "EC4103", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EC, with a minimum CAP of 3.20 or be on the Honours track. EC3101, EC3102, and EC3303", + "corequisite": "" + }, + { + "moduleCode": "EC4353", + "title": "Health Economics", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs including 28MCs in EC, with a minimum CAP of 3.20 or be on the Honours track. EC3101 and EC3304.", + "corequisite": "" + }, + { + "moduleCode": "EC4354", + "title": "Economics of Education", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012 onwards:\nCompleted 80 MCs, including 28 MCs in EC, with a minimum CAP of 3.20 or be on the Honours track. EC3101, EC3102, and EC3303.", + "corequisite": "" + }, + { + "moduleCode": "EC4355", + "title": "Economics of Ageing", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EC, with a minimum CAP of 3.20 or be on the Honours track. EC3101, EC3102, EC3303, and EC3305", + "corequisite": "" + }, + { + "moduleCode": "EC4361", + "title": "Labour Economics II", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012 onwards: \nCompleted 80 MCs, including 28 MCs in EC, with a minimum CAP of 3.20 or be on the Honours track. EC3101, EC3102, EC3303, and EC3361.", + "corequisite": "" + }, + { + "moduleCode": "EC4362", + "title": "Immigration Economics", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EC, with a minimum CAP of 3.20 or be on the Honours track. EC3101, EC3102, EC3303, and (EC3351 or EC3361 or EC3371).", + "corequisite": "" + }, + { + "moduleCode": "EC4363", + "title": "Applied Population Economics", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EC, with a minimum CAP of 3.20 or be on the Honours track. EC3101, EC3102, EC3303, and EC3361.", + "corequisite": "" + }, + { + "moduleCode": "EC4371", + "title": "Development Economics", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EC, with a minimum CAP of 3.20 or be on the Honours track. EC3101, EC3102, and EC3303", + "corequisite": "" + }, + { + "moduleCode": "EC4372", + "title": "Technology and Innovation", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EC, with a minimum CAP of 3.20 or be on the Honours track. EC3101, EC3102, and EC3303.", + "corequisite": "" + }, + { + "moduleCode": "EC4373", + "title": "Policy Issues of Singapore Economy", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "SE4321", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EC, with a minimum CAP of 3.20 or be on the Honours track. EC3101, EC3102, and EC3303.", + "corequisite": "" + }, + { + "moduleCode": "EC4377", + "title": "Global Economic History", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC3377", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs including 28MCs in EC, with a minimum CAP of 3.20 or be on the Honours track. \nEC3101 and EC3304", + "corequisite": "" + }, + { + "moduleCode": "EC4382", + "title": "Transport Economics", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs including 28MCs in EC, with a minimum CAP of 3.20 or be on the Honours track. EC3101 and EC3304.", + "corequisite": "" + }, + { + "moduleCode": "EC4383", + "title": "Environmental Economics and Policy", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs including 28MCs in EC, with a minimum CAP of 3.20 or be on the Honours track. EC3101 and EC3304.", + "corequisite": "" + }, + { + "moduleCode": "EC4384", + "title": "Resource and Energy Economics II", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EC, with a minimum CAP of 3.20 or be on the Honours track. EC3101, EC3102, EC3303, and EC3384.", + "corequisite": "" + }, + { + "moduleCode": "EC4387", + "title": "Housing Economics", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EC, with a minimum CAP of 3.20 or be on the Honours track. EC3101 and EC3304.", + "corequisite": "" + }, + { + "moduleCode": "EC4391", + "title": "Economics of Entrepreneurship", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EC, with a minimum CAP of 3.20 or be on the Honours track. EC3101 and EC3303", + "corequisite": "" + }, + { + "moduleCode": "EC4392", + "title": "Comparative Business Cultures", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EU4217", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EC, with a minimum CAP of\n3.20 or be on the Honours track. EC3376 or EC3392 or EU3214 or EU3215.", + "corequisite": "" + }, + { + "moduleCode": "EC4394", + "title": "Behavioural Economics", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EC, with a minimum CAP of 3.20 or be on the Honours track. EC3101", + "corequisite": "" + }, + { + "moduleCode": "EC4396", + "title": "Economic Analysis of Law II", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EC, with a minimum CAP of 3.20 or be on the Honours track EC3101, EC3102, and EC3396.", + "corequisite": "" + }, + { + "moduleCode": "EC4398", + "title": "Economics of Inequality", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EC, with a minimum CAP of 3.20 or be on the Honours track. EC3101, EC3102, and EC3304.", + "corequisite": "" + }, + { + "moduleCode": "EC4399", + "title": "Behavioural Public Policy", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EC, with a\nminimum CAP of 3.20 or be on the Honours track.\nEC3101, EC3304, and (EC3394 or EC4394)", + "corequisite": "" + }, + { + "moduleCode": "EC4401", + "title": "Honours Thesis", + "moduleCredit": 15, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "EC4660, XFA4401, XFA4402, XFA4406", + "attributes": [ + false, + false, + false, + false, + true, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012-2015\n(1) Completed 110 MCs including 60 MCs of EC major requirements (or be on the Honours Track)\n(2) Minimum SJAP of 4.00 and CAP of 3.50\nStudents may seek a waiver of the SJAP pre-requisite from the department if they have a minimum CAP of 4.25 after completing 110 MCs.\n\nCohort 2016 onwards\n(1) Completed 110 MCs including 44 MCs of EC major requirements (or be on the Honours Track)\n(2) Minimum SJAP of 4.00 and CAP of 3.50\nStudents may seek a waiver of the SJAP pre-requisite from the department if they have a minimum CAP of 4.25 after completing 110 MCs.", + "corequisite": "" + }, + { + "moduleCode": "EC4660", + "title": "Independent Study", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "EC4401 or EC4401S or XFA4401 or XFA4402 or XFA4406", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "To be offered subject to the agreement of the Supervisor and Department.\nCohort 2012-2015\n(1) Completed 100 MCs, with 60 MCs in EC\n(2) Minimum CAP of 3.20\n\nCohort 2016 onwards\n(1) Completed 100 MCs, with 44 MCs in EC\n(2) Minimum CAP of 3.20", + "corequisite": "" + }, + { + "moduleCode": "EC4753", + "title": "Department exchange module", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC4880", + "title": "Topics in Economics", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EC, with a minimum CAP of 3.20 or be on the Honours track EC3101 and EC3102.", + "corequisite": "" + }, + { + "moduleCode": "EC4880A", + "title": "Topics in Economics: Economics of Careers", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EC, with a minimum CAP of 3.20 or be on the Honours track. EC3101 and EC3303.", + "corequisite": "" + }, + { + "moduleCode": "EC4881", + "title": "Topics in Econometrics", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EC, with a minimum CAP of 3.20 or be on the Honours track. EC3101, EC3102, and EC3303.", + "corequisite": "" + }, + { + "moduleCode": "EC4882", + "title": "Topics in Applied Economics", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EC, with a minimum CAP of 3.20 or be on the Honours track. EC3101, EC3102, and EC3303.", + "corequisite": "" + }, + { + "moduleCode": "EC4883", + "title": "Topics in Economic Policy", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EC, with a minimum CAP of 3.20 or be on the Honours track. EC3101, EC3102, and EC3303.", + "corequisite": "" + }, + { + "moduleCode": "EC5101", + "title": "Microeconomic Theory", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC5101R", + "title": "Microeconomic Theory", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC5102", + "title": "Macroeconomic Theory", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC5102R", + "title": "Macroeconomic Theory", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC5103", + "title": "Econometric Modelling and Applications I", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "EC5154", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC5253/EC5304/ECA5103", + "corequisite": "" + }, + { + "moduleCode": "EC5103R", + "title": "Econometric Modelling and Applications I", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "EC5154", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC5253/EC5304/ECA5103", + "corequisite": "" + }, + { + "moduleCode": "EC5104", + "title": "Mathematics for Economists", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "EC5210 and EC5311", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC5104R", + "title": "Mathematics for Economists", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "EC5210, EC5311", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC5305", + "title": "Computational Methods in Economics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC5101 Microeconomic Theory \nEC5102 Macroeconomic Theory", + "corequisite": "" + }, + { + "moduleCode": "EC5314", + "title": "Time Series Analysis", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC5214", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC5154/EC5103", + "corequisite": "" + }, + { + "moduleCode": "EC5314R", + "title": "Time Series Analysis", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC5214", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC5154/EC5103", + "corequisite": "" + }, + { + "moduleCode": "EC5319", + "title": "Experimental Economics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC5101", + "corequisite": "" + }, + { + "moduleCode": "EC5322", + "title": "Industrial Organisation", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC5215, EC5268", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC5322R", + "title": "Industrial Organisation", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC5215, EC5268", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC5324", + "title": "Cost-Benefit Analysis", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC5216, EC5264/EC5325/ECA5325", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC5324R", + "title": "Cost- Benefit Analysis", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC5216, EC5264/EC5325/ECA5325", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC5326", + "title": "Policy Impact Evaluation Methods", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC5326R", + "title": "Policy Impact Evaluation Methods", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC5332", + "title": "Money & Banking", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC5208", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC5332R", + "title": "Money & Banking", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC5208", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC5342", + "title": "International Trade", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "EC5265, IZ5202. Students who have already taken (or concurrently taking) courses in International Economics at the graduate level should not take this course, since there may be considerable overlapping of material.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Undergraduate major in Economics", + "corequisite": "" + }, + { + "moduleCode": "EC5342R", + "title": "International Trade", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "EC5265, IZ5202. Students who have already taken (or concurrently taking) courses in International Economics at the graduate level should not take this course, since there may be considerable overlapping of material.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Undergraduate major in Economics", + "corequisite": "" + }, + { + "moduleCode": "EC5352", + "title": "Public Economics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC5267,EC5209/EC5351/ECA5351", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC5352R", + "title": "Public Economics", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC5267,EC5209/EC5351/ECA5351", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC5353", + "title": "Health Economics & Policy", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC5217", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC5361", + "title": "Labour Economics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC5361R", + "title": "Labour Economics", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC5372", + "title": "Growth Theory", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC5206", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC5383", + "title": "Economics of the Environment", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC5218", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC5386", + "title": "Issues in Port Economics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Basic level mathematics, economics, and statistics. Previous work experience and knowledge of the maritime transport industry, specially ports and shipping.", + "corequisite": "" + }, + { + "moduleCode": "EC5386R", + "title": "Issues in Port Economics", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Basic level mathematics, economics, and statistics. Previous work experience and knowledge of the maritime transport industry, specially ports and shipping.", + "corequisite": "" + }, + { + "moduleCode": "EC5387", + "title": "Issues in Maritime and Shipping Economics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have read EC2104 Quantitative Methods for Economic Analysis OR EC2303 Foundations for Econometrics AND EC3101 Microeconomic Analysis II or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "EC5387R", + "title": "Issues in Maritime and Shipping Economics", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have read EC2104 Quantitative Methods for Economic Analysis OR EC2303 Foundations for Econometrics AND EC3101 Microeconomic Analysis II or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "EC5660", + "title": "Independent Study", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC5880", + "title": "Topics in Economics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC5220", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC4101", + "corequisite": "" + }, + { + "moduleCode": "EC5880R", + "title": "Topics in Economics", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC5220", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC4101", + "corequisite": "" + }, + { + "moduleCode": "EC5881", + "title": "Topics in Microeconomics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "N.A.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "N.A.", + "corequisite": "N.A." + }, + { + "moduleCode": "EC5882", + "title": "Topics in Macroeconomics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC5883", + "title": "Topics in Applied Economics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC6101", + "title": "Advanced Microeconomic Theory", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC6102", + "title": "Advanced Macroeconomic Theory", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC6103", + "title": "Econometric Modelling and Applications Ii", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC6154", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC5154/EC5103", + "corequisite": "" + }, + { + "moduleCode": "EC6104", + "title": "Advanced Mathematics for Economists", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC6210 and EC6311", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC6312", + "title": "Advanced Game Theory", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC6313", + "title": "Topics in Econometrics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC6204", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC5154/EC5103", + "corequisite": "" + }, + { + "moduleCode": "EC6314", + "title": "Advanced Time Series Analysis", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC6214", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC6316", + "title": "Contract Theory and Applications", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC5101 Microeconomic Theory\nand\nEC5104 Mathematical Economics", + "corequisite": "" + }, + { + "moduleCode": "EC6322", + "title": "Advanced Industrial Organisation", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC6215, EC6268", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC6332", + "title": "Advanced Money & Banking", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC6208", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC6341", + "title": "Advanced International Trade and Finance", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC6211", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC6342", + "title": "Advanced International Trade", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC6265", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC6343", + "title": "Advanced International Finance", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC6259", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC6351", + "title": "Advanced Public Finance", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC6209", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC6352", + "title": "Advanced Public Economics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC6267", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC6361", + "title": "Advanced Labour Economics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC5361 or equivalent", + "corequisite": "" + }, + { + "moduleCode": "EC6371", + "title": "Advanced Development Economics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC6262", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC6372", + "title": "Advanced Growth Theory", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC6206", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC6770", + "title": "Graduate Research Seminar", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC6880", + "title": "Topics in Economics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC6220", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC6881", + "title": "Advanced Topics in Microeconomics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC6882", + "title": "Advanced Topics in Macroeconomics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC6883", + "title": "Advanced Topics in Applied Economics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EC6884", + "title": "Behavioral and Experimental Economics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ECA5101", + "title": "Microeconomics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "EC5151, EC5101A", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ECA5102", + "title": "Macroeconomics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "EC5152, EC5102A", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ECA5103", + "title": "Quantitative & Computing Methods", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "EC5253, EC5304", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ECA5304", + "title": "Machine Learning and Economic Forecasting", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ECA5305", + "title": "Programming for Economists", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ECA5313", + "title": "Topics in Econometrics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 3 + ], + "preclusion": "ECA5253/ECA5304/ECA5103", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ECA5315", + "title": "Financial Econometrics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC5261, EC5315", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC5274/EC5333/ECA5333", + "corequisite": "" + }, + { + "moduleCode": "ECA5325", + "title": "Project & Policy Evaluation", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC5264, EC5216/EC5324", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ECA5333", + "title": "Financial Markets & Portfolio Management", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "EC5274/EC5333. In addition, candidates who have passed EC4209/EC4333 or its equivalent may, with the approval of the Head of the Department, be exempted to read module EC5274/ECA5333. For these candidates, the requirements of EC5274/ECA5333 as a prerequisite for other modules will then be waived.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ECA5334", + "title": "Corporate Finance", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "EC5269/EC5334", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EC5274/EC5333/ECA5333", + "corequisite": "" + }, + { + "moduleCode": "ECA5335", + "title": "Derivative Securities", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 4 + ], + "preclusion": "EC5260", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ECA5337", + "title": "Applied Financial Economics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + true, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ECA5341", + "title": "International Trade & Finance", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC5211/EC5341", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ECA5351", + "title": "Public Finance", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "EC5209/EC5351", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ECA5371", + "title": "Economic Growth And Development", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "EC5262, EC5263, IZ5201, EC5371", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ECA5372", + "title": "Big Data Analytics and Technologies", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ECA5373", + "title": "The Singapore Economy", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC5205, EC5255, EC5373", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ECA5373R", + "title": "The Singapore Economy", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC5205, EC5255, EC5373", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ECA5374", + "title": "The Modern Chinese Economy", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC5271, EC5374", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ECA5101/EC5101A/EC5151 or EC5101 or EC4101/EC4151 or EC5102 or ECA5103/EC5304/EC5253 or EC4152/EC4102", + "corequisite": "" + }, + { + "moduleCode": "ECA5375", + "title": "Economic Growth in East Asia", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "EC5266, IZ5212", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ECA5376", + "title": "Auctions and Market Design", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ECA5101: Microeconomics", + "corequisite": "" + }, + { + "moduleCode": "ECA5377", + "title": "Behavioural Economics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students should have taken intermediate microeconomic principles at a similar level as EC3101.", + "corequisite": "" + }, + { + "moduleCode": "ECA5381", + "title": "Urban Economics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ECA5383", + "title": "Environmental Economics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ECA5101 Microeconomics", + "corequisite": "" + }, + { + "moduleCode": "ECA5394", + "title": "Cultural Economics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC5272/EC5394", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ECA5395", + "title": "Political Economy of Globalisation", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC5213, EC5273/EC5395", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ECA5396", + "title": "Economics of Business and Law of Intellectual Assets", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ECA5660", + "title": "Independent Study", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "N.A.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ECA5880", + "title": "Topics in Applied Economics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ECA5881", + "title": "Topics in Economic Policy", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 3 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ECA5882", + "title": "Topics in Applied Macroeconomics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ECA5884", + "title": "Applied Behavioural Economics", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ECA5101 Microeconomics\nECA5103 Quantitative & Computing Methods", + "corequisite": "" + }, + { + "moduleCode": "EE1001", + "title": "Emerging Technologies in Electrical Engineering", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EE1001FC/EE1001X", + "attributes": [ + true, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "A-level Math, and A-level Physics", + "corequisite": "" + }, + { + "moduleCode": "EE1001X", + "title": "Emerging Technologies in Electrical Engineering", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EE1001, EE1001FC", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "A-level Math, and A-level Physics", + "corequisite": "" + }, + { + "moduleCode": "EE1002", + "title": "Introduction to Circuits and Systems", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EG1108/CG1108 Electrical Engineering", + "attributes": [ + true, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "A-level Physics", + "corequisite": "" + }, + { + "moduleCode": "EE1003", + "title": "Introduction to Signals and Communications", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "A-level Math, and A-level Physics", + "corequisite": "" + }, + { + "moduleCode": "EE1111", + "title": "Engineering Principles and Practice I", + "moduleCredit": 6, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EG1111 Engineering Principles and Practice I", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EE1111A", + "title": "Electrical Engineering Principles and Practice I", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "EE1111, EG1111, EE1111B", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EE1111B", + "title": "Electrical & Computer Engineering Principles & Practice", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EE1111A, CG1111, EE1112, EG1112", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EE1112", + "title": "Engineering Principles and Practice II", + "moduleCredit": 6, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EG1112 Engineering Principles and Practice II\nCG1111 Engineering Principles and Practice I", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EE2011", + "title": "Engineering Electromagnetics", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1505 and MA1506", + "corequisite": "" + }, + { + "moduleCode": "EE2011E", + "title": "Engineering Electromagnetics", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TEE2011", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TE2002", + "corequisite": "TE2003" + }, + { + "moduleCode": "EE2012", + "title": "Analytical Methods in Electrical and Computer Engineering", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "ST2334", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(MA1505 and MA1506) or (MA1511 and MA1512)", + "corequisite": "" + }, + { + "moduleCode": "EE2012A", + "title": "Analytical Methods in Electrical and Computer Engineering", + "moduleCredit": 3, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "EE2012 and ST2334", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(MA1505 and MA1506) or (MA1511 and MA1512)", + "corequisite": "" + }, + { + "moduleCode": "EE2020", + "title": "Digital Fundamentals", + "moduleCredit": 5, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE1002 or CG1108 or EG1108", + "corequisite": "CS1010E" + }, + { + "moduleCode": "EE2021", + "title": "Devices and Circuits", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EE2004 and EE2005", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE1002/EG1108 /CG1108", + "corequisite": "" + }, + { + "moduleCode": "EE2023", + "title": "Signals and Systems", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "EE2023E, CG2023, TEE2023", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1506 or MA1512", + "corequisite": "" + }, + { + "moduleCode": "EE2023E", + "title": "Signals and Systems", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "EE2009E and EE2010E and TEE2023", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TG1401", + "corequisite": "" + }, + { + "moduleCode": "EE2024", + "title": "Programming for Computer Interfaces", + "moduleCredit": 5, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2020 and CS1010E", + "corequisite": "" + }, + { + "moduleCode": "EE2025", + "title": "Power Electronics", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EE3501C Power Electronics", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE1002 Introduction to Circuits and Systems (or EG1108 Electrical Engineering or CG1108 Electrical Engineering)", + "corequisite": "" + }, + { + "moduleCode": "EE2026", + "title": "Digital Design", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "EE2020", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE1111A / EG1111 / CG1111", + "corequisite": "(EE2111A & CS1010E) / (EG1112 & IT1007) / CS1010" + }, + { + "moduleCode": "EE2027", + "title": "Electronic Circuits", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "EE2021, CG2027", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2111A / EG1112", + "corequisite": "" + }, + { + "moduleCode": "EE2028", + "title": "Microcontroller Programming and Interfacing", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "EE2024, CG2028", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2028A/IT1007 and EE2026", + "corequisite": "" + }, + { + "moduleCode": "EE2028A", + "title": "C Programming", + "moduleCredit": 2, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "CS1010E" + }, + { + "moduleCode": "EE2029", + "title": "Introduction to Electrical Energy Systems", + "moduleCredit": 3, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "EE3506C - Introduction to Electrical Energy Systems", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2111A Electrical Engineering Principles and Practice II\n/ EE1112 Engineering Principles and Practice II /\nEG1112 Engineering Principles and Practice II /\nCG1111 Engineering Principles and Practice I", + "corequisite": "" + }, + { + "moduleCode": "EE2031", + "title": "Circuit and Systems Design Lab", + "moduleCredit": 3, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2021 Devices and Circuits", + "corequisite": "" + }, + { + "moduleCode": "EE2032", + "title": "Signals & Communications Design Lab", + "moduleCredit": 3, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2011 Engineering Electromagnetism and EE2023 Signals and Systems.", + "corequisite": "" + }, + { + "moduleCode": "EE2033", + "title": "Integrated System Lab", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "EE2031, EE2032", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2023, EE2027", + "corequisite": "" + }, + { + "moduleCode": "EE2111A", + "title": "Electrical Engineering Principles and Practice II", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "EG1112/ME2104, CG1111, EE1112", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EE2211", + "title": "Introduction to Machine Learning", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS1010E and (MA1511 / MA1505) and (MA1508E / MA1513 / CE2407)\n\nAdvisory: MSE students do not take (MA1511 / MA1505); MSE students will self-study calculus. EVE students do not take (MA1508E / MA1513 / CE2407); EVE students will self-study linear algebra.", + "corequisite": "" + }, + { + "moduleCode": "EE3013C", + "title": "Labview for Electrical Engineers", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EG1108/CG1108 / EE1002", + "corequisite": "MA1506" + }, + { + "moduleCode": "EE3013E", + "title": "Labview for Electrical Engineers", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "TEE3013", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(EE2021E or TEE2027) and TG1401", + "corequisite": "" + }, + { + "moduleCode": "EE3030A", + "title": "Exploring Frugal Engineering", + "moduleCredit": 3, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "At least level 2 standing", + "corequisite": "" + }, + { + "moduleCode": "EE3030B", + "title": "Living Lab in the Communities", + "moduleCredit": 2, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "At least level 2 standing", + "corequisite": "" + }, + { + "moduleCode": "EE3031", + "title": "Innovation & Enterprise I", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "TR3001 New Product Development\nEE3001 Project \nMT4003 Engineering Product Development", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EE3031E", + "title": "Innovation & Enterprise I", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TM4209, EE3001E, TEE3031", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Level 3 standing", + "corequisite": "" + }, + { + "moduleCode": "EE3032", + "title": "Innovation & Enterprise II", + "moduleCredit": 6, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EE2001 Project\nCG3002 Embedded Systems Design Project", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2024 Programming for Computer Interfaces", + "corequisite": "" + }, + { + "moduleCode": "EE3104C", + "title": "Introduction to RF and Microwave Systems & Circuits", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "EE3104E, TEE3104 Introduction to RF and Microwave Systems & Circuits.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC2020 (for AY2017 intake & after) ; EE2011 (for AY2016 intake & prior)", + "corequisite": "" + }, + { + "moduleCode": "EE3104E", + "title": "Intro to RF and Microwave Sys & Circuits", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TEE3104", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2011E", + "corequisite": "" + }, + { + "moduleCode": "EE3131C", + "title": "Communication Systems", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "EE3103 Communications", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2023 Signals & Systems", + "corequisite": "" + }, + { + "moduleCode": "EE3131E", + "title": "Communication Systems", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "EE3103E, TEE3131", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(EE2009E and EE2010E) or EE2023E", + "corequisite": "" + }, + { + "moduleCode": "EE3207E", + "title": "Computer Architecture", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TEE3207", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2007E or EE2024E or TEE2028", + "corequisite": "" + }, + { + "moduleCode": "EE3208", + "title": "Embedded Computer Systems Design", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "CG3002", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CG2007/EE2024", + "corequisite": "" + }, + { + "moduleCode": "EE3208E", + "title": "Embedded Computer Systems Design", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "TE3202 and TEE3208", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2007E or EE2024E or TEE2028", + "corequisite": "" + }, + { + "moduleCode": "EE3305", + "title": "Robotic System Design", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EE3331C", + "title": "Feedback Control Systems", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "EE2010 Systems & Control", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2023 Signals and Systems", + "corequisite": "" + }, + { + "moduleCode": "EE3331E", + "title": "Feedback Control Systems", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2 + ], + "preclusion": "EE2010E and TEE3331", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2023E", + "corequisite": "" + }, + { + "moduleCode": "EE3408C", + "title": "Integrated Analog Design", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "EE3408E, TEE3408", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CG2027/EE2027 (for AY2017 intake & after);\nEE2021 (for AY2016 intake & prior)", + "corequisite": "" + }, + { + "moduleCode": "EE3408E", + "title": "Integrated Analog Design", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TEE3408", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2021E or TEE2027", + "corequisite": "" + }, + { + "moduleCode": "EE3431C", + "title": "Microelectronics Materials and Devices", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "EE3406, EE2004, PC3235", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Co-req : EE2027 / CG2027 / EE2021", + "corequisite": "EE2027 / CG2027 / EE2021" + }, + { + "moduleCode": "EE3431E", + "title": "Microelectronics Materials and Devices", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "EE3406E, EE2004E, TEE3431", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "EE2021E or TEE2027" + }, + { + "moduleCode": "EE3501E", + "title": "Power Electronics", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TEE3501", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2005E or EE2021E or TEE2027", + "corequisite": "" + }, + { + "moduleCode": "EE3505C", + "title": "Electrical Energy Systems", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EE2022 Electrical Energy Systems", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE1002 Introduction to Circuits and Systems / EG1108 Electrical Engineering / CG1108 Electrical Engineering", + "corequisite": "" + }, + { + "moduleCode": "EE3506C", + "title": "Intro to Elect Energy Systems", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EE3505C Electrical Energy Systems", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EG1112 / CG1111 (for AY2017 intake & after) ;\nEE1002 / EG1108 / CG1108 (for AY2016 & prior)", + "corequisite": "" + }, + { + "moduleCode": "EE3702", + "title": "Electronic Gaming", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Level 3 standing", + "corequisite": "" + }, + { + "moduleCode": "EE3731C", + "title": "Signal Analytics", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2012A/ST2334 and EE2023 (for AY2019 intake & after); EE2012 / ST2334 and EE2023 (for AY2018 intake & prior)", + "corequisite": "" + }, + { + "moduleCode": "EE3731E", + "title": "Signal Processing Methods", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "TEE3731", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TE2003 and EE2023E", + "corequisite": "" + }, + { + "moduleCode": "EE3801", + "title": "Data Engineering Principles", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS1010/E/% and [EE2012A or ST2334 or {ST2131/MA2216 and ST2132}]\n\nAdvisory: \n-Minor in Data Engineering students should take EE3801 before EE4802 \n- Familiarity with scientific programming language such as Python. All assignments in class will be done in Python. \n% is a wildcard for any of the CS1010 variants", + "corequisite": "" + }, + { + "moduleCode": "EE4001", + "title": "B.Eng. Dissertation", + "moduleCredit": 12, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "CG4001", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "Level 4 Standing", + "corequisite": "" + }, + { + "moduleCode": "EE4002D", + "title": "Design Capstone", + "moduleCredit": 8, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "EE3032; EG3301R", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "Level 3 Standing", + "corequisite": "" + }, + { + "moduleCode": "EE4002R", + "title": "Research Capstone", + "moduleCredit": 8, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "EE4001, EG4301, CG4001", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "Level 4 standing", + "corequisite": "" + }, + { + "moduleCode": "EE4031", + "title": "Intellectual Property: Harnessing Innovation", + "moduleCredit": 2, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "MT5001: IP Management\nMT5010: Technology Intelligence & IP Strategy\nNote: Both are graduate level modules.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EE4032", + "title": "Blockchain Engineering", + "moduleCredit": 2, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EE4101", + "title": "RF Communications", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC2020", + "corequisite": "" + }, + { + "moduleCode": "EE4101E", + "title": "Radio-Frequency (RF) Communications", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TEE4101", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2011E", + "corequisite": "" + }, + { + "moduleCode": "EE4102", + "title": "Digital Communications", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE3103", + "corequisite": "" + }, + { + "moduleCode": "EE4103", + "title": "Coding Theory And Applications", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2012", + "corequisite": "" + }, + { + "moduleCode": "EE4104", + "title": "Microwave Circuits & Devices", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE3104C", + "corequisite": "" + }, + { + "moduleCode": "EE4109", + "title": "Spread Spectrum Communications", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Co-requisite: EE4102", + "corequisite": "" + }, + { + "moduleCode": "EE4110", + "title": "RFIC and MMIC Design", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE3104C", + "corequisite": "" + }, + { + "moduleCode": "EE4112", + "title": "Radio Frequency Design and Systems", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "EE4112E, TEE4112", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC2020", + "corequisite": "" + }, + { + "moduleCode": "EE4112E", + "title": "Radio Frequency Design and Systems", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TEE4112", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2011E", + "corequisite": "" + }, + { + "moduleCode": "EE4113", + "title": "Digital Communications & Coding", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EE4102 or EE4103", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(EE2012A / ST2334) and EE3131C (for AY2019 intake & after); (EE2012 / ST2334) and EE3131C (for AY2018 intake & prior)", + "corequisite": "" + }, + { + "moduleCode": "EE4113E", + "title": "Digital Communications & Coding", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "EE4102E or EE4103E or TEE4113", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TE2003 & (EE3103E or EE3131E)", + "corequisite": "" + }, + { + "moduleCode": "EE4114", + "title": "Optical Communications", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE3131C", + "corequisite": "" + }, + { + "moduleCode": "EE4131", + "title": "Random Signals", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EE5306 Random Signals Analysis\nand\nEE5137R Stochastic Processes", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2012 Analytical Methods in ECE\nor\nST2334 Probability and Statistics\nand\nEE2023 Signals and Systems", + "corequisite": "" + }, + { + "moduleCode": "EE4204", + "title": "Computer Networks", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "EE3204, EE3204E, TEE3204, TEE4204, EE5310, EE6310", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2012A / ST2334 (for AY2019 intake & after) ; EE2012 / ST2334 (for AY2018 intake & prior)", + "corequisite": "" + }, + { + "moduleCode": "EE4204E", + "title": "Computer Networks", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "CS2105 and CS3103 and TEE3204, EE3204E, TEE4204", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TE2003", + "corequisite": "" + }, + { + "moduleCode": "EE4205", + "title": "Quantum Communication and Cryptography", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For EE students: EE2012/EE2012A (Analytical methods in\nECE) and EE2023 (Signals and Systems) ;\n\nFor CEG students: ST2334 (Probability and Statistics) and\nCG2023 (Signals and Systems)", + "corequisite": "" + }, + { + "moduleCode": "EE4210", + "title": "Network Protocols and Applications", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "EE4210E, TEE4210", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2012A / ST2334 (for AY2019 intake & after) ; EE2012 / ST2334 (for AY2018 intake & prior)", + "corequisite": "" + }, + { + "moduleCode": "EE4210E", + "title": "Network Protocols and Applications", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TEE4210, TIC2501", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TE2003", + "corequisite": "" + }, + { + "moduleCode": "EE4211", + "title": "Data Science for the Internet of Things", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "EE4802, CS3244, IT3011", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2012A / ST2334 (for AY2019 intake & after) ; EE2012 / ST2334 (for AY2018 intake & prior)\n\nAdvisory: Familiarity with scientific programming language such as Python. All assignments in the class will be done in Python.", + "corequisite": "" + }, + { + "moduleCode": "EE4212", + "title": "Computer Vision", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "CS4243", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1508E and EE3731C/EE4704 (for AY2017 intake & after) ;\nEE3206 or EE3731C (for AY2016 intake & prior)", + "corequisite": "" + }, + { + "moduleCode": "EE4213", + "title": "Image and Video Processing", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "CS4243", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE3206", + "corequisite": "" + }, + { + "moduleCode": "EE4214", + "title": "Real-Time Embedded Systems", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CG2007/EE2024", + "corequisite": "" + }, + { + "moduleCode": "EE4214E", + "title": "Real-Time Embedded Systems", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TEE4214, TIC2401", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TE2101 and (EE2024E or TEE2028)", + "corequisite": "" + }, + { + "moduleCode": "EE4217", + "title": "Technology Of Digital Entertainment", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EE4218", + "title": "Embedded Hardware System Design", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2028 or CG2028 (for AY2017 intake & after) ; EE2024 (for AY2016 intake & prior)", + "corequisite": "" + }, + { + "moduleCode": "EE4302", + "title": "Advanced Control Systems", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 3 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE3331C", + "corequisite": "" + }, + { + "moduleCode": "EE4303", + "title": "Industrial Control Systems", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "EE3302, EE3302E, TEE3302, TEE4303", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE3331C", + "corequisite": "" + }, + { + "moduleCode": "EE4303E", + "title": "Industrial Control Systems", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TEE3302, EE3302E, TEE4303", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2010E or EE3331E", + "corequisite": "" + }, + { + "moduleCode": "EE4304", + "title": "Digital Control Systems", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EE3304.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2010\nEE3331C", + "corequisite": "" + }, + { + "moduleCode": "EE4305", + "title": "Fuzzy/Neural Systems for Intelligent Robotics", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2023", + "corequisite": "" + }, + { + "moduleCode": "EE4305E", + "title": "Introduction To Fuzzy/Neural Systems", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 3 + ], + "preclusion": "TEE4305", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2010E or EE2023E", + "corequisite": "" + }, + { + "moduleCode": "EE4306", + "title": "Distributed Autonomous Robotic Systems", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE3331C", + "corequisite": "" + }, + { + "moduleCode": "EE4307", + "title": "Control Systems Design And Simulation", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE3331C", + "corequisite": "" + }, + { + "moduleCode": "EE4308", + "title": "Autonomous Robot Systems", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "EE4306 Distributed Autonomous Robotic Systems, \nCS4278 Intelligent Robots: Algorithms and Systems", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE3331C Feedback Control Systems or ME2142 Feedback Control Systems", + "corequisite": "" + }, + { + "moduleCode": "EE4309", + "title": "Robot Perception", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE4704 \"Introduction to Computer Vision and Image Processing\" or EE3731C “Signal Processing Methods”, or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "EE4401", + "title": "Optoelectronics", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE3431C or equivalent", + "corequisite": "" + }, + { + "moduleCode": "EE4407", + "title": "Analog Electronics", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "EE3407, EE3407E, TEE3407, TEE4407", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2021 (for AY2016 intake & prior) ;\nCG2027 or EE2027 (for AY2017 intake & after)", + "corequisite": "" + }, + { + "moduleCode": "EE4407E", + "title": "Analog Electronics", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TEE3407, EE3407E, TEE4407", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2021E or TEE2027", + "corequisite": "" + }, + { + "moduleCode": "EE4408", + "title": "Silicon Device Reliability", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2021", + "corequisite": "EE4411 or equivalent" + }, + { + "moduleCode": "EE4409", + "title": "Modern Microelectronic Devices & Sensors", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "EE3409", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CG2027/EE2027 (for AY2017 intake & after) ; EE2021 (for AY2016 intake & prior)", + "corequisite": "" + }, + { + "moduleCode": "EE4410", + "title": "Integrated Circuit And System Design", + "moduleCredit": 8, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EE4410A", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "E3408C", + "corequisite": "" + }, + { + "moduleCode": "EE4410A", + "title": "Integrated Circuit Design", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EE4410", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE3408C", + "corequisite": "" + }, + { + "moduleCode": "EE4411", + "title": "Silicon Processing Technology", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "PC3242", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2021", + "corequisite": "" + }, + { + "moduleCode": "EE4412", + "title": "Technology & Modelling Of Si Transistors", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2021", + "corequisite": "" + }, + { + "moduleCode": "EE4415", + "title": "Integrated Digital Design", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "EE4415E, TEE4415", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2026 (for AY2017 intake & after) ; EE2020 (for AY2016 intake & prior)", + "corequisite": "" + }, + { + "moduleCode": "EE4415E", + "title": "Integrated Digital Design", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TEE4415", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2006E or EE2020E or TEE2026", + "corequisite": "" + }, + { + "moduleCode": "EE4431", + "title": "Nano-Device Engineering", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EE4413 Low Dimensional Electronic Devices", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Either EE3431C Microelectronics Materials & Devices or EE3406 Microelectronics Materials", + "corequisite": "" + }, + { + "moduleCode": "EE4432", + "title": "Devices for Electric Energy Generation", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2021 Devices and circuits", + "corequisite": "" + }, + { + "moduleCode": "EE4433", + "title": "Nanometer Scale Information Storage", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EE5202, EE4414", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC2232 and EE3431C/EE3406", + "corequisite": "" + }, + { + "moduleCode": "EE4434", + "title": "Integrated Circuit Technology, Design and Testing", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2026 and CG2027/EE2027 (for AY2017 intake & after) ; EE2020 and EE2021 (for AY2016 intake & prior)", + "corequisite": "" + }, + { + "moduleCode": "EE4435", + "title": "Modern Transistors and Memory Devices", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "TEE4435, EE4435E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CG2027/EE2027 and co-req EE3431C (for AY2017 intake & after) ; Pre-req EE2021 and co-req EE3431C (for AY2016 intake & prior)", + "corequisite": "" + }, + { + "moduleCode": "EE4435E", + "title": "Modern Transistors and Memory Devices", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "EE4408E, EE4412E, TEE4435", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2021E or TEE2027", + "corequisite": "EE3431E" + }, + { + "moduleCode": "EE4436", + "title": "Fabrication Process Technology", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "EE4411, EE4411E, EE4436E, TEE4436", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "CG2027/EE2027 (for AY2017 intake & after) ; EE2021 (for AY2016 intake & prior)", + "corequisite": "" + }, + { + "moduleCode": "EE4436E", + "title": "Fabrication Process Technology", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "EE4411E, TEE4436", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2021E or TEE2027", + "corequisite": "" + }, + { + "moduleCode": "EE4437", + "title": "Photonics - Principles and Applications", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "EE4401 Optoelectronics", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CG2027/EE2027 (for AY2017 intake & after) ; EE2021 (for AY2016 intake & prior)", + "corequisite": "" + }, + { + "moduleCode": "EE4438", + "title": "Solar Cells and Modules", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "EE4432 Devices for Electric Energy Generation", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CG2027/EE2027 (for AY2017 intake & after) ; EE2021 (for AY2016 intake & prior)", + "corequisite": "" + }, + { + "moduleCode": "EE4501", + "title": "Power System Management And Protection", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2029 (for AY2019 intake & after); EE3506C (for AY2018 intake & prior)", + "corequisite": "" + }, + { + "moduleCode": "EE4502", + "title": "Electric Drives & Control", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2029 (for AY2019 intake & after); EE3506C (for AY2018 intake & prior)", + "corequisite": "" + }, + { + "moduleCode": "EE4503", + "title": "Power Electronics for Sustainable Energy Technologies", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "EE2025/EE3501E/TEE3501 Power Electronics", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2029 (for AY2019 intake & after); EE3506C (for AY2018 intake & prior)", + "corequisite": "" + }, + { + "moduleCode": "EE4505", + "title": "Power Semiconductor Devices & ICs", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 3 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE and CEG students of stage 3 and above (for AY2017 intake & after) ; EE2021 (for AY2016 intake & prior)", + "corequisite": "" + }, + { + "moduleCode": "EE4506", + "title": "Magnetic Recording Systems", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2011", + "corequisite": "" + }, + { + "moduleCode": "EE4509", + "title": "Silicon Micro Systems", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Stage 3 Engineering students from FoE (for AY2017 intake & after) ; EE2021 (for AY2016 intake & prior)", + "corequisite": "" + }, + { + "moduleCode": "EE4510", + "title": "Solar Photovoltaic Energy Systems", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2025", + "corequisite": "" + }, + { + "moduleCode": "EE4511", + "title": "Renewable Generation and Smart Grid", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2029 (for AY2019 intake & after); EE3506C (for AY2018 intake & prior)", + "corequisite": "" + }, + { + "moduleCode": "EE4512", + "title": "Renewable Energy Systems Capstone Design", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2025", + "corequisite": "" + }, + { + "moduleCode": "EE4601", + "title": "Sensors For Biomedical Applications", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE3431C", + "corequisite": "" + }, + { + "moduleCode": "EE4602", + "title": "Bioelectronics", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2004", + "corequisite": "" + }, + { + "moduleCode": "EE4603", + "title": "Biomedical Imaging Systems", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2023/BN2401", + "corequisite": "" + }, + { + "moduleCode": "EE4604", + "title": "Biological Perception in Digital Media", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE3731C or EE4704 (for AY2017 intake & after) ;\nEE3731C or EE3206 (for AY2016 intake & prior)", + "corequisite": "" + }, + { + "moduleCode": "EE4605", + "title": "Bio-Instrumentation & Signal Analysis", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE3731C", + "corequisite": "" + }, + { + "moduleCode": "EE4701", + "title": "Video Processing", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE3206", + "corequisite": "" + }, + { + "moduleCode": "EE4702", + "title": "Game World Mechanics", + "moduleCredit": 8, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS1010FC/CS1101C/CS1010E/CG1101 and EE3702", + "corequisite": "" + }, + { + "moduleCode": "EE4703", + "title": "Digital Media Technologies", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EE3701", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IT1007 or CS1010 equivalent", + "corequisite": "" + }, + { + "moduleCode": "EE4704", + "title": "Image Processing and Analysis", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "CS4243, EE3206, EE3206E, TEE3206, TEE4704.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2023/CG2023", + "corequisite": "" + }, + { + "moduleCode": "EE4704E", + "title": "Introduction to Computer Vision and Image Processing", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "CS4243, TEE3206, EE3206E, TEE4704", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2009E or EE2023E", + "corequisite": "" + }, + { + "moduleCode": "EE4705", + "title": "Human-Robot Interaction", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EE4802", + "title": "Learning from Data", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "EE4211, CS3244, IT3011", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS1010/E/% and [ EE2012A or ST2334 or {ST2131/MA2216 and ST2132} ]\nAnti: EE4211, CS3244, IT3011\n\nPre-req Advisory:\n1. Minor in Data Engineering students should take EE3801 before EE4802\n2. Familiarity with scientific programming language such as Python. All assignments in class will be done in Python.", + "corequisite": "" + }, + { + "moduleCode": "EE5001", + "title": "Independent Study Module I", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "EE5003", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EE5002", + "title": "Independent Study Module Ii", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "EE5003", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EE5003", + "title": "Electrical Engineering Project", + "moduleCredit": 8, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "EE5001", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EE5020", + "title": "Data Science for Internet of Things", + "moduleCredit": 2, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "Familiarity with scientific programming language such as Matlab or Python will be useful. Class assignments will be in Python.", + "corequisite": "" + }, + { + "moduleCode": "EE5021", + "title": "Cloud based Services for Internet of Things", + "moduleCredit": 2, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "Basic knowledge of networking, programming and computing", + "corequisite": "" + }, + { + "moduleCode": "EE5022", + "title": "Cyber Security for Internet of Things", + "moduleCredit": 2, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EE5023", + "title": "Wireless Networks", + "moduleCredit": 2, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "EE5132", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EE5024", + "title": "IoT Sensor Networks", + "moduleCredit": 2, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "EE5132", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EE5025", + "title": "Intellectual Property: Innovations in IoT", + "moduleCredit": 2, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + true, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EE5026", + "title": "Machine Learning for Data Analytics", + "moduleCredit": 2, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "EE5907", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "Basic programming knowledge", + "corequisite": "" + }, + { + "moduleCode": "EE5027", + "title": "Statistical Pattern Recognition", + "moduleCredit": 2, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "EE5907", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "This course assumes students have taken an undergraduate probability/statistics course, an undergraduate programming course and have at least a basic linear algebra background, all of which should be covered in a typical electrical engineering or computer science undergraduate program.", + "corequisite": "" + }, + { + "moduleCode": "EE5028", + "title": "Security for Industrial Control Systems", + "moduleCredit": 2, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EE5040", + "title": "Power Flow Modelling and Optimization", + "moduleCredit": 2, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EE5041", + "title": "Grid Stability and Security", + "moduleCredit": 2, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EE5042", + "title": "Building blocks of Smart grids", + "moduleCredit": 2, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EE5043", + "title": "Demand Side Management", + "moduleCredit": 2, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EE5044", + "title": "Energy Management for Buildings", + "moduleCredit": 2, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EE5045", + "title": "Industrial Energy Efficiency", + "moduleCredit": 2, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EE5046", + "title": "Renewable energy sources", + "moduleCredit": 2, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EE5047", + "title": "Renewable Energy Integration and Grid Codes", + "moduleCredit": 2, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EE5060", + "title": "Sensors and Instrumentation for Automation", + "moduleCredit": 2, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "Background in feedback control systems or relevant experience", + "corequisite": "" + }, + { + "moduleCode": "EE5061", + "title": "Industrial Control and Programming", + "moduleCredit": 2, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "EE5111, EE6111", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "Background in feedback control systems or relevant experience", + "corequisite": "" + }, + { + "moduleCode": "EE5062", + "title": "Autonomous Systems", + "moduleCredit": 2, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EE5110,EE6110", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "Background in feedback control systems or relevant experience.", + "corequisite": "" + }, + { + "moduleCode": "EE5063", + "title": "Modelling of Mechatronic Systems", + "moduleCredit": 2, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EE5109", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "Background in feedback control systems or relevant experience.", + "corequisite": "" + }, + { + "moduleCode": "EE5064", + "title": "Dynamics and Control of Robot Manipulators", + "moduleCredit": 2, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "ME5402/EE5106 : Advanced Robotics", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "Preferred with some background on Linear Algebra, Calculus, Classical and Modern Control Theory, and computational skills using matlab, python, C, or C++", + "corequisite": "" + }, + { + "moduleCode": "EE5065", + "title": "Tenets of AI in Robotics", + "moduleCredit": 2, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "Background in control and automation systems, or relevant experience", + "corequisite": "" + }, + { + "moduleCode": "EE5080", + "title": "State-Of-The-Art Semiconductor Technology", + "moduleCredit": 2, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Background in semiconductor device physics and process technology", + "corequisite": "" + }, + { + "moduleCode": "EE5101", + "title": "Linear Systems", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "MCH5201, ME5401, EE5101R", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "[Applicable to UG level students only] ME2142 or EE3331C; or\n\n[Advisory applicable to GD level students only] Requires background knowledge such as EE4302 or ME4246.", + "corequisite": "" + }, + { + "moduleCode": "EE5102", + "title": "Multivariable Control Systems", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EE6102 Multivariable Control Systems (Advanced)", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "[applicable to UG level students only] EE3331C or EE5101; or\n\n[applicable to GD level students only] EE5101, EE5101R or ME5401.", + "corequisite": "" + }, + { + "moduleCode": "EE5103", + "title": "Computer Control Systems", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "ME5403, EE5103R, MCH5103/TD5241", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "[Applicable to UG level students only] EE2023 or EE3331C or ME2142; or\n\n[Advisory applicable to GD level students only] Requires background knowledge such as EE2010, EE2023, EE3331C, ME2142 or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "EE5104", + "title": "Adaptive Control Systems", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "EE6104 Adaptive Control Systems (Advanced)", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "[applicable to UG level students only] Requires EE3331C or EE5101/ME5401; or\n\n[applicable to GD level students only] Requires EE5101/EE5101R/ME4501 Linear Systems as a pre-requisite or co-requisite; or background knowledge in linear system or with permission by lecturer.", + "corequisite": "Requires EE5101/EE5101R/ME4501 Linear Systems as a pre-requisite or co-requisite; or background knowledge in linear system or with permission by lecturer" + }, + { + "moduleCode": "EE5106", + "title": "Advanced Robotics", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "MCH5209, ME5402, EE5106R", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Background knowledge in linear algebra & feedback control are required", + "corequisite": "" + }, + { + "moduleCode": "EE5107", + "title": "Optimal Control Systems", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EE5105 Optimal Control Systems\nEE6107 Optimal Control Systems (Advanced)", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "[applicable to UG level students only] EE3331C or EE5101; or\n\n[applicable to GD level students only] EE5101 / EE5101R / ME5401.", + "corequisite": "" + }, + { + "moduleCode": "EE5108", + "title": "Instrumentation and Sensors", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "MCH5206", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "[applicable to UG level students only] EE3331C", + "corequisite": "" + }, + { + "moduleCode": "EE5109", + "title": "Modelling and Applications of Mechatronic Systems", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "MCH5002 Applications of Mechatronics, EE5063 Modeling of Mechatronic Systems or EE4307 Control Systems Design And Simulation", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "[applicable to UG level students only] EE3331C", + "corequisite": "" + }, + { + "moduleCode": "EE5110", + "title": "Special Topics in Automation and Control", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "EE6110, EE5062", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "", + "corequisite": "EE5101 / EE5101R Linear Systems (cross-listedwith ME5401) OR EE5103 / EE5103R Computer Control Systems (cross-listed with ME5403) OR EE4302 Advanced Control Systems" + }, + { + "moduleCode": "EE5111", + "title": "Selected Topics in Industrial Control & Instrumentation", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "EE5060 Smart Sensor and Instrumentation for Automation \nEE5061 Industrial Control and IEC Programming", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "[applicable to UG level students only] EE3331C; or\n\n[Advisory applicable to GD level students only]: Background in feedback control systems or relevant experience", + "corequisite": "" + }, + { + "moduleCode": "EE5131", + "title": "Wireless Communications", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EE6131 Wireless Communications (Advanced)", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EE5132", + "title": "Wireless and Sensor Networks", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "EE5406, EE5913, EE5023 or EE5024", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "[applicable to UG level students only] EE4204 or EE4210; or\n\n[Advisory applicable to GD level students only] Requires background knowledge such as EE4204 Computer Networks and EE4210 Network Protocols and Applications, or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "EE5133", + "title": "Statistical Signal Processing Techniques", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "EE4131 Random Signals, or\nEE5306 Random Signal Analysis, or\nEE5137R Stochastic Processes", + "corequisite": "" + }, + { + "moduleCode": "EE5134", + "title": "Optical Communications and Networks", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "EE5912 and EE6134", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "[Advisory] Requires knowledge on computer networks and communications.", + "corequisite": "" + }, + { + "moduleCode": "EE5135", + "title": "Digital Communications", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "EE6135", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "[applicable to UG level students only] (EE2012 or EE2012A or ST2334) and (EE2023 or CS2023); or\n\n[Advisory applicable to GD level students only] Requires undergraduate-level familiarity with probability and random processes, signals and systems, and linear algebra. Successful completion of EE5137 is preferred though not necessary.", + "corequisite": "" + }, + { + "moduleCode": "EE5137", + "title": "Stochastic Processes", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "EE5306, EE5137R", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "[applicable to UG level students only] EE2012 or EE2012A or ST2334; or\n\n[Advisory applicable to GD level students only] Requires knowledge of probability and statistics at the level of NUS-ECE undergraduate module EE2012 or equivalent", + "corequisite": "" + }, + { + "moduleCode": "EE5138", + "title": "Optimization for Electrical Engineering", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "EE5138R or EE6138 Optimization for Electrical Engineering (Advanced)", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Mathematical background of an undergraduate course in ECE", + "corequisite": "" + }, + { + "moduleCode": "EE5139", + "title": "Information Theory for Communication Systems", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "EE5139R", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "[applicable to UG level students only] EE2012 or EE2012A or ST2334 or EE4131; or\n\n[Advisory pre-req applicable to GD level students only] Requires knowledge of probability and statistics at the level of the undergraduate module such as EE2012 or EE4131", + "corequisite": "" + }, + { + "moduleCode": "EE5201", + "title": "Control in Data Storage Systems", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EE5206 Recording Electronics \nEE6201 Magnetic Recording Technology (Advanced)", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "EE5101 / EE5101R / ME5401 Linear Systems\nOR\nEE5103 / EE5103R / ME5403 Computer Control Systems", + "corequisite": "" + }, + { + "moduleCode": "EE5303", + "title": "Microwave Electronics", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "EE5303R", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "[applicable to UG level students only] EE4101 or EE4104 or EE4112; or\n\n[Advisory pre-req applicable to GD level students only] Requires background knowledge such as EE4101, EE4104 or EE4112 or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "EE5308", + "title": "Antenna Engineering", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "EE5308R", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "[applicable to UG level students only] EE4112; or\n\n[Advisory applicable to GD level students only]: Requires undergraduate 2nd year background knowledge on EM Waves & Fields; and Engineering Maths", + "corequisite": "" + }, + { + "moduleCode": "EE5310", + "title": "Communication Networking Fundamentals", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EE6310 Communication Networking Fundamentals (Advanced)", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "[applicable to UG level students only] EE2012 or EE2012A or ST2334 or EE3204 or EE4204 or EE4210; or\n\n[Advisory pre-req applicable to GD level students only] Requires basic probability at the level of EE2012/EE2012A/ST234 and basic networking concepts at the level of EE3204/EE4204 and EE4210", + "corequisite": "" + }, + { + "moduleCode": "EE5401", + "title": "Cellular Mobile Communications", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "TD5113A", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "[applicable to UG level students only] EE4102 OR EE5135; or\n\n[Advisory applicable to GD level students only]: Requires background of digital communications, either EE5 & EE4 series or equivalent", + "corequisite": "" + }, + { + "moduleCode": "EE5402", + "title": "Rf Circuit Design I", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "TD5115", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EE5404", + "title": "Satellite Communications", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "TD5116", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EE5431", + "title": "Fundamentals of Nanoelectronics", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "EE5431R", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "[applicable to UG level students only] PC2232 OR EE3431C; or\n\n[Advisory applicable to GD level students only]: Requires background knowledge such as PC2232, EE3431C or equivalent", + "corequisite": "" + }, + { + "moduleCode": "EE5434", + "title": "Microelectronic Processes and Integration", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "EE5515, EE5516, EE5432R", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "[applicable to UG level students only] EE3431C or equivalent; or\n\n[Advisory applicable to GD level students only] Requires background such as EE3431C or equivalent", + "corequisite": "" + }, + { + "moduleCode": "EE5439", + "title": "Micro/Nano Electromechanical Systems", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "EE6439 Micro/Nano Electromechanical Systems (M/NEMS) (Advanced)\nEE5520 Micro/Nanoelectromechanical Systems (M/NEMS)", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "[applicable to UG level students only] EE4411 OR EE4436 or CN4217 Processing of Microelectronic Materials or equivalent; or\n\n[Advisory applicable to GD level students only] Requires background such as EE4411 or CN4217 or equivalent", + "corequisite": "" + }, + { + "moduleCode": "EE5440", + "title": "Magnetic Data Storage for Big Data", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "EE4433 Nanometer Scale Information Storage, or EE5202 Nanometer Scale Information Storage", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Requires knowledge of magnetostatics, magnetic materials and solid state physics, such as PC3231, PC3235, PC4240, MLE3105", + "corequisite": "" + }, + { + "moduleCode": "EE5502", + "title": "Mos Devices", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "[applicable to UG level students only] EE3431C; or\n\n[Advisory applicable to GD level students only] Requires undergrad level background (such as EE2004/EE3431C) or equivalent on semiconductor physics and MOS devices", + "corequisite": "" + }, + { + "moduleCode": "EE5507", + "title": "Analog Integrated Circuits Design", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "EE5507R", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "[applicable to UG level students only] EE3408C; or\n\n[Advisory applicable to GD level students only] Requires background knowledge such as EE3408/EE3408C or equivalent", + "corequisite": "" + }, + { + "moduleCode": "EE5508", + "title": "Semiconductor Fundamentals", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "[applicable to UG level students only] EE3431C; or\n\n[Advisory applicable to GD level students only] Requires undergrad Physics & Maths and Electronic material background (such as EE2004, EE3406, EE3431C) or equivalent", + "corequisite": "" + }, + { + "moduleCode": "EE5514", + "title": "Ic Yield, Reliability & Failure Analysis", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EE5503", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EE5517", + "title": "Optical Engineering", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "[applicable to UG level students only] EE3431C; or\n\n[Advisory applicable to GD level students only] Requires background such as EE3431C or equivalent", + "corequisite": "" + }, + { + "moduleCode": "EE5518", + "title": "Vlsi Digital Circuit Design", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "EE5518R", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "[applicable to UG level students only] EE4415; or\n\n[Advisory applicable to GD level students only] Requires background knowledge such as EE2020/EE2026, EE4415 or equivalent", + "corequisite": "" + }, + { + "moduleCode": "EE5666", + "title": "Industrial Attachment", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EE5701", + "title": "High Voltage Testing and Switchgear", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "[Advisory] Requires good background of power systems, physics and mathematics.", + "corequisite": "" + }, + { + "moduleCode": "EE5702", + "title": "Advanced Power System Analysis", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "EE5702R", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "[applicable to UG level students only] EE4501; or\n\n[Advisory applicable to GD level students only] Requires background knowledge such as EE4501 Power System Mgt & Protection; or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "EE5703", + "title": "Industrial Drives", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "EE5703R, MCH5203", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "[applicable to UG level students only] EE4502; or\n\n[Advisory applicable to GD level students only] Requires undergraduate knowledge in Electric Drives, example EE4502 or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "EE5704", + "title": "High-Frequency Power Converters", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EE6704", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "EE5711, EE5711R or EE4503", + "corequisite": "" + }, + { + "moduleCode": "EE5711", + "title": "Power Electronic Systems", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "EE5711R", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "[applicable to UG level students only] EE4503; or\n\n[Advisory applicable to GD level students only] Requires undergraduate knowledge in power electronics, example EE3501C, EE4503 or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "EE5731", + "title": "Visual Computing", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "EE6904, EE5731R", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "[applicable to UG level students only] EE4212 and EE4704. Advisory: require skill in Matlab programming; or\n\n[Advisory applicable to GD level students only] Requires knowledge in Math (Linear Algebra, Calculus, Statistic/Probabilistic) and skill in Matlab programming.", + "corequisite": "" + }, + { + "moduleCode": "EE5801", + "title": "Electromagnetic Compatibility", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "[applicable to UG level students only] EE4101 and EE4112; or\n\n[Advisory applicable to GD level students only] Requires background knowledge such as EE2023, EE2011, PC2020, EE4101, EE4112 or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "EE5831", + "title": "Electromagnetic Wave Theory", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "EE5831R", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EE5902", + "title": "Multiprocessor Systems", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "EE5902R, TD5180A, CS5222 Advanced Computer Archtecture; CS5223 Distributed Systems; CS4223 Multi-core Architectures.", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "[applicable to UG level students only] EE4204 or EE3207 or EE4218 or CS5272 or CG3207.Advisory: Requires knowledge of single CPU organization (CS2100 Computer Organization) and Architecture (CG3207 Computer Architecture), code reading, basics of single CPU workings and operating systems. For simulation in CA, you must be able to do programming using one of the languages - C/C++/Python/Java. In case of hardware project, coding experience with VHDL/Verilog using FPGA is expected. Must be comfortable to read the prescribed/chosen research papers independently towards fulfiling your 40% CA requirements.\n\nOr\n\n[Advisory applicable to GD level students only] Requires knowledge of single CPU organization (CS2100 Computer Organization) and Architecture (CG3207 Computer Architecture), code reading, basics of single CPU workings and operating systems. For simulation in CA, you must be able to do programming using one of the languages - C/C++/Python/Java. In case of hardware project, coding experience with VHDL/Verilog using FPGA is expected. Must be comfortable to read the prescribed/chosen research papers independently towards fulfiling your 40% CA requirements. Pre-or co-requisite related modules such as EE4218 Embedded Hardware System Design; CS5272 Embedded Software Design or CG3207 Computer Architecture.", + "corequisite": "" + }, + { + "moduleCode": "EE5903", + "title": "Real-Time Systems", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "EE4214, EE4214E, MCH5205, TD5103, CS5270 Verification of Real Time Systems, CS5250 Advanced Operating Systems", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "[applicable to UG level students only] EE4218 or CS5272 or CG2271 or CS2106. Advisory: Requires knowledge of algorithms, code reading, basics of single CPU workings and operating systems and must be able to do programming using one of the languages - C/C++/Python/Java in your implementation based 30% CA assignment. In case of hardware project, coding experience with VHDL/Verilog using FPGA is expected. Must be comfortable to read the prescribed research papers independently towards fulfiling your 50% CA requirements. Knowledge from CG2271 Real Time Operating Systems is an added asset. Pre- or co-requisite of relevant modules such as EE4218 Embedded Hardware System Design or CS5272 Embedded Software Design.\n\nOr\n\n[Advisory applicable to GD level students only] Requires knowledge of algorithms, code reading, basics of single CPU workings and operating systems and must be able to do programming using one of the languages - C/C++/Python/Java in your implementation based 30% CA assignment. In case of hardware project, coding experience with VHDL/Verilog using FPGA is expected. Must be comfortable to read the prescribed research papers independently towards fulfiling your 50% CA requirements. Knowledge from CG2271 Real Time Operating Systems is an added asset. Pre- or co-requisite of relevant modules such as EE4218 Embedded Hardware System Design or CS5272 Embedded Software Design.", + "corequisite": "" + }, + { + "moduleCode": "EE5904", + "title": "Neural Networks", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "ME5404, EE5904R, MCH5202", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EE5907", + "title": "Pattern Recognition", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "EE5907R, EE5026 or EE5027", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "[applicable to UG level students only] EE2012 or EE2012A or ST2334 or EE3731C or CS1101S; or\n\n[Advisory applicable to GD level students only] Requires background knowledge in probability/statistics, programming (python/matlab) and linear algebra that are typically covered in an undergraduate engg program", + "corequisite": "" + }, + { + "moduleCode": "EE5934", + "title": "Deep Learning", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "EE6934 Deep Learning (Advanced)", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "[applicable to both GD and UG level students] EE5907. Requires good proficiency in a scientific programming language, such as python (e.g. CS1010; IT1007 or equivalent). Class assignments will be in Python", + "corequisite": "" + }, + { + "moduleCode": "EE5999", + "title": "Graduate Seminars", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EE6004", + "title": "Selected Advanced Topics In EM Modelling", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "EE5302, EE5308R, EE5308. Advisory: Requires good background of mathematics.", + "corequisite": "" + }, + { + "moduleCode": "EE6102", + "title": "Multivariable Control Systems (Advanced)", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EE5102 Multivariable Control Systems", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "EE5101 / EE5101R / ME5401 Linear Systems", + "corequisite": "" + }, + { + "moduleCode": "EE6104", + "title": "Adaptive Control Systems (Advanced)", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "EE5104 Adaptive Control Systems", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Requires EE5101/EE5101R/ME4501 Linear Systems as a pre-requisite or co-requisite; or background knowledge in linear system or with permission by lecturer", + "corequisite": "Requires EE5101/EE5101R/ME4501 Linear Systems as a pre-requisite or co-requisite; or background knowledge in linear system or with permission by lecturer" + }, + { + "moduleCode": "EE6105", + "title": "Non-Linear Dynamics and Control", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "EE5101 / EE5101R / ME5401 Linear Systems\nOR\nEE5103 / EE5103R / ME5403 Computer Control Systems", + "corequisite": "" + }, + { + "moduleCode": "EE6107", + "title": "Optimal Control Systems (Advanced)", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EE5107 Optimal Control Systems,\nEE5105 Optimal Control Systems (old code for EE5107)", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "EE5101 / EE5101R Linear Systems (Cross-listed ME5401)", + "corequisite": "" + }, + { + "moduleCode": "EE6110", + "title": "Special Topics in Automation and Control (Advanced)", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "EE5110 Special Topics in Automation and Control", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "EE5101 / EE5101R Linear Systems (cross-listed with ME5401) OR EE5103 / EE5103R Computer Control Systems (crosslisted with ME5403)" + }, + { + "moduleCode": "EE6130", + "title": "Classical & Modern Channel Coding", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EE5307", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "EE5139/EE5139R", + "corequisite": "" + }, + { + "moduleCode": "EE6131", + "title": "Wireless Communications (Advanced)", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EE5131", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EE6134", + "title": "Optical Networks (Advanced)", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EE5134, EE5912", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Knowledge in computer networks fundamentals and optimization", + "corequisite": "" + }, + { + "moduleCode": "EE6135", + "title": "Digital Communications (Advanced)", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "EE5135", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Requires undergraduate-level familiarity with probability and random processes, signals and systems, and linear algebra. Successful completion of EE5137 is preferred but not necessary.", + "corequisite": "" + }, + { + "moduleCode": "EE6136", + "title": "Advanced Optical Communications", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "EE5137/EE5137R or EE5306", + "corequisite": "" + }, + { + "moduleCode": "EE6138", + "title": "Optimization for Electrical Engineering (Advanced)", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "EE5138 Optimization for Electrical Engineering\nOr EE5138R Optimization for Communication Systems", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EE6201", + "title": "Control in Data Storage Systems (Advanced)", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EE5201 Magnetic Recording Technology\nEE5206 Recording Electronics", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "EE5101 / EE5101R Linear Systems (cross-listed ME5401)\nOR\nEE5103 / EE5103R Computer Control Systems (crosslisted\nME5403)", + "corequisite": "" + }, + { + "moduleCode": "EE6230", + "title": "Advanced Biomedical Circuits and Systems", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "EE5507/EE5507R Analog Integrated Circuits Design\nAND\nEE5518/EE5518R VLSI Digital Circuit Design", + "corequisite": "" + }, + { + "moduleCode": "EE6231", + "title": "Reconfigurable Computing", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "EE4218 Embedded Hardware System Design or equivalent", + "corequisite": "" + }, + { + "moduleCode": "EE6310", + "title": "Communication Networking Fundamentals (Advanced)", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EE5310 Communication Networking Fundamentals", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Basic probability at the level of EE2012 and basic networking concepts at the level of EE3204 and EE4210", + "corequisite": "" + }, + { + "moduleCode": "EE6435", + "title": "Advanced Concepts in Nanoelectronics", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "EE5209 and EE5521", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "EE5431 or EE5431R", + "corequisite": "" + }, + { + "moduleCode": "EE6436", + "title": "Advanced Characterization of Materials and Devices", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "EE6503", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "EE5434 or EE5432R", + "corequisite": "" + }, + { + "moduleCode": "EE6437", + "title": "Advanced Semiconductor Devices", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "EE6505", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "EE5502 or EE5433R", + "corequisite": "" + }, + { + "moduleCode": "EE6438", + "title": "Magnetic materials and devices", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "EE5431/EE5431R or EE5433R", + "corequisite": "" + }, + { + "moduleCode": "EE6439", + "title": "Micro/Nano Electromechanical Systems (Advanced)", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "EE5439 Micro/Nano Electromechanical Systems (M/NEMS)\nEE5520 Micro/Nanoelectromechanical Systems (M/NEMS)", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "EE4411 Silicon Processing Technology or CN4217 Processing of Microelectronic Materials or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "EE6440", + "title": "Advanced Topics in Photonics", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "EE5519", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Students should have some basic knowledge of electromagnetics and optics.", + "corequisite": "" + }, + { + "moduleCode": "EE6506", + "title": "Advanced Integrated Circuit Design", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "EE5507/EE5507R, EE5518/EE5518R", + "corequisite": "" + }, + { + "moduleCode": "EE6531", + "title": "Selected Topics in Smart Grid Technologies", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "EE5711 / EE5711R Modelling and Control of Power Electronic Converters, OR EE5702 / EE5702R Advanced Power System Analysis.", + "corequisite": "" + }, + { + "moduleCode": "EE6532", + "title": "Power System Reliability", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EE5712 Power System Reliability", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "EE5702 / EE5702R Advanced Power Systems Analysis", + "corequisite": "" + }, + { + "moduleCode": "EE6701", + "title": "Evolutionary Computation", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "EE5101 / EE5101R / ME5401 Linear Systems\nOR\nEE5103 / EE5103R / ME5403 Computer Control Systems", + "corequisite": "" + }, + { + "moduleCode": "EE6703", + "title": "Modelling and Control of Electrical Actuators", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "EE5703/EE5703R and EE5711/EE5711R", + "corequisite": "" + }, + { + "moduleCode": "EE6704", + "title": "High-Frequency Power Converters (Advanced)", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EE5704", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "EE5711/EE5711R", + "corequisite": "" + }, + { + "moduleCode": "EE6733", + "title": "Advanced Topics on Vision and Machine Learning", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "EE5907/EE5907R and EE5731/EE5731R", + "corequisite": "" + }, + { + "moduleCode": "EE6735", + "title": "Algorithms for Statistical Inference", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "EE4131 or EE5137/EE5137R", + "corequisite": "" + }, + { + "moduleCode": "EE6831", + "title": "Advanced Electromagnetic Theory and Applications", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "EE5831 or EE5831R", + "corequisite": "" + }, + { + "moduleCode": "EE6832", + "title": "Selected Topics in EM Metamaterial and Multiple-Antenna", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "EE5308 or EE5308R", + "corequisite": "" + }, + { + "moduleCode": "EE6833", + "title": "Selected Topics in Microwave and Antenna Engineering", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "EE5303/EE5303R Microwave Electronics or\nEE5308/EE5308R Antenna Engineering", + "corequisite": "" + }, + { + "moduleCode": "EE6901", + "title": "3d Vision", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EE5908, TD5130", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "EE4212, EE5731/EE5731R or equivalent", + "corequisite": "" + }, + { + "moduleCode": "EE6903", + "title": "Advanced Models of Biological Perception", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "(EE4604/equivalent) AND (EE5907/EE5907R or EE5731/EE5731R)", + "corequisite": "" + }, + { + "moduleCode": "EE6934", + "title": "Deep Learning (Advanced)", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "EE5934 Deep Learning", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "EE5907 Pattern Recognition. Requires good proficiency in a scientific programming language, such as Python (e.g. CS1010 Programming Methodology; IT1007 Introduction to Programming with Python & C or equivalent). All class assignments will be in Python.", + "corequisite": "" + }, + { + "moduleCode": "EE6990", + "title": "Research Attachment", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ECE PhD student", + "corequisite": "" + }, + { + "moduleCode": "EE6999", + "title": "Doctoral Seminars", + "moduleCredit": 8, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EG1109", + "title": "Statics And Mechanics Of Materials", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EG1109FC, CE1109X", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "'A Level Math / H2 Math or equivalent", + "corequisite": "" + }, + { + "moduleCode": "EG1109M", + "title": "Statics and Mechanics of Materials", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "EG1109FC, CE1109, CE1109X", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "A Level Math / H2 Math or equivalent", + "corequisite": "" + }, + { + "moduleCode": "EG1111", + "title": "Engineering Principles and Practice I", + "moduleCredit": 6, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EG1112", + "title": "Engineering Principles and Practice II", + "moduleCredit": 6, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EG1310", + "title": "Exploratory Satellite Design", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EG1311", + "title": "Design and Make", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EG1603", + "title": "InnoVenture - Leadership & Innovation Challenge", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EG1611", + "title": "Engineering Co-Op Immersion Programme I", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EG2101", + "title": "Pathways to Engineering Leadership", + "moduleCredit": 2, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "This module is open only to students enrolled in the Engineering Scholars Programme.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EG2201A", + "title": "Introduction to Design Thinking", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EG2201B", + "title": "Practising Design Thinking", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EG2202", + "title": "From Design Thinking to Engineering Design", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EG2201B (Design Thinking in Grand Engineering\nChallenges – Part 2)", + "corequisite": "" + }, + { + "moduleCode": "EG2301", + "title": "Case Studies in Innovation", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EG2302", + "title": "Engineering Design in Topical Engineering Challenges", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EG2310", + "title": "Fundamentals of Systems Design", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "EG1310 Exploratory Satellite Design", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EG2311", + "title": "Introduction to Space Systems", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "H2 Physics", + "corequisite": "" + }, + { + "moduleCode": "EG2312", + "title": "Radar Theory and Techniques", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EG2401A", + "title": "Engineering Professionalism", + "moduleCredit": 2, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "EG2401", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ES1501A, ES1501B, ES1501C, EG1413/ES1531 and\nYear 2 status", + "corequisite": "" + }, + { + "moduleCode": "EG2603", + "title": "TIP - Product & Business Plan Development", + "moduleCredit": 2, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EG2603B", + "title": "TIP : Business Incubation", + "moduleCredit": 8, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EG2604", + "title": "Innovation Programme", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This is an introductory module for students of all backgrounds.", + "corequisite": "" + }, + { + "moduleCode": "EG2605", + "title": "Undergraduate Research Opportunities Programme", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EG2606A", + "title": "Independent Work", + "moduleCredit": 2, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EG2606B", + "title": "Independent Work", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EG2610", + "title": "Engineering Work Experience Internship", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [], + "preclusion": "Full-time undergraduate students who have accumulated more than 10MCs for previous internship stints.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This internship module is open to full-time undergraduate students who have completed at least 40MCs and plan to proceed on an approved internship of at least 10 weeks in duration in the vacation period.", + "corequisite": "" + }, + { + "moduleCode": "EG2620", + "title": "Engineering Co-Op Immersion Programme II", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EG1611 Engineering Co-Op Immersion Programme I", + "corequisite": "" + }, + { + "moduleCode": "EG2701A", + "title": "Aspirational Project I", + "moduleCredit": 8, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EG2701B", + "title": "Aspirational Project II", + "moduleCredit": 8, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EG3301R", + "title": "DCP Project", + "moduleCredit": 12, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "ESP3902: Major Design Project 1 (4 MC)\nESP3903: Major Design Project 2 (4 MC)\nBN2203: Introduction to Bioengineering Design (4 MC)\nBN3101: Biomedical Engineering Design (6 MC)\nCG3002: Embedded Systems Design Project (6 MC)\nEE3001: Project (4 MC)\nEE3031: Innovation & Enterprise I (4 MC)\nEE3032: Innovation & Enterprise II (6 MC)\nIE3100M: Systems Design Project (12 MC)\nME3101: Mechanical Systems Design I (4 MC)\nME3102: Mechanical Systems Design II (4 MC)\nESE4501: Design Project (4 MC)\nMLE3103: Materials Design and Selection (4 MC)\nMLE4102: Design Project (4 MC)\nEG3301: DCC Project (10MC)", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "Stage 2 standing.", + "corequisite": "" + }, + { + "moduleCode": "EG3601", + "title": "Industrial Attachment Programme", + "moduleCredit": 12, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EG3602", + "title": "Vacation Internship Programme", + "moduleCredit": 6, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EG3611", + "title": "Industrial Attachment", + "moduleCredit": 12, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "EG3601 Industrial Attachment Programme\nEG3602 Vacation Internship Programme\nEG3612 Vacation Internship Programme", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students should be of or are expected to be at least Stage 3 in standing.\nStudent should complete CFG career coaching modules (to be finalized) prior to start of internship.", + "corequisite": "" + }, + { + "moduleCode": "EG3611A", + "title": "Industrial Attachment", + "moduleCredit": 10, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "EG3601 Industrial Attachment Programme \nEG3611 Industrial Attachment\nEG3602 Vacation Internship Programme\nEG3612 Vacation Internship Programme", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students should be of or are expected to be at least Year 3 in standing.\nStudent should complete CFG career coaching modules (to be finalized) prior to start of internship", + "corequisite": "EG2401 or EG2401A should be read either before or during the semester on internship." + }, + { + "moduleCode": "EG3611B", + "title": "Industrial Attachment", + "moduleCredit": 2, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [], + "preclusion": "EG3601 Industrial Attachment Programme \nEG3611 Industrial Attachment\nEG3602 Vacation Internship Programme\nEG3612 Vacation Internship Programme", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students should be of or are expected to be at least Year 3 in standing.\nStudent should complete CFG career coaching modules (to be finalized) prior to start of internship.", + "corequisite": "EG2401 should be read either before or during the semester on internship." + }, + { + "moduleCode": "EG3612", + "title": "Vacation Internship Programme", + "moduleCredit": 6, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [], + "preclusion": "EG3601 Industrial Attachment Programme\nEG3602 Vacation Internship Programme\nEG3611 Industrial Attachment\nEG3611A Industrial Attachment", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students should have completed at least Stage 2 of studies.\nStudent should have completed CFG career coaching modules (to be finalized) prior to start of internship.", + "corequisite": "EG2401 or EG2401A should be read either before or during the semester on internship." + }, + { + "moduleCode": "EG4211", + "title": "Energy Storage Systems for Electric Grids", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EG4301", + "title": "DCP Dissertation", + "moduleCredit": 12, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "ESP4901: Research Project (12 MC)\nBN4101R: B.Eng. Dissertation (12 MC)\nCN4118R: B.Eng. Dissertation (10 MC)\nCG4001: B.Eng. Dissertation (12 MC)\nEE4001: B.Eng. Dissertation (12 MC)\nIE4100: B.Eng. Dissertation (12 MC)\nME4101: B.Eng. Dissertation (12 MC)\nCE4104: B.Eng. Dissertation (8 MC)\nESE4502: B.Eng. Dissertation (12 MC)\nMLE4101: B.Eng. Dissertation (12 MC)\nBN4101 B.Eng. Dissertation (8 MCs)\nCG4003 B.Eng. Dissertation (12 MCs)\nCN4118 B.Eng. Dissertation (8 MCs)\nEE4002R Research Capstone (8 MCs)\nESE4502R B.Eng. Dissertation (8 MCs)\nIE4100R B.Eng. Dissertation (8 MCs)\nME4101A B.Eng. Dissertation (8 MCs)\nMLE4101A B.Eng. Dissertation (6 MCs)", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "Year 4", + "corequisite": "" + }, + { + "moduleCode": "EG4301A", + "title": "Ideas to Start-up", + "moduleCredit": 12, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "EG4301 DCP B.Eng. Dissertation (12 MC)\nBN4101 B.Eng. Dissertation (8 MCs)\nBN4101R B.Eng. Dissertation (12 MCs)\nCE4104 B.Eng. Dissertation (8 MCs)\nCG4001 B.Eng. Dissertation (12 MCs)\nCG4003 B.Eng. Dissertation (12 MCs)\nCN4118 B.Eng. Dissertation (8 MCs)\nCN4118R B.Eng. Dissertation (10 MCs)\nEE4001 B.Eng. Dissertation (12 MCs)\nEE4002R Research Capstone (8 MCs)\nESP4901 Research Project (12 MCs)\nESE4502 B.Eng. Dissertation (12 MCs)\nESE4502R B.Eng. Dissertation (8 MCs)\nIE4100 B.Eng. Dissertation (12 MCs)\nIE4100R B.Eng. Dissertation (8 MCs)\nME4101 B.Eng. Dissertation (12 MCs)\nME4101A B.Eng. Dissertation (8 MCs)\nMLE4101 B.Eng. Dissertation (12 MCs)\nMLE4101A B.Eng. Dissertation (6 MCs)", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "EG3301R DCP Project or Year 4 students who already\nhave project/product ideas", + "corequisite": "" + }, + { + "moduleCode": "EG5911", + "title": "Research Methodology & Ethics", + "moduleCredit": 0, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EG5911R", + "title": "Information Literacy Skills for Research", + "moduleCredit": 0, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EL1101E", + "title": "The Nature of Language", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "GEK1011", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Exempted from NUS Qualifying English Test, or passed NUS Qualifying English Test, or exempted from further CELC Remedial English modules.", + "corequisite": "" + }, + { + "moduleCode": "EL2101", + "title": "Structure of Sentences and Meanings", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "EL2201", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EL1101E or GEK1011", + "corequisite": "" + }, + { + "moduleCode": "EL2102", + "title": "Sound Patterns in Language", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "EL2202", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EL1101E or GEK1011", + "corequisite": "" + }, + { + "moduleCode": "EL2111", + "title": "Historical Variation in English", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "EL2211", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EL1101E or GEK1011", + "corequisite": "" + }, + { + "moduleCode": "EL2151", + "title": "Social Variation in English", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "EL2251", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EL1101E or GEK1011", + "corequisite": "" + }, + { + "moduleCode": "EL3201", + "title": "Syntax", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EL2101 or EL2201", + "corequisite": "" + }, + { + "moduleCode": "EL3202", + "title": "Phonetics and Phonology", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EL2102 or EL2202", + "corequisite": "" + }, + { + "moduleCode": "EL3203", + "title": "Semantics and Pragmatics", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EL1101E or GEK1011", + "corequisite": "" + }, + { + "moduleCode": "EL3204", + "title": "Discourse Structure", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EL1101E or GEK1011", + "corequisite": "" + }, + { + "moduleCode": "EL3205", + "title": "Morphology", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(i) EL1101E or GEK1011, and (ii) EL2101 or EL2201, and (iii) EL2102 or EL2202", + "corequisite": "" + }, + { + "moduleCode": "EL3206", + "title": "Psycholinguistics", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EL1101E or GEK1011", + "corequisite": "" + }, + { + "moduleCode": "EL3207", + "title": "Introduction to the Neurocognition of Language", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EL1101E or GEK1011", + "corequisite": "" + }, + { + "moduleCode": "EL3208", + "title": "Bilingualism", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EL1101E or GEK1011", + "corequisite": "" + }, + { + "moduleCode": "EL3209", + "title": "Language, Culture, and Mind", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EL1101E or GEK1011. Exposure to some linguistics is helpful but not essential.", + "corequisite": "" + }, + { + "moduleCode": "EL3210", + "title": "Topics in the Psychology of Language", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EL1101E or GEK1011", + "corequisite": "" + }, + { + "moduleCode": "EL3211", + "title": "Language in Contact", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EL1101E or GEK1011", + "corequisite": "" + }, + { + "moduleCode": "EL3213", + "title": "Language Typology", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EL2101 or EL2201", + "corequisite": "" + }, + { + "moduleCode": "EL3214", + "title": "Language Documentation", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EL1101E or GEK1011", + "corequisite": "" + }, + { + "moduleCode": "EL3216", + "title": "Language and the Internet", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EL1101E or GEK1011", + "corequisite": "" + }, + { + "moduleCode": "EL3221", + "title": "Literary Stylistics", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed one Level‐1000 or 2000 module in EL, or GEK1011", + "corequisite": "" + }, + { + "moduleCode": "EL3222", + "title": "Cinematic Discourse and Language", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "EL3880B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EL1101E or GEK1011", + "corequisite": "" + }, + { + "moduleCode": "EL3230", + "title": "Phonology", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EL3202 Phonetics and Phonology", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EL1101E The Nature of Language and EL2102 Sound Patterns in Language", + "corequisite": "" + }, + { + "moduleCode": "EL3231", + "title": "Phonetics", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EL3202", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EL2202 or EL2102 The Sound System of English", + "corequisite": "" + }, + { + "moduleCode": "EL3251", + "title": "Language, Society and Identity", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EL2151 or EL2251", + "corequisite": "" + }, + { + "moduleCode": "EL3252", + "title": "Language Planning and Policy", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EL1101E or GEK1011", + "corequisite": "" + }, + { + "moduleCode": "EL3253", + "title": "Critical Discourse Analysis", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EL1101E or GEK1011", + "corequisite": "" + }, + { + "moduleCode": "EL3254", + "title": "Media, Discourse and Society", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EL1101E or GEK1011", + "corequisite": "" + }, + { + "moduleCode": "EL3255", + "title": "English in Southeast Asia", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EL1101E or GEK1011", + "corequisite": "" + }, + { + "moduleCode": "EL3256", + "title": "Language and the Workplace", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EL1101E or GEK1011", + "corequisite": "" + }, + { + "moduleCode": "EL3258", + "title": "The Sociolinguistics of Humour: Jokes and Comedies", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EL1101E or GEK1011, and EL2251 or EL2151", + "corequisite": "" + }, + { + "moduleCode": "EL3259", + "title": "Language as Interaction", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EL2151", + "corequisite": "" + }, + { + "moduleCode": "EL3261", + "title": "Foundations in Applied Linguistics", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EL3880F", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EL1101E or GEK1011. Students should have a strong interest in reading about second language learning and teaching.", + "corequisite": "" + }, + { + "moduleCode": "EL3551", + "title": "FASS Undergraduate Research Opportunity (UROP)", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "Students must:\nhave declared a Major, completed a minimum of 24 MCs in that Major, and have a CAP of at least 3.20.", + "corequisite": "" + }, + { + "moduleCode": "EL3880", + "title": "Topics in English Language", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EL1101E or GEK1011", + "corequisite": "" + }, + { + "moduleCode": "EL3880C", + "title": "Grammaticalisation", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EL1101E or GEK1011", + "corequisite": "" + }, + { + "moduleCode": "EL3880D", + "title": "The Lexicon of English", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EL1101E or GEK1011", + "corequisite": "" + }, + { + "moduleCode": "EL3880F", + "title": "Foundations in Applied Linguistics", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EL1101E or GEK1011", + "corequisite": "" + }, + { + "moduleCode": "EL4201", + "title": "Advanced Syntax", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EL, and EL3201, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EL4203", + "title": "Semantics", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012-2014:\nCompleted 80 MCs, including 28 MCs in EL and EL3201,\nwith a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2015 onwards:\nCompleted 80 MCs, including (i) 28 MCs in EL or 28 MCs\nin PH, and (ii) EL3201, with a minimum CAP of 3.20 or be\non the honours track. PH students who believe they have\nsufficient background knowledge for the module should\nconsult the lecturer for permission to take it.", + "corequisite": "" + }, + { + "moduleCode": "EL4204", + "title": "Pragmatics", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EL, with a minimum CAP of 3.20 or be on the Honours track", + "corequisite": "" + }, + { + "moduleCode": "EL4206", + "title": "Language Acquisition & Language Development", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EL5420", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EL, with a minimum CAP of 3.20 or be on the Honours track", + "corequisite": "" + }, + { + "moduleCode": "EL4211", + "title": "Grammar Writing", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EL, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EL4212", + "title": "Field Methods in Linguistics", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EL3212", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EL, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EL4216", + "title": "Lexicology and Lexicography", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EL, with a minimum CAP of 3.20 or be on the Honours track", + "corequisite": "" + }, + { + "moduleCode": "EL4221", + "title": "Narrative Structures", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including (i) EL1101E and (ii) 28 MCs in EL or 28 MCs\nin EN or 28 MCs in NM, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EL4222", + "title": "Stylistics and Drama", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "TS4213", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs including 28 MCs in EL or 28 MCs in TS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EL4251", + "title": "Social Thought in Language", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EL, and EL2251 or EL2151, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EL4252", + "title": "Interactional Discourse", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EL, with a minimum CAP of 3.20 or be on the Honours track", + "corequisite": "" + }, + { + "moduleCode": "EL4253", + "title": "Language, Gender, and Text", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EL or 28 MCs in EN, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EL4254", + "title": "Language, Ideology and Power", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in EL or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in EL, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EL4255", + "title": "English as a World Language", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in EL or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in EL, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EL4256", + "title": "Multilingualism", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EL, and one of the following: EL2251 or EL2151 or EL3251 or EL3252, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EL4257", + "title": "English in the Public Sphere: the Politics of Language", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EL, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EL4258", + "title": "Metapragmatics and Language Ideology", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EL, and EL2151, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EL4401", + "title": "Honours Thesis", + "moduleCredit": 15, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "EL4660", + "attributes": [ + false, + false, + false, + false, + true, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012 and before:\nCompleted 110 MCs, including 60 MCs of EL major requirements with a minimum CAP of 3.50.\n\nCohort 2013-2015:\nCompleted 110 MCs including 60 MCs of EL major requirements with a minimum SJAP of 4.00 and CAP of 3.50, or with recommendation by the programme committee. Students may seek a waiver of the SJAP pre-requisite from the department if they have a minimum CAP of 4.25 after completing 110 MCs.\n\nCohort 2016 onwards:\nCompleted 110 MCs including 44 MCs of EL major requirements with a minimum SJAP of 4.00 and CAP of 3.50, or with recommendation by the programme committee. Students may seek a waiver of the SJAP pre-requisite from the department if they have a minimum CAP of 4.25 after completing 110 MCs.", + "corequisite": "" + }, + { + "moduleCode": "EL4660", + "title": "Independent Study", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "EL4401 or XFA4404", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012-2015: Completed 100 MCs, including 60 MCs in EL, with a minimum CAP of 3.20. Cohort 2016 onwards: Completed 100 MCs, including 44 MCs in EL, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "EL4880", + "title": "Topics in English Language", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EL, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EL4880B", + "title": "Exploring Second Language Writing", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EL5880B, EL5880BR", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EL, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EL4880C", + "title": "Lexicalist Theories of Syntax", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EL, and EL3201,\nwith a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EL4880D", + "title": "Experimental Syntax", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including (i) 28 MCs in EL, and (ii) EL3201 or with instructor's consent, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EL4880E", + "title": "World Englishes", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in EL, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EL5101", + "title": "Grammatical Analysis", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate Student in the university or with the approval of the Department.", + "corequisite": "" + }, + { + "moduleCode": "EL5101R", + "title": "Grammatical Analysis", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate Student in the university or with the approval of the Department.", + "corequisite": "" + }, + { + "moduleCode": "EL5102", + "title": "Phonetics and Phonology", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student in the university or with the approval of the Department.", + "corequisite": "" + }, + { + "moduleCode": "EL5102R", + "title": "Phonetics and Phonology", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student in the university or with the approval of the Department.", + "corequisite": "" + }, + { + "moduleCode": "EL5103", + "title": "Language in Society", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "EL5250", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student in the university or with the approval of the Department.", + "corequisite": "" + }, + { + "moduleCode": "EL5103R", + "title": "Language in Society", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "EL5250", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student in the university or with the approval of the Department.", + "corequisite": "" + }, + { + "moduleCode": "EL5202", + "title": "The Grammar of Modern English", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate Student in the University or with the approval of the Department", + "corequisite": "" + }, + { + "moduleCode": "EL5202R", + "title": "The Grammar of Modern English", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate Student in the University or with the approval of the Department", + "corequisite": "" + }, + { + "moduleCode": "EL5203", + "title": "Sociophonetics", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student in the university or with the approval of the Department.", + "corequisite": "" + }, + { + "moduleCode": "EL5203R", + "title": "Sociophonetics", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student in the university or with the approval of the Department.", + "corequisite": "" + }, + { + "moduleCode": "EL5204", + "title": "Linguistic Typology", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student in the university or with the approval of the Department.", + "corequisite": "" + }, + { + "moduleCode": "EL5204R", + "title": "Linguistic Typology", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student in the university or with the approval of the Department.", + "corequisite": "" + }, + { + "moduleCode": "EL5205", + "title": "Topics in Syntax", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate Student in the university or with the approval of the department.", + "corequisite": "" + }, + { + "moduleCode": "EL5205R", + "title": "Topics in Syntax", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate Student in the university or with the approval of the department.", + "corequisite": "" + }, + { + "moduleCode": "EL5206", + "title": "Advanced Psycholinguistics", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate Student in the University or with the approval of the Department.", + "corequisite": "" + }, + { + "moduleCode": "EL5206R", + "title": "Advanced Psycholinguistics", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate Student in the University or with the approval of the Department", + "corequisite": "" + }, + { + "moduleCode": "EL5211", + "title": "Contact Languages", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate Student in the University or with the approval of the Department", + "corequisite": "" + }, + { + "moduleCode": "EL5211R", + "title": "Contact Languages", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate Student in the University or with the approval of the Department", + "corequisite": "" + }, + { + "moduleCode": "EL5212", + "title": "History of English", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student with the university or with the approval of the department.", + "corequisite": "" + }, + { + "moduleCode": "EL5212R", + "title": "History of English", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student with the university or with the approval of the department.", + "corequisite": "" + }, + { + "moduleCode": "EL5216", + "title": "Corpus Linguistics", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate Student in the University or with the approval of the Department.", + "corequisite": "" + }, + { + "moduleCode": "EL5216R", + "title": "Corpus Linguistics", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate Student in the University or with the approval of the Department", + "corequisite": "" + }, + { + "moduleCode": "EL5221", + "title": "The Linguistic Analysis of Literature", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate Student in the University or with the approval of the Department", + "corequisite": "" + }, + { + "moduleCode": "EL5221R", + "title": "The Linguistic Analysis of Literature", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student in the university or with the approval of the Department", + "corequisite": "" + }, + { + "moduleCode": "EL5251", + "title": "Approaches to Discourse", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student in the university or with the approval of the Department.", + "corequisite": "" + }, + { + "moduleCode": "EL5251R", + "title": "Approaches to Discourse", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student in the university or with the approval of the Department.", + "corequisite": "" + }, + { + "moduleCode": "EL5252", + "title": "Language Variation and Change", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EL5252R", + "title": "Language Variation and Change", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EL5253", + "title": "Textual Construction of Knowledge", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate Student in the University or with the approval of the Department", + "corequisite": "" + }, + { + "moduleCode": "EL5253R", + "title": "Textual Construction of Knowledge", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student in the university or with the approval of the Department.", + "corequisite": "" + }, + { + "moduleCode": "EL5254", + "title": "Language, Gender and Sexuality", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student in the university or with the approval of the Department", + "corequisite": "" + }, + { + "moduleCode": "EL5254R", + "title": "Language, Gender and Sexuality", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student in the university or with the approval of the Department", + "corequisite": "" + }, + { + "moduleCode": "EL5255", + "title": "Second Language Writing", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EL5880B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate Student in the University or with the approval of the Department.", + "corequisite": "" + }, + { + "moduleCode": "EL5255R", + "title": "Second Language Writing", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EL5880B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate Student in the University or with the approval of the Department.", + "corequisite": "" + }, + { + "moduleCode": "EL5270", + "title": "Explorations in Applied Linguistics", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate Student in the University or with the approval of the Department", + "corequisite": "" + }, + { + "moduleCode": "EL5270R", + "title": "Explorations in Applied Linguistics", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate Student in the University or with the approval of the Department", + "corequisite": "" + }, + { + "moduleCode": "EL5660", + "title": "Independent Study", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate Student in the University or with the approval of the Department.", + "corequisite": "" + }, + { + "moduleCode": "EL5880", + "title": "Topics in English Language and Linguistics", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a graduate student in the university or should have the instructor’s approval.", + "corequisite": "" + }, + { + "moduleCode": "EL6660", + "title": "Independent Study", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Admission to the PhD programme or doctoral competence in the discipline to be determined by the Department upon recommendation by the instruction", + "corequisite": "" + }, + { + "moduleCode": "EL6770", + "title": "Graduate Research Seminar", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Admission to the PhD programme or doctoral competence in the discipline to be determined by the Department upon recommendation by the instructor", + "corequisite": "" + }, + { + "moduleCode": "EL6880", + "title": "Topics in Grammatical Theory", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Admission to the PhD programme or doctoral competence in the discipline to be determined by the Department upon recommendation by the instructor.", + "corequisite": "" + }, + { + "moduleCode": "EL6881", + "title": "Topics in Language and Cognition", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Admission to the PhD programme or doctoral competence in the discipline to be determined by the Department upon recommendation by the instructor.", + "corequisite": "" + }, + { + "moduleCode": "EL6882", + "title": "Topics in Language and Society", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Admission to the PhD programme or doctoral competence in the discipline to be determined by the Department upon recommendation by the instructor.", + "corequisite": "" + }, + { + "moduleCode": "EL6883", + "title": "English in Multilingual Societies", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Admission to the PhD programme or doctoral competence in the discipline to be determined by the Department upon recommendation by the instructor.", + "corequisite": "" + }, + { + "moduleCode": "EL6884", + "title": "Topics in Applied Linguistics", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Admission to the PhD programme or doctoral competence in the discipline to be determined by the Department upon recommendation by the instructor.", + "corequisite": "" + }, + { + "moduleCode": "EM1001", + "title": "Foundation English Course 1", + "moduleCredit": 0, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EM1002", + "title": "Foundation English Course 2", + "moduleCredit": 0, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EM1201", + "title": "English for Academic Purposes (Music) 1", + "moduleCredit": 0, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "AR1000, BE1000, ID1000, ET1000 / NK1001 / EA1101 / EG1471 / ES1301 / ES1101 / ES1102 / ES1103 and EM1101", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Open only to students enrolled in the Bachelor of Music Programme from AY2009/10 onwards. Students who score Band C in the YSTCM English Placement Test or students who have passed Foundation English Course 2 are required to read this module.", + "corequisite": "" + }, + { + "moduleCode": "EM1202", + "title": "English for Academic Purposes (Music) 2", + "moduleCredit": 0, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "AR1000, BE1000, ID1000, ET1000 / NK1001 / EA1101 / EG1471 / ES1301 / ES1101 / ES1102 / ES1103 and EM1101", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Open only to students enrolled in the Bachelor of Music programme from AY2009/10 onwards. Students who score Band B in the YSTCM English Placement Test or students who have passed English for Academic Purposes (Music) 1 are required to read this module.", + "corequisite": "" + }, + { + "moduleCode": "EMC5001", + "title": "Leadership & Managerial Skills", + "moduleCredit": 6, + "department": "NUS Business School", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EMC5002", + "title": "Corporate Strategy For 21st Century Organisations", + "moduleCredit": 6, + "department": "NUS Business School", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EMC5003", + "title": "Decision Making Using the Information Age Technologies", + "moduleCredit": 6, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EMC5004", + "title": "Business Environment in Asia", + "moduleCredit": 6, + "department": "NUS Business School", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EMC5005", + "title": "International Business and Law", + "moduleCredit": 6, + "department": "NUS Business School", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EMC5006", + "title": "The Asian Consumer and Marketing Management", + "moduleCredit": 6, + "department": "NUS Business School", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EMC5007", + "title": "Accounting and Management of Financial Resources", + "moduleCredit": 6, + "department": "NUS Business School", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EMC5008", + "title": "Cross-Cultural Human Resource Management", + "moduleCredit": 6, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EMC5009", + "title": "Operations and Logistics Management", + "moduleCredit": 6, + "department": "NUS Business School", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EMC5011", + "title": "Special Topics:corporate Finance and Corporate Governance", + "moduleCredit": 6, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EN1101E", + "title": "An Introduction to Literary Studies", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "GEK1000", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Exempted from or passed the NUS Qualifying English Test, or exempted from further CELC Remedial English modules.", + "corequisite": "" + }, + { + "moduleCode": "EN2201", + "title": "Backgrounds to Western Literature and Culture", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EN1101E or GEK1000", + "corequisite": "" + }, + { + "moduleCode": "EN2202", + "title": "Critical Reading", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "EN3274 Critical Reading", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(1) EN1101E or GEK1000, and (2) EN majors", + "corequisite": "" + }, + { + "moduleCode": "EN2203", + "title": "Introduction to Film Studies", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "EN2113", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EN2205", + "title": "Late Medieval Literature and Culture", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EN3225", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EN1101E or GEK1000", + "corequisite": "" + }, + { + "moduleCode": "EN2207", + "title": "Gender and Sexuality in Literature", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EN1101E or GEK1000", + "corequisite": "" + }, + { + "moduleCode": "EN2272", + "title": "Introduction to Writing Prose Fiction", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EL1101E or EN1101E or TS1101E or GEK1011 or GEK1000 or GEM1003. This\nmodule is selective, and enrolment is by application.", + "corequisite": "" + }, + { + "moduleCode": "EN2273", + "title": "Introduction to Creative Writing", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EL1101E or EN1101E or TS1101E or GEK1011 or GEK1000 or GEM1003. This\nmodule is selective, and enrolment is by application.", + "corequisite": "" + }, + { + "moduleCode": "EN2274", + "title": "Introduction to Screenwriting", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EL1101E or EN1101E or TS1101E or GEK1011 or GEK1000 or GEM1003. This\nmodule is selective, and enrolment is by application.", + "corequisite": "" + }, + { + "moduleCode": "EN2275", + "title": "Writing About Literature", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EN1101E or GEK1000. Open to EN majors only.", + "corequisite": "" + }, + { + "moduleCode": "EN2277", + "title": "Love's Word: Reading across Literature and Philosophy", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EN1101E", + "corequisite": "" + }, + { + "moduleCode": "EN3221", + "title": "The English Renaissance", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(i) EN1101E AND (ii) at least one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)", + "corequisite": "So long as students have fulfilled EN1101E, they may take this EN level-3000 module in the same semester as they are taking one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)" + }, + { + "moduleCode": "EN3222", + "title": "The Eighteenth Century", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(i) EN1101E AND (ii) at least one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)", + "corequisite": "So long as students have fulfilled EN1101E/GEK1000, they may take this EN level-3000 module in the same semester as they are taking one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)" + }, + { + "moduleCode": "EN3223", + "title": "Nineteenth Century Literature & Culture", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(i) EN1101E AND (ii) at least one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)", + "corequisite": "So long as students have fulfilled EN1101E, they may take this EN level-3000 module in the same semester as they are taking one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)" + }, + { + "moduleCode": "EN3224", + "title": "The Twentieth Century", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(i) EN1101E AND (ii) at least one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)", + "corequisite": "So long as students have fulfilled EN1101E, they may take this EN level-3000 module in the same semester as they are taking one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)" + }, + { + "moduleCode": "EN3226", + "title": "Shakespeare", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(i) EN1101E AND (ii) at least one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)", + "corequisite": "So long as students have fulfilled EN1101E, they may take this EN level-3000 module in the same semester as they are taking one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)" + }, + { + "moduleCode": "EN3227", + "title": "Romanticism", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(i) EN1101E AND (ii) at least one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)", + "corequisite": "So long as students have fulfilled EN1101E, they may take this EN level-3000 module in the same semester as they are taking one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)" + }, + { + "moduleCode": "EN3228", + "title": "Women Novelists: 1750-1800", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(i) EN1101E AND (ii) at least one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)", + "corequisite": "So long as students have fulfilled EN1101E, they may take this EN level-3000 module in the same semester as they are taking one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)" + }, + { + "moduleCode": "EN3229", + "title": "Shakespeare in His Time and Ours", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(i) EN1101E AND (ii) at least one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)", + "corequisite": "So long as students have fulfilled EN1101E, they may take this EN level-3000 module in the same semester as they are taking one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)" + }, + { + "moduleCode": "EN3231", + "title": "American Literature I", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "AS3231", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(i) EN1101E AND (ii) at least one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)", + "corequisite": "So long as students have fulfilled EN1101E, they may take this EN level-3000 module in the same semester as they are taking one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)" + }, + { + "moduleCode": "EN3232", + "title": "American Literature II", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "AS3232", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(i) EN1101E AND (ii) at least one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)", + "corequisite": "So long as students have fulfilled EN1101E, they may take this EN level-3000 module in the same semester as they are taking one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)" + }, + { + "moduleCode": "EN3234", + "title": "Asian American Literature", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "AS3234", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(i) EN1101E AND (ii) at least one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)", + "corequisite": "So long as students have fulfilled EN1101E, they may take this EN level-3000 module in the same semester as they are taking one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)" + }, + { + "moduleCode": "EN3241", + "title": "Literature and Psychoanalysis", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(i) EN1101E AND (ii) at least one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)", + "corequisite": "So long as students have fulfilled EN1101E, they may take this EN level-3000 module in the same semester as they are taking one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)" + }, + { + "moduleCode": "EN3242", + "title": "History of Film", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EN2203 or EN2204", + "corequisite": "" + }, + { + "moduleCode": "EN3243", + "title": "S/F: Science Fiction and Fantasy", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(i) EN1101E AND (ii) at least one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)", + "corequisite": "So long as students have fulfilled EN1101E, they may take this EN level-3000 module in the same semester as they are taking one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)" + }, + { + "moduleCode": "EN3244", + "title": "Gender and Literature", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(i) EN1101E AND (ii) at least one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)", + "corequisite": "So long as students have fulfilled EN1101E, they may take this EN level-3000 module in the same semester as they are taking one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)" + }, + { + "moduleCode": "EN3245", + "title": "Feminism: Text & Theory", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(i) EN1101E or (ii) a minimum of 12 MCs of EL modules, AND (iii) at least one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)", + "corequisite": "So long as students have fulfilled EN1101E, they may take this EN level-3000 module in the same semester as they are taking one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)" + }, + { + "moduleCode": "EN3246", + "title": "Literature and the other Arts", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEM3003", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(i) EN1101E AND (ii) at least one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)", + "corequisite": "So long as students have fulfilled EN1101E, they may take this EN level-3000 module in the same semester as they are taking one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)" + }, + { + "moduleCode": "EN3247", + "title": "Introduction to Critical Theory", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(i) EN1101E AND (ii) at least one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)", + "corequisite": "So long as students have fulfilled EN1101E, they may take this EN level-3000 module in the same semester as they are taking one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)" + }, + { + "moduleCode": "EN3248", + "title": "Reading the Horror Film", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "EN2204", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EN2203", + "corequisite": "" + }, + { + "moduleCode": "EN3249", + "title": "Introduction to Visual Culture: Art, Film and Media", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(i) EN1101E AND (ii) at least one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)", + "corequisite": "So long as students have fulfilled EN1101E, they may take this EN level-3000 module in the same semester as they are taking one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)" + }, + { + "moduleCode": "EN3251", + "title": "Literature and Philosophy", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(i) EN1101E AND (ii) at least one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)", + "corequisite": "So long as students have fulfilled EN1101E, they may take this EN level-3000 module in the same semester as they are taking one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)" + }, + { + "moduleCode": "EN3252", + "title": "The Genealogy of Affect Theory", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(i) EN1101E AND (ii) at least one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)", + "corequisite": "So long as students have fulfilled EN1101E, they may take this EN level-3000 module in the same semester as they are taking one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)" + }, + { + "moduleCode": "EN3261", + "title": "European Literature I", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EU3217", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(i) EN1101E AND (ii) at least one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)", + "corequisite": "So long as students have fulfilled EN1101E, they may take this EN level-3000 module in the same semester as they are taking one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)" + }, + { + "moduleCode": "EN3262", + "title": "Postcolonial/Postmodern Writing", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(i) EN1101E AND (ii) at least one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)", + "corequisite": "So long as students have fulfilled EN1101E, they may take this EN level-3000 module in the same semester as they are taking one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)" + }, + { + "moduleCode": "EN3263", + "title": "Singapore Literature in Context", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(i) EN1101E or GCE ‘A’ Level Literature or equivalent, AND (ii) at least one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)", + "corequisite": "So long as students have fulfilled EN1101E, they may take this EN level-3000 module in the same semester as they are taking one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)" + }, + { + "moduleCode": "EN3264", + "title": "In Other Wor(l)ds: Post ‐colonial Theory & Literature", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(i) EN1101E AND (ii) at least one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)", + "corequisite": "So long as students have fulfilled EN1101E, they may take this EN level-3000 module in the same semester as they are taking one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)" + }, + { + "moduleCode": "EN3266", + "title": "Christianity and Contemporary Literature/Culture", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(i) EN1101E AND (ii) at least one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)", + "corequisite": "So long as students have fulfilled EN1101E, they may take this EN level-3000 module in the same semester as they are taking one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)" + }, + { + "moduleCode": "EN3267", + "title": "Modern Drama", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "TS3241", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(i) EN1101E AND (ii) at least one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)", + "corequisite": "So long as students have fulfilled EN1101E, they may take this EN level-3000 module in the same semester as they are taking one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)" + }, + { + "moduleCode": "EN3268", + "title": "Tragedy", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(i) EN1101E AND (ii) at least one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)", + "corequisite": "So long as students have fulfilled EN1101E, they may take this EN level-3000 module in the same semester as they are taking one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)" + }, + { + "moduleCode": "EN3269", + "title": "Southeast Asian Literatures in English", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(i) EN1101E AND (ii) at least one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)", + "corequisite": "So long as students have fulfilled EN1101E, they may take this EN level-3000 module in the same semester as they are taking one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)" + }, + { + "moduleCode": "EN3271", + "title": "Advanced Playwriting", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "TS4212", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EN2271 or permission of instructor.", + "corequisite": "" + }, + { + "moduleCode": "EN3272", + "title": "Creative Writing", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(i) EN1101E AND (ii) at least one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)", + "corequisite": "So long as students have fulfilled EN1101E, they may take this EN level-3000 module in the same semester as they are taking one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)" + }, + { + "moduleCode": "EN3276", + "title": "Literature, Media and Theory", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "EN2276", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(i) EN1101E AND (ii) at least one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2277)", + "corequisite": "So long as students have fulfilled EN1101E, they may take this EN level-3000 module in the same semester as they are taking one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2277)" + }, + { + "moduleCode": "EN3551", + "title": "FASS Undergraduate Research Opportunity (UROP)", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "Students must:\nhave declared a Major, completed a minimum of 24 MCs in that Major, and have a CAP of at least 3.20.", + "corequisite": "" + }, + { + "moduleCode": "EN3880", + "title": "Topics in English Literature", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Variable; depending on the topic to be covered.", + "corequisite": "So long as students have fulfilled EN1101E/GEK1000, they may take this EN level-3000 module in the same semester as they are taking EN2201 or EN2202 or EN2203 or EN2204." + }, + { + "moduleCode": "EN3880A", + "title": "History of Non-Western Film", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EN2203 or EN2204.", + "corequisite": "" + }, + { + "moduleCode": "EN3880B", + "title": "Reader-Responsibility", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(i) EN1101E AND (ii) at least one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)", + "corequisite": "So long as students have fulfilled EN1101E, they may take this EN level-3000 module in the same semester as they are taking one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)" + }, + { + "moduleCode": "EN4221", + "title": "Topics in the Seventeenth Century", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs including 28 MCs in EN, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EN4222", + "title": "Topics in the Eighteenth Century", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs including 28 MCs in EN, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EN4223", + "title": "Topics in the Nineteenth Century", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs including 28 MCs in EN, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EN4224", + "title": "Topics in the Twentieth Century", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012-2014:\nCompleted 80 MCs including 28 MCs in EN or 28 MCs of EU/LA [French/German]/recognised modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2015 onwards:\nCompleted 80 MCs including 28 MCs in EN or 28 MCs of EU/LA [French/German/Spanish]/ recognised modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EN4226", + "title": "English Women Novelists 1800‐1900", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs including 28 MCs in EN, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EN4227", + "title": "Five Years in the Eighteenth Century", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs including 28 MCs in EN, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EN4232", + "title": "Topics in American Literature", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "AS4232", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs including 28 MCs in EN, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EN4233", + "title": "Topics in American Culture", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "AS4233", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs including 28 MCs in EN, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EN4234", + "title": "Pynchon and the Poetics of Information", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs including 28 MCs in EN or 28 MCs in EU/LA (French/ German/ Spanish)/ recognised modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EN4241", + "title": "Utopias and Dystopias", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs including 28 MCs in EN, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EN4242", + "title": "Modern Critical Theory", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs including 28 MCs in EN or 28 MCs in EU/LA (French/ German/ Spanish)/recognised modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EN4244", + "title": "Topics in Cultural Studies", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs including 28 MCs in EN, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EN4245", + "title": "Narrative, Narration, Auteur", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs including 28 MCs in EN, or 28 MCs in TS, and EN2203, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EN4247", + "title": "Film Theory", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs including 28 MCs in EN, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EN4248", + "title": "Disclosure, Discovery and Detec/xtive Fiction", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs including 28 MCs in EN, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EN4249", + "title": "Autotheory and Contemporary Autofiction", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs including 28 MCs in EN, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EN4251", + "title": "Jonathan Swift", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs including 28 MCs in EN or 28 MCs in EU/LA (French/ German/ Spanish)/recognised modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EN4261", + "title": "Metafictions and the Novel", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs including 28 MCs in EN, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EN4262", + "title": "Writing Global India: (Dis)Possessions of Capitalism", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs including 28 MCs in EN, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EN4263", + "title": "Topics in European Literature", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EU4220", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs including 28 MCs in EN, with a minimum CAP of 3.20 or be on the Honours track", + "corequisite": "" + }, + { + "moduleCode": "EN4264", + "title": "Modern Poetry", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs including 28 MCs in EN or 28 MCs in EU/LA (French/ German/ Spanish)/recognised modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EN4265", + "title": "Approaches to World Literature: Critical Realism", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs including 28 MCs in EN or 28 MCs in EU/LA (French/ German/Spanish)/recognised modules or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs including 28 MCs in EN or 28 MCs in EU/LA (French/ German/Spanish)/recognised modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EN4266", + "title": "South Asian Literatures in English", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "EN3265", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs including 28 MCs in EN or 28 MCs in SN or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs including 28 MCs in EN or 28 MCs in SN, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EN4267", + "title": "Literature and Ecology", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs including 28 MCs in EN, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EN4271", + "title": "Research Workshop", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "EL4200", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For EN and TS students - Completed 80 MCs including 28 MCs in EN or 28 MCs in TS, with a minimum CAP of 3.20 or be on the Honours track.\n\nFor EU students - Completed 80 MCs including 28 MCs in EL, EN or TS modules, or a combination from the three (Literary and/or linguistic modules from other departments may also contribute towards the 28 MCs total at the module chair's discretion), with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EN4401", + "title": "Honours Thesis", + "moduleCredit": 15, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "EN4660", + "attributes": [ + false, + false, + false, + false, + true, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012 and before:\nCompleted 110 MCs, including 60 MCs of EN major requirements with a minimum CAP of 3.50.\n\nCohort 2013-2015:\nCompleted 110 MCs including 60 MCs of EN major requirements with a minimum SJAP of 4.00 and CAP of 3.50, or with recommendation by the programme committee. Students may seek a waiver of the SJAP pre-requisite from the department if they have a minimum CAP of 4.25 after completing 110 MCs.\n\nCohort 2016 onwards:\nCompleted 110 MCs including 44 MCs of EN major requirements with a minimum SJAP of 4.00 and CAP of 3.50, or with recommendation by the programme committee. Students may seek a waiver of the SJAP pre-requisite from the department if they have a minimum CAP of 4.25 after completing 110 MCs.", + "corequisite": "" + }, + { + "moduleCode": "EN4660", + "title": "Independent Study", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "EN4401", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012-2015:\nCompleted 100 MCs, including 60 MCs in EN, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nCompleted 100 MCs, including 44 MCs in EN, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "EN4880", + "title": "Topics in English Literature", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs including 28 MCs in EN, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EN4880A", + "title": "Usurpation and Authority, 1558-1674", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs including 28 MCs in EN, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EN4880C", + "title": "The Short Story as a Global Form", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs including 28 MCs in EN, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EN5232", + "title": "Ideological Approaches to Literature", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate Student in the University or with the approval of the Department", + "corequisite": "" + }, + { + "moduleCode": "EN5232R", + "title": "Ideological Approaches to Literature", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate Student in the University or with the approval of the Department", + "corequisite": "" + }, + { + "moduleCode": "EN5235", + "title": "Politics and Literature", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student in the university or with the approval of the Department.", + "corequisite": "" + }, + { + "moduleCode": "EN5235R", + "title": "Politics and Literature", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student in the university or with the approval of the Department.", + "corequisite": "" + }, + { + "moduleCode": "EN5236", + "title": "The Literature of the Asian Diaspora", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate Student in the University or with the approval of the Department", + "corequisite": "" + }, + { + "moduleCode": "EN5236R", + "title": "The Literature of the Asian Diaspora", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate Student in the University or with the approval of the Department", + "corequisite": "" + }, + { + "moduleCode": "EN5238", + "title": "Twentieth Century Literature", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student in the university or with the approval of the Department.", + "corequisite": "" + }, + { + "moduleCode": "EN5238R", + "title": "Twentieth Century Literature", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student in the university or with the approval of the Department.", + "corequisite": "" + }, + { + "moduleCode": "EN5241", + "title": "Literature and New Worlds: 1590-1750", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student in the university or with the approval of the Department", + "corequisite": "" + }, + { + "moduleCode": "EN5241R", + "title": "Literature and New Worlds: 1590-1750", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student in the university or with the approval of the Department", + "corequisite": "" + }, + { + "moduleCode": "EN5242", + "title": "Women Novelists", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student in the university or with the approval of the Department.", + "corequisite": "" + }, + { + "moduleCode": "EN5242R", + "title": "Women Novelists", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student in the university or with the approval of the Department.", + "corequisite": "" + }, + { + "moduleCode": "EN5243", + "title": "The Birth of the Critic", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student in the university or with the approval of the Department.", + "corequisite": "" + }, + { + "moduleCode": "EN5243R", + "title": "The Birth of the Critic", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student in the university or with the approval of the Department.", + "corequisite": "" + }, + { + "moduleCode": "EN5244", + "title": "Shakespeare and Literary Theory", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate Student in the University or with the approval of the Department", + "corequisite": "" + }, + { + "moduleCode": "EN5244R", + "title": "Shakespeare and Literary Theory", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate Student in the University or with the approval of the Department", + "corequisite": "" + }, + { + "moduleCode": "EN5245", + "title": "Gothic Properties", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student in the university or with the approval of the Department", + "corequisite": "" + }, + { + "moduleCode": "EN5245R", + "title": "Gothic Properties", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student in the university or with the approval of the Department.", + "corequisite": "" + }, + { + "moduleCode": "EN5247", + "title": "Victorian Literature: History, Politics, Culture", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EN5247R", + "title": "Victorian Literature: History, Politics, Culture", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EN5248", + "title": "Literary Rejects", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student in the university or with the approval of the Department.", + "corequisite": "" + }, + { + "moduleCode": "EN5248R", + "title": "Literary Rejects", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student in the university or with the approval of the Department.", + "corequisite": "" + }, + { + "moduleCode": "EN5252", + "title": "Movies, Spectatorship and Subjectivity", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate Student in the University or with the approval of the Department", + "corequisite": "" + }, + { + "moduleCode": "EN5252R", + "title": "Movies, Spectatorship and Subjectivity", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate Student in the University or with the approval of the Department", + "corequisite": "" + }, + { + "moduleCode": "EN5253", + "title": "Writing in the Aftermath", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate Student in the University or with the approval of the Department", + "corequisite": "" + }, + { + "moduleCode": "EN5253R", + "title": "Writing in the Aftermath", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student in the university or with the approval of the Department.", + "corequisite": "" + }, + { + "moduleCode": "EN5254", + "title": "Rethinking Failure in the 21st Century", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student in the university or with the approval of the Department.", + "corequisite": "" + }, + { + "moduleCode": "EN5254R", + "title": "Rethinking Failure in the 21st Century", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student in the university or with the approval of the Department.", + "corequisite": "" + }, + { + "moduleCode": "EN5660", + "title": "Independent Study", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student in the university or with the approval of the Department.", + "corequisite": "" + }, + { + "moduleCode": "EN5880", + "title": "Topics in Literary Studies", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student in the university or with the approval of the Department", + "corequisite": "" + }, + { + "moduleCode": "EN5880A", + "title": "Literature and the Environment", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate Student in the University or with the approval of the Department", + "corequisite": "" + }, + { + "moduleCode": "EN5880AR", + "title": "Literature and the Environment", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student with the university or with the approval of the department.", + "corequisite": "" + }, + { + "moduleCode": "EN5882", + "title": "Topics in Cultural Studies", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student in the university or with the approval of the Department.", + "corequisite": "" + }, + { + "moduleCode": "EN5882R", + "title": "Topics in Cultural Studies", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EN5222, EN6222", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student in the university or with the approval of the Department.", + "corequisite": "" + }, + { + "moduleCode": "EN5883", + "title": "Screen Culture in Southeast Asia", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate Student in the University or with the approval of the Department", + "corequisite": "" + }, + { + "moduleCode": "EN5883R", + "title": "Screen Culture in Southeast Asia", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate Student in the University or with the approval of the Department", + "corequisite": "" + }, + { + "moduleCode": "EN6102", + "title": "Advanced Critical Reading", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Admission to the PhD programme or doctoral competence in the discipline to be determined by the Department upon recommendation by the instructor.", + "corequisite": "" + }, + { + "moduleCode": "EN6660", + "title": "Independent Study", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Admission to the PhD programme or doctoral competence in the discipline to be determined by the Department upon recommendation by the instructor.", + "corequisite": "" + }, + { + "moduleCode": "EN6770", + "title": "Graduate Research Seminar", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Admission to the PhD programme or doctoral competence in the discipline to be determined by the Department upon recommendation by the instructor", + "corequisite": "" + }, + { + "moduleCode": "EN6880", + "title": "Topics in the New Literatures", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Admission to the PhD programme or doctoral competence in the discipline to be determined by the Department upon recommendation by the instructor", + "corequisite": "" + }, + { + "moduleCode": "EN6881", + "title": "Topics in Literary History", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Admission to the PhD programme or doctoral competence in the discipline to be determined by the Department upon recommendation by the instructor", + "corequisite": "" + }, + { + "moduleCode": "EN6882", + "title": "Advanced Topics in Cultural Studies", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Admission to the PhD programme or doctoral competence in the discipline to be determined by the Department upon recommendation by the instructor", + "corequisite": "" + }, + { + "moduleCode": "ENV1101", + "title": "Environmental Studies: An Interdisciplinary Overview", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "GEM1903, YID1201", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For students in the Environmental Studies Programme.", + "corequisite": "" + }, + { + "moduleCode": "ENV1202", + "title": "Communications for Environmental Studies", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "SP1202", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students who are required to complete ES1000 Foundation Academic English and/or ES1103 English for Academic Purposes must first do so before they are allowed to read this module.", + "corequisite": "" + }, + { + "moduleCode": "ENV2101", + "title": "Global Environmental Change", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "LSM3272", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ENV1101", + "corequisite": "" + }, + { + "moduleCode": "ENV2102", + "title": "Environmental Law", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For students in the Environmental Studies Programme.", + "corequisite": "" + }, + { + "moduleCode": "ENV2103", + "title": "The Environment and Public Health", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For students in the Environmental Studies Programme.", + "corequisite": "" + }, + { + "moduleCode": "ENV2201", + "title": "Wildlife Protection in Southeast Asia", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For Environmental Studies students only.", + "corequisite": "" + }, + { + "moduleCode": "ENV2202", + "title": "Sustainability of Sabah's Coastal Environment", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For Environmental Studies students only.", + "corequisite": "" + }, + { + "moduleCode": "ENV2288", + "title": "Basic UROP in Environmental Studies I", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "Students must have completed at least 24MCs worth of major requirement modules at the point of application and attained a CAP of 3.20 or higher", + "corequisite": "" + }, + { + "moduleCode": "ENV2289", + "title": "Basic UROP in Environmental Studies II", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "Students must have completed at least 24MCs worth of major requirement modules at the point of application and attained a CAP of 3.20 or higher", + "corequisite": "" + }, + { + "moduleCode": "ENV3101", + "title": "Environmental Challenges: Asian Case Studies I", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ENV2101", + "corequisite": "" + }, + { + "moduleCode": "ENV3102", + "title": "Environmental Challenges: Asian Case Studies II", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2, + 3 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ENV2101 Global Environmental Change", + "corequisite": "" + }, + { + "moduleCode": "ENV3103", + "title": "Environmental Economics", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For Environmental Studies students who have passed EC1101E or EC1301", + "corequisite": "" + }, + { + "moduleCode": "ENV3202", + "title": "Environmental Studies Internship Programme", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 3, + 4 + ], + "preclusion": "ENV3202A", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For BES students from cohort AY2017/2018 and before only. Students must have completed at least 2 regular semesters of studies at the point of application.", + "corequisite": "" + }, + { + "moduleCode": "ENV3202A", + "title": "Environmental Studies Internship Programme", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "ENV3202", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For BES students from cohort AY2018/2019 and after only. Students must have completed at least 2 regular semesters of studies at the point of application.", + "corequisite": "N.A." + }, + { + "moduleCode": "ENV3288", + "title": "Advanced UROP in Environmental Studies I", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "Students must have completed at least 24MCs worth of major requirement modules at the point of application and attained a CAP of 3.20 or higher", + "corequisite": "" + }, + { + "moduleCode": "ENV3289", + "title": "Advanced UROP in Environmental Studies II", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "Students must have completed at least 24MCs worth of major requirement modules at the point of application and attained a CAP of 3.20 or higher", + "corequisite": "" + }, + { + "moduleCode": "ENV4101", + "title": "Environmental Management in Singapore", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ENV3101 and ENV3102", + "corequisite": "" + }, + { + "moduleCode": "ES1000", + "title": "Foundation Academic English", + "moduleCredit": 0, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Placement through the Qualifying English Test.", + "corequisite": "" + }, + { + "moduleCode": "ES1103", + "title": "English for Academic Purposes", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 1, + 2, + 3 + ], + "preclusion": "ES1102", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "1. Placement through the Qualifying English Test or a pass in ES1000. \n\n2. Only students who matriculated in AY2016/17 and onwards can take ES1103", + "corequisite": "" + }, + { + "moduleCode": "ES1502", + "title": "Essentials of Clear Writing", + "moduleCredit": 0, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ES1531", + "title": "Critical Thinking And Writing", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "1. IEM1201%, UTW1001%, ES1531, GEK1549 and GET1021. \n2. U-town students cannot select ES2531.\n3. FAS1101\n4. ES1601 and ES1601A Professional and Academic Communication.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "1. Students who are required to take ES1000 Foundation Academic English and/or ES1103 English for Academic Purposes must pass the modules before they are allowed to read this module. \n2. Students who matriculated in AY2014/15 and AY2015/16 are to read the cross-listed modules, GEK1549 and GET1021, respectively.", + "corequisite": "" + }, + { + "moduleCode": "ES1541", + "title": "Exploring Science Communication through Popular Science", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "Those who have taken SP1203, ENV1202, SP2171, SP1541, UTown and USP writing modules, ES1601 are precluded from taking ES1541.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This module is meant for students from Cohort 2013 and 2014. If students are required to take ES1000 (Foundation Academic English) and ES1102 (English for Academic Purposes), they must complete them before taking ES1541.", + "corequisite": "" + }, + { + "moduleCode": "ES1601", + "title": "Professional and Academic Communication", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "CS2101, IS2101, ES2331, ES2002, ES2007D, SP1541, RVRC students will not be able to register for FAS1102/ES1531/ES2531/GET1021, FAS1103 Effective Workplace Communication", + "attributes": [ + true, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "ES1000 and/or ES1102/ES1103", + "corequisite": "GEQ1917" + }, + { + "moduleCode": "ES1601A", + "title": "Professional and Academic Communication", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [], + "preclusion": "CS2101 Effective Communication for Computing Professional, IS2101 Business and Technical Communication, ES2331 Communicating Engineering, ES2002 Business Communication, ES2007D Professional Communication, ES1541/SP1541 Exploring Science Communication through Popular Science, ES1501%.", + "attributes": [ + true, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "ES1000 and/or ES1102/ES1103", + "corequisite": "GEQ1917" + }, + { + "moduleCode": "ES2002", + "title": "Business Communication for Leaders (BBA)", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "MNO2706 Business Communication for Leaders (ACC), IS2101 Business and Technical Communication, ES2007D Professional Communication, ES1601 Professional and Academic Communication, UWC2101% Writing and Critical Thinking", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students who are required to read ES1000 must pass it before taking ES2002.", + "corequisite": "" + }, + { + "moduleCode": "ES2007D", + "title": "Professional Communication", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 1 + ], + "preclusion": "CS2301, ES2002, IS2101, CS2101, CG1413, ES1601.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students required to take ES1000 and ES1102/ES1103 must clear those courses first before taking ES2007D.", + "corequisite": "" + }, + { + "moduleCode": "ES2331", + "title": "Communicating Engineering", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [], + "preclusion": "ES1501%, ES1601, UTown students from cohort AY2014/15 and before should not be allowed to bid for the module.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "If students are required to take ES1000 (Foundation Academic English) and/or ES1103 (English for Academic Purposes), they must complete and pass these modules before taking ES2331.", + "corequisite": "" + }, + { + "moduleCode": "ES2531", + "title": "Critical Thinking And Writing", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "1. IEM1201%, UTW1001%, ES1531, GEK1549 and GET1021. \n2. U-town students cannot select ES2531.\n3. ES1601 and ES1601A Professional and Academic Communication.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "1. Students who are required to take ES1000 Foundation Academic English and/or ES1103 English for Academic Purposes must pass the modules before they are allowed to read this module. \n2. Students who matriculated in AY2014/15 and AY2015/16 are to read the cross-listed modules, GEK1549 and GET1021, respectively.", + "corequisite": "" + }, + { + "moduleCode": "ES2660", + "title": "Communicating in the Information Age", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "GET1006 and GEK1901", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "1. Students who are required to take ES1000 Foundation Academic English and/or ES1103 English for Academic Purposes, must pass those modules before they are allowed to read this module.\n2. Only SoC students matriculated in AY2016/2017 and after, are allowed to take ES2660.", + "corequisite": "" + }, + { + "moduleCode": "ES5000", + "title": "Graduate English Course (Basic Level)", + "moduleCredit": 0, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ES5001", + "title": "English For Graduates (Intermediate)", + "moduleCredit": 0, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ES5001A", + "title": "Graduate English Course (Intermediate Level)", + "moduleCredit": 0, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ES5002", + "title": "Graduate English Course (Advanced Level)", + "moduleCredit": 0, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "•\tTo be admitted to this module, students must have taken the Diagnostic English Test and received a ‘Band 3’, or passed ES5000, Basic Level Writing, and/or ES5001A, Intermediate Level Writing if required to do so. \n•\tPhD candidates generally take ES5002 in the fourth year of their candidature when they are writing their thesis.", + "corequisite": "" + }, + { + "moduleCode": "ES5002A", + "title": "English For Graduates (Advanced) - Thesis Writing", + "moduleCredit": 0, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ES5002B", + "title": "English For Graduates (Advanced) - Oral Presentation Skills", + "moduleCredit": 0, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ES5101", + "title": "Technical Communication for Engineers", + "moduleCredit": 0, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ES5610", + "title": "Academic Communication for Business", + "moduleCredit": 0, + "department": "Center for Engl Lang Comms", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "ES5002", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ESE1001", + "title": "Environmental Engineering Fundamentals", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "ESE1001FC/ESE1001X", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "H2 Mathematics and H2 Chemistry, or \nMA1312 Calculus with Applications, for BES undergraduate without H2 Mathematic", + "corequisite": "" + }, + { + "moduleCode": "ESE1102", + "title": "Principles & Practice in Infrastructure and Environment", + "moduleCredit": 6, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ESE2000", + "title": "Environmental Engineering Fundamentals", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "ESE1001, ESE1001FC, ESE1001X", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "H2 Mathematics and H2 Chemistry, or \nMA1312 Calculus with Applications, for BES undergraduate without H2 Mathematic", + "corequisite": "" + }, + { + "moduleCode": "ESE2001", + "title": "Environmental Challenges in the Anthropocene", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ESE2102", + "corequisite": "" + }, + { + "moduleCode": "ESE2102", + "title": "Principles & Practice in Infrastructure and Environment", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "ESE1102", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ESE2401", + "title": "Water Science & Technology", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "TCE3001", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ESE2001", + "corequisite": "" + }, + { + "moduleCode": "ESE3001", + "title": "Water Quality Engineering", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "ESE2401 & ESE3401 & TCE3001", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ESE3011", + "title": "Integrated Project for Environmental Sustainability", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ESE3101", + "title": "Solid And Hazardous Waste Management", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ESE2 standing or equivalent", + "corequisite": "" + }, + { + "moduleCode": "ESE3201", + "title": "Air Quality Management", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ESE2 standing or equivalent", + "corequisite": "" + }, + { + "moduleCode": "ESE3301", + "title": "Environmental Microbiological Principles", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ESE2 standing or equivalent", + "corequisite": "" + }, + { + "moduleCode": "ESE3401", + "title": "Sustainable Urban Water Technologies", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "TCE3001", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ESE2401 & CE2134", + "corequisite": "" + }, + { + "moduleCode": "ESE4301", + "title": "Wastewater Biotechnology", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ESE3301", + "corequisite": "" + }, + { + "moduleCode": "ESE4401", + "title": "Water & Wastewater Engineering 2", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "TCE4401", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ESE2401 and ESE3401", + "corequisite": "" + }, + { + "moduleCode": "ESE4403", + "title": "Membrane Tech In Env Applns", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ESE4 standing or higher", + "corequisite": "" + }, + { + "moduleCode": "ESE4404", + "title": "Bioenergy", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Year 3 standing or equivalent with background in fluid mechanics", + "corequisite": "" + }, + { + "moduleCode": "ESE4405", + "title": "Urban Water Engineering & Management", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ESE3401 or ESE3001", + "corequisite": "" + }, + { + "moduleCode": "ESE4406", + "title": "Energy and the Environment", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "CN4248", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ESE3101 and ESE 3201", + "corequisite": "" + }, + { + "moduleCode": "ESE4407", + "title": "Environmental Forensics", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ESE3101, ESE3201 and ESE3401", + "corequisite": "" + }, + { + "moduleCode": "ESE4408", + "title": "Environmental Impact Assessment", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "TCE4408", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ESE3101, ESE3201, ESE3301 and ESE3401", + "corequisite": "" + }, + { + "moduleCode": "ESE4409", + "title": "Environmental Applications of Adsorption", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "CN3132", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ESE 3201 and ESE3401", + "corequisite": "" + }, + { + "moduleCode": "ESE4501", + "title": "Design Project", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ESE4 standing", + "corequisite": "" + }, + { + "moduleCode": "ESE4502", + "title": "B.Eng. Dissertation", + "moduleCredit": 12, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "ESE4 standing", + "corequisite": "" + }, + { + "moduleCode": "ESE4502R", + "title": "B. Eng. Dissertation", + "moduleCredit": 8, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "EVE4-standing", + "corequisite": "" + }, + { + "moduleCode": "ESE4612", + "title": "Exchange Unrestricted Elective 4", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ESE5001", + "title": "Environmental Engineering Principles", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ESE5002", + "title": "Physical and Process Principles", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Graduate students standing", + "corequisite": "" + }, + { + "moduleCode": "ESE5003", + "title": "Environmental Chemical Principles", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "Graduate students standing", + "corequisite": "" + }, + { + "moduleCode": "ESE5004", + "title": "Research Project", + "moduleCredit": 8, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ESE5102", + "title": "Sludge and Solid Waste Management", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ESE5202", + "title": "Air Pollution Control Technology", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ESE5202A", + "title": "Technologies for Air Quality Control", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ESE5202B", + "title": "Air Quality Engineering", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2, + 3 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ESE5203", + "title": "Aerosol Science and Technology", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE2134 Hydraulics or equivalent courses involving introductory level of\nfluid mechanics.", + "corequisite": "" + }, + { + "moduleCode": "ESE5204", + "title": "Toxic and Hazardous Waste Management", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "ESE4 standing or higher", + "corequisite": "" + }, + { + "moduleCode": "ESE5204A", + "title": "Bioremediation of Hazardous Chemicals in Soil & Water", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ESE5204B", + "title": "Physico-Chemical Treatment for Hazardous Chemicals", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ESE5205", + "title": "Sludge and Solid Waste Management", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ESE5301", + "title": "Environmental Biological Principles", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Environmental Microbiological Principles or equivalent", + "corequisite": "" + }, + { + "moduleCode": "ESE5401", + "title": "Water Quality Management", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Water Science & Technology or ESE4 standing or higher", + "corequisite": "" + }, + { + "moduleCode": "ESE5402", + "title": "Industrial Wastewater Control", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ESE5402A", + "title": "Physico-Chemical Treatment for Industrial Wastewater", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ESE5402B", + "title": "Biotechnologies for Industrial Wastewater Control", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 3 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ESE5403A", + "title": "Technologies for Water Reclamation and Reuse", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ESE5403B", + "title": "Applications in Water Reclamation and Reuse", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ESE5404", + "title": "Biological Treatment Processes", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "ESE4 standing or higher", + "corequisite": "" + }, + { + "moduleCode": "ESE5405", + "title": "Water Treatment Processes", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "ESE4 standing or higher", + "corequisite": "" + }, + { + "moduleCode": "ESE5406", + "title": "Membrane Treatment Process Modelling", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "ESE4 standing or higher", + "corequisite": "" + }, + { + "moduleCode": "ESE5407", + "title": "Membrane Technology for Water Management", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "ESE4403 Membrane Technology in Environmental Application\nOr\nESE5406 Membrane Treatment Processes and Modeling\nOr \nLevel 5 standing", + "corequisite": "" + }, + { + "moduleCode": "ESE5601", + "title": "Environmental Risk Assessment", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "ESE4 standing or higher", + "corequisite": "" + }, + { + "moduleCode": "ESE5602", + "title": "Environmental Management Systems", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "ESE4 standing or higher", + "corequisite": "" + }, + { + "moduleCode": "ESE5607", + "title": "Green Catalysis", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ESE5608", + "title": "Heavy Metals in the Environment", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "ESE5003 Environmental Chemical Principles", + "corequisite": "" + }, + { + "moduleCode": "ESE5666", + "title": "Industrial Attachment", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ESE5701", + "title": "Meta-data for environmental ecosystems", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CE3132", + "corequisite": "CE5310" + }, + { + "moduleCode": "ESE5880A", + "title": "Topics in Environmental Engineering: Chem. & Lab Safety", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ESE5901", + "title": "Environmental Technology", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ESE5901A", + "title": "Introduction to Environmental Engineering", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ESE5901B", + "title": "Technologies in Environmental Engineering", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ESE5999", + "title": "Graduate Seminars", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ESE6001", + "title": "Environmental Fate of Organic Contaminant", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Graduate student standing", + "corequisite": "" + }, + { + "moduleCode": "ESE6301", + "title": "Topics in Environmental Biotechnology", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ESE6999", + "title": "Doctoral Seminars", + "moduleCredit": 8, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ESP1104B", + "title": "Sensor System Electronics", + "moduleCredit": 4, + "department": "Engineering Science Programme", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "ESP1104A", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "A-level Mathematics and Physics", + "corequisite": "" + }, + { + "moduleCode": "ESP1111", + "title": "Engineering Principles In-Action", + "moduleCredit": 4, + "department": "Engineering Science Programme", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ESP2106", + "title": "Principles of Continua", + "moduleCredit": 4, + "department": "Engineering Science Programme", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC1433", + "corequisite": "" + }, + { + "moduleCode": "ESP2107", + "title": "Numerical Methods and Statistics", + "moduleCredit": 4, + "department": "Engineering Science Programme", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(MA1507 and MA1508/MA1508E) or equivalent", + "corequisite": "" + }, + { + "moduleCode": "ESP2110", + "title": "Design Project 2", + "moduleCredit": 4, + "department": "Engineering Science Programme", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ESP1104 & ESP1107", + "corequisite": "" + }, + { + "moduleCode": "ESP3102", + "title": "From Making Nano to Probing Nano", + "moduleCredit": 4, + "department": "Engineering Science Programme", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC2130B, PC2133", + "corequisite": "" + }, + { + "moduleCode": "ESP3201", + "title": "Machine Learning in Robotics and Engineering", + "moduleCredit": 4, + "department": "Engineering Science Programme", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1508A Linear Algebra and Application\nCS1010E Programming Methodology\nESP2110 Design Project or ME2142 Feedback Control Systems", + "corequisite": "" + }, + { + "moduleCode": "ESP3902", + "title": "Major Design Project I", + "moduleCredit": 4, + "department": "Engineering Science Programme", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "ESP3901 Major Design Project", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Level 3 Standing", + "corequisite": "" + }, + { + "moduleCode": "ESP3903", + "title": "Major Design Project 2", + "moduleCredit": 4, + "department": "Engineering Science Programme", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "ESP3901 Major Design Project", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Level 3 standing", + "corequisite": "" + }, + { + "moduleCode": "ESP4401", + "title": "Optimization of Energy Systems", + "moduleCredit": 4, + "department": "Engineering Science Programme", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Any module on heat and mass transfer such as Heat Transfer (ME3122) OR Thermodynamics and Statistical M echanics (PC2230) OR Energy Conversion Processes (ME3221) OR Industrial Heat Transfer (ME4225)", + "corequisite": "" + }, + { + "moduleCode": "ESP4901", + "title": "Research Project", + "moduleCredit": 8, + "department": "Engineering Science Programme", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "Level 4 standing", + "corequisite": "" + }, + { + "moduleCode": "ESP4901A", + "title": "Research Project", + "moduleCredit": 12, + "department": "Engineering Science Programme", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "ESP4901", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "Level 4 standing", + "corequisite": "" + }, + { + "moduleCode": "ESP5402", + "title": "Transport Phenomena in Energy Systems", + "moduleCredit": 4, + "department": "Engineering Science Programme", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ESP5403", + "title": "Nanomaterials for Energy Systems", + "moduleCredit": 4, + "department": "Engineering Science Programme", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EU1101E", + "title": "Making of Modern Europe", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EU2203", + "title": "Ancient Western Political Thought", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PS2203", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EU2204", + "title": "Modern Western Political Thought", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "PS2204, PS2231, EU2218, PS2201B, PS2218", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EU2213", + "title": "Upheaval in Europe: 1848-1918", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "HY2231", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EU2214", + "title": "Introduction to Continental Philosophy", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PH2212, GEK2030", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EU2217", + "title": "European Politics", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PS2236", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EU2218", + "title": "Western Political Thought", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PS2231, PS2201B, PS2218", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EU2221", + "title": "Empires, Colonies and Imperialism", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "HY2245", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EU2222", + "title": "Critical Theory and Hermeneutics", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PH2219", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EU2224", + "title": "Europe since 1945 in Film", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EU3212", + "title": "Europe of the Dictators", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "HY3227", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EU3215", + "title": "European Economic History", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC3391/EC3213, EC3393/EC3215, EC3219, EC3392", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EU3217", + "title": "European Literature I", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EN3261", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(i) EN1101E AND (ii) at least one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207, EN2275, EN2276, EN2277)", + "corequisite": "So long as students have fulfilled EN1101E/GEK1000, they may take this EN level-3000 module in the same semester as they are taking one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207)." + }, + { + "moduleCode": "EU3224", + "title": "Social Thought & Social Theory", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "SC3101", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EU3227", + "title": "Continental European Philosophy", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PH3207", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EU3230", + "title": "Cold War in Europe, 1945-1991", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "HY3209", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EU3231", + "title": "Modern Imperialism", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "HY3242", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EU3550", + "title": "Internship", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Any other XX3550 internship modules (Note: Students who change major may not do a second internship in their new major)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students should: have completed a minimum of 24 MC in European Studies; and have declared European Studies as their Major.", + "corequisite": "" + }, + { + "moduleCode": "EU4214", + "title": "Special Paper in Modern European History", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "HY4212", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28 MCs in EU/ LA [French/German/ Spanish]/recognized modules or 28 MCs in SC, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EU4215", + "title": "Imperial Legacies in Europe", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "HY4221", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80MCs, including 28 MCs in EU/ LA [French/German/ Spanish]/ or 28 MCs in GL/GL recognised modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80MCs, including 28 MCs in EU/ LA [French/German/ Spanish]/recognised modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EU4217", + "title": "Comparative Business Cultures", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC4392, EC4218", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in EU/LA\n[French/German/Spanis h]/ recognised modules, including EU3214/EC3376/EC3218 or EU3215/EC3392/EC3219, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EU4220", + "title": "Topics in European Literature", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EN4263", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28 MCs in EU/ LA [French/German/Spanish]/recognised modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EU4223", + "title": "Recent Continental European Philosophy", + "moduleCredit": 5, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28 MCs in EU / LA [French/German/Spanis h]/recognised modules or 28 MCs in GL/GL recognised non- language modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EU4224", + "title": "Early Modern Europe and its World", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "HY4205", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80MCs, including 28 MCs in EU/ LA [French/German/ Spanish]/recognised modules or 28MCs in GL/GL recognised non- language modules or 28MCs in SC, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80MCs, including 28 MCs in EU/ LA [French/German/ Spanish]/recognised modules or 28MCs in SC, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EU4225", + "title": "European Intellectual History", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "HY4226", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80MCs, including 28 MCs in EU/LA [French/German/ Spanish]/ or 28 MCs in GL/GL recognised modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80MCs, including 28 MCs in EU/ LA [French/German/ Spanish]/recognised modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EU4226", + "title": "Imperialism and Empires", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "HY4209", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80MCs including 28MCs in EU / LA [French/German/Spanish]/recognised modules or 28MCs in PS or 28MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80MCs including 28MCs in EU / LA [French/German/Spanish]/recognised modules or 28MCs in PS with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EU4227A", + "title": "Major Political Thinkers: Plato & Rousseau", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PS4217A", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28 MCs in EU/ LA [French/German/Spanis h]/ recognised modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EU4227C", + "title": "Major Political Thinkers: Montaigne", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PS4217C", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28 MCs in EU/ LA [French/German/Spanis h]/ recognised with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "EU4228", + "title": "European Foreign Policy", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PS4218", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012-2014:\nCompleted 80MCs, including 28 MCs in EU/ LA French/German]/ recognised modules or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track\n.\nCohort 2015-2019:\nCompleted 80MCs, including 28 MCs in EU/ LA [French/German/ Spanish]/ recognised modules or 28 MCs in GL/GL recognised non language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80MCs, including 28 MCs in EU/ LA [French/German/ Spanish]/ recognised mod", + "corequisite": "" + }, + { + "moduleCode": "EU4401", + "title": "Honours Thesis", + "moduleCredit": 15, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "EU4660", + "attributes": [ + false, + false, + false, + false, + true, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2015: Completed\n110 MCs including 60 MCs in EU / LA [French/German/Spanis h]/ recognized modules, with a minimum CAP of 3.50.\n\nCohort 2016 onwards:\nCompleted 110 MCs including 44 MCs in EU / LA [French/German/Spanis h]/recognized modules, with a minimum CAP of 3.50.", + "corequisite": "" + }, + { + "moduleCode": "EU4660", + "title": "Independent Study", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "EU4401", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in EU / LA [French/German/Spanish]/recognised modules, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in EU / LA [French/German/Spanish]/recognised modules, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "EV5105", + "title": "Biological Waste Treatment", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EX1881", + "title": "Exchange ULR Breadth", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EX3890", + "title": "Exchange UEM (CEE)", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EX4003", + "title": "Exchange Technical Elective (CEE)", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EX4004", + "title": "Exchange Technical Elective (CEE)", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EX4874", + "title": "Unrestricted Elective Outside Major", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EX4875", + "title": "Unrestricted Elective Outside Major", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "EX5104", + "title": "Environmental Technology", + "moduleCredit": 4, + "department": "SDE Dean's Office", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FAS1101", + "title": "Writing Academically: Arts and Social Sciences", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "1) Non-FASS students\n2) Students who have read and passed ES1531/GEK1549/GET1021 or ES1501%\n3) Students who have read and passed ES2531", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students who are required to read ES1000 Foundation Academic English and/or ES1103 English for Academic Purposes must pass those modules before they are allowed to read this module.", + "corequisite": "" + }, + { + "moduleCode": "FAS1102", + "title": "Public Writing and Communication", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "1) Non-FASS students\n2) Students who have read and passed ES2002, CS2101, IS2101, GEK1901/GET1006, ES2660, ES2007D, ES1541/SP1541, ENV1202 and ES1601.\n3) FASS USP students from Cohort 2017 and onwards\n4) ES1601 and ES1601A Professional and Academic Communication", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students who are required to read ES1000 Foundation Academic English and/or ES1103 English for Academic Purposes must pass those modules before they are allowed to read this module.", + "corequisite": "" + }, + { + "moduleCode": "FAS1103", + "title": "Effective Workplace Communication", + "moduleCredit": 2, + "department": "Center for Engl Lang Comms", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "1. Non-FASS students\n2. Students who have read and passed ES2002, CS2101, FAS1102, IS2101, GEK1901/GET1006, ES2660, ES2007D, ES1541/SP1541, ENV1202 and ES1601.\n3. FASS USP students from Cohort 2017 and onwards", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students who are required to read ES1000 Foundation Academic English and/or ES1103 English for Academic Purposes must pass those modules before they are allowed to read this module.", + "corequisite": "" + }, + { + "moduleCode": "FAS2551", + "title": "FASS Internship", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "Cohort 2016 onwards: Students who have completed or are pursuing the year-long NOC programmes are not allowed to read this module. Students should therefore consider their options carefully before embarking on their internships.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "At least 2 regular Semesters before enrolment in the module.\nCohort 2018 and after: CFG1002 Career Catalyst.", + "corequisite": "" + }, + { + "moduleCode": "FAS2552", + "title": "FASS Extended Internship", + "moduleCredit": 8, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "Module may not be taken in the honours year, or used to delay honours.\nCohort 2016 onwards: Students who have completed or are pursuing the year-long NOC programmes are not allowed to read this module. Students should therefore consider their options carefully before embarking on their internships.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "At least 2 regular Semesters before enrolment in the module.\nCohort 2018 and after: CFG1002 Career Catalyst.", + "corequisite": "" + }, + { + "moduleCode": "FAS2553", + "title": "Work Experience Internship", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [ + 3, + 4 + ], + "preclusion": "Cohort 2016 onwards: FASS students who have completed or are pursuing the year-long NOC programmes are not allowed to read this module. Students should therefore consider their options carefully before embarking on their internships.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "• This internship module is open to full-time undergraduate students who have completed at least 60MCs and plan to proceed on an approved internship of at least 10 weeks in duration in the vacation period.\n• FAS2551 FASS Internship", + "corequisite": "" + }, + { + "moduleCode": "FAS3550", + "title": "FASS Industry Seminar", + "moduleCredit": 2, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS FASS undergraduates who have completed 40MC and CFG1002 Career Catalyst", + "corequisite": "" + }, + { + "moduleCode": "FAS3551", + "title": "FASS Capstone Career Preparation", + "moduleCredit": 2, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS FASS undergraduates who have completed 80 MCs.", + "corequisite": "" + }, + { + "moduleCode": "FD1000", + "title": "First Aid", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FDP2001", + "title": "Special Mathematics Classes 1, 2 and 3", + "moduleCredit": 12, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "A-level mathematics", + "corequisite": "" + }, + { + "moduleCode": "FDP2002", + "title": "Special Physics Class 1, 2 and 3", + "moduleCredit": 12, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "A-level Physics", + "corequisite": "" + }, + { + "moduleCode": "FDP2011", + "title": "Special Mathematics Class 1, 2", + "moduleCredit": 8, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "FDP2001 Special Mathematics Class 1, 2 & 3", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "A-level mathematics or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "FDP2012", + "title": "Special Mathematics Class 3", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "FDP2001 Special Class in Mathematics 1,2 &3", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FDP2011 Special Mathematics Class 1, 2", + "corequisite": "" + }, + { + "moduleCode": "FDP2021", + "title": "Special Physics Class 1, 2", + "moduleCredit": 8, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "FDP2002 Special Physics Class 1, 2 & 3", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "A-level Physics or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "FDP2022", + "title": "Special Physics Class 3", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "FDP2002 Special Class in Physics 1,2 & 3", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FDP2021 Special Class in Physics 1, 2", + "corequisite": "" + }, + { + "moduleCode": "FE5101", + "title": "Derivatives And Fixed Income", + "moduleCredit": 4, + "department": "Risk Management Institute", + "faculty": "Risk Management Institute", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FE5101D", + "title": "Derivatives And Fixed Income", + "moduleCredit": 4, + "department": "Risk Management Institute", + "faculty": "Risk Management Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FE5103", + "title": "Equity Products and Exotics", + "moduleCredit": 4, + "department": "Risk Management Institute", + "faculty": "Risk Management Institute", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FE5105", + "title": "Corporate Financing and Risk", + "moduleCredit": 4, + "department": "Risk Management Institute", + "faculty": "Risk Management Institute", + "semester": [ + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FE5107", + "title": "Risk Analyses And Management", + "moduleCredit": 4, + "department": "Risk Management Institute", + "faculty": "Risk Management Institute", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FE5107D", + "title": "Risk Analyses And Management", + "moduleCredit": 4, + "department": "Risk Management Institute", + "faculty": "Risk Management Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FE5108", + "title": "Portfolio Theory And Investments", + "moduleCredit": 4, + "department": "Risk Management Institute", + "faculty": "Risk Management Institute", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FE5110", + "title": "Financial Engineering Project", + "moduleCredit": 4, + "department": "Risk Management Institute", + "faculty": "Risk Management Institute", + "semester": [ + 1, + 2, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FE5112", + "title": "Stochastic Calculus and Quantitative Methods", + "moduleCredit": 4, + "department": "Risk Management Institute", + "faculty": "Risk Management Institute", + "semester": [ + 1, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FE5112D", + "title": "Stochastic Calculus and Quantitative Methods", + "moduleCredit": 4, + "department": "Risk Management Institute", + "faculty": "Risk Management Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FE5116", + "title": "Programming and Advanced Numerical Methods", + "moduleCredit": 4, + "department": "Risk Management Institute", + "faculty": "Risk Management Institute", + "semester": [ + 2, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FE5101, FE5101D Derivatives and Fixed Income and FE5112, FE5112D Stochastic Calculus and Quantitative Methods", + "corequisite": "" + }, + { + "moduleCode": "FE5116D", + "title": "Programming and Advanced Numerical Methods", + "moduleCredit": 4, + "department": "Risk Management Institute", + "faculty": "Risk Management Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FE5101, FE5101D Derivatives and Fixed Income and FE5112, FE5112D Stochastic Calculus and Quantitative Methods", + "corequisite": "" + }, + { + "moduleCode": "FE5208", + "title": "Term Structure and Interest Rate Derivatives", + "moduleCredit": 4, + "department": "Risk Management Institute", + "faculty": "Risk Management Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FE5101, FE5101D Derivatives and Fixed Income and FE5112, FE5112D Stochastic Calculus and Quantitative Methods", + "corequisite": "" + }, + { + "moduleCode": "FE5209", + "title": "Financial Econometrics", + "moduleCredit": 4, + "department": "Risk Management Institute", + "faculty": "Risk Management Institute", + "semester": [ + 1, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FE5209D", + "title": "Financial Econometrics", + "moduleCredit": 4, + "department": "Risk Management Institute", + "faculty": "Risk Management Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FE5210", + "title": "Research Methods in Finance", + "moduleCredit": 4, + "department": "Risk Management Institute", + "faculty": "Risk Management Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FE5102", + "corequisite": "" + }, + { + "moduleCode": "FE5211", + "title": "Seminar In Financial Engineering", + "moduleCredit": 4, + "department": "Risk Management Institute", + "faculty": "Risk Management Institute", + "semester": [ + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FE5215", + "title": "Seminar in Financial Product Innovations", + "moduleCredit": 4, + "department": "Risk Management Institute", + "faculty": "Risk Management Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FE5216", + "title": "Financial Technology Innovations Seminar", + "moduleCredit": 4, + "department": "Risk Management Institute", + "faculty": "Risk Management Institute", + "semester": [ + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FE5217", + "title": "Seminar in Risk Management and Alternative Investment", + "moduleCredit": 4, + "department": "Risk Management Institute", + "faculty": "Risk Management Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FE5218", + "title": "Credit Risk", + "moduleCredit": 4, + "department": "Risk Management Institute", + "faculty": "Risk Management Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FE5101: Derivatives and Fixed Income", + "corequisite": "FE 5102: Quantitative Methods and Programming" + }, + { + "moduleCode": "FE5219", + "title": "Credit Analytics Practicum", + "moduleCredit": 6, + "department": "Risk Management Institute", + "faculty": "Risk Management Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FE5101, FE501D Derivatives and Fixed Income, FE 5112, FE5112D Stochastic Calculus and quantitative Methods and FE5209, FE5209D Financial Econometrics", + "corequisite": "" + }, + { + "moduleCode": "FE5221", + "title": "Trading Principles & Fundamentals", + "moduleCredit": 2, + "department": "Risk Management Institute", + "faculty": "Risk Management Institute", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FE5222", + "title": "Advanced Derivatives Pricing", + "moduleCredit": 4, + "department": "Risk Management Institute", + "faculty": "Risk Management Institute", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FE5112/D Stochastic Calculus and Quantitative Methods", + "corequisite": "" + }, + { + "moduleCode": "FE5223", + "title": "Introduction to Electronic Financial Market", + "moduleCredit": 2, + "department": "Risk Management Institute", + "faculty": "Risk Management Institute", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FE5224", + "title": "Current Topics In Applied Risk Management", + "moduleCredit": 2, + "department": "Risk Management Institute", + "faculty": "Risk Management Institute", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FE5225", + "title": "Machine Learning and FinTech", + "moduleCredit": 4, + "department": "Risk Management Institute", + "faculty": "Risk Management Institute", + "semester": [ + 2 + ], + "preclusion": "N.A.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "N.A.", + "corequisite": "N.A." + }, + { + "moduleCode": "FE5226", + "title": "C++ in Financial Engineering", + "moduleCredit": 4, + "department": "Risk Management Institute", + "faculty": "Risk Management Institute", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FE5227", + "title": "Commodities: Fundamentals and Modelling", + "moduleCredit": 2, + "department": "Risk Management Institute", + "faculty": "Risk Management Institute", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FIN2004", + "title": "Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have taken CS2251 or EC3209 or EC3333 or BK2004 or BZ2004 or BH2004 or FNA2004 are not allowed to take FIN2004. 1st Year BSc(PFM), all BSc (RE) and Computational Finance are not allowed to take FIN2004.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed BK1003 or BZ1002 or BH1002 or FNA1002/ACC1002 or FNA1002X/ACC1002X or FNA1002E or BH1002E or EC3212 or EG1422 before they are allowed to take FIN2004.", + "corequisite": "" + }, + { + "moduleCode": "FIN2004X", + "title": "Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have taken CS2251 or EC3209 or EC3333 or BK2004 or BZ2004 or BH2004 or FNA2004 are not allowed to take FIN2004. 1st Year BSc(PFM), all BSc (RE) and Computational Finance are not allowed to take FIN2004.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed BK1003 or BZ1002 or BH1002 or FNA1002/ACC1002 or FNA1002X/ACC1002X or FNA1002E or BH1002E or EC3212 or EG1422 before they are allowed to take FIN2004.", + "corequisite": "" + }, + { + "moduleCode": "FIN2111", + "title": "Personal Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "Students who have passed BZ3314 or BH2111 or FNA2111 are not allowed to take FIN2111.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FIN2704", + "title": "Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "FIN2004", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ACC1701/ACC1701X or EC2204.", + "corequisite": "" + }, + { + "moduleCode": "FIN2704X", + "title": "Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "FIN2004", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ACC1701/ACC1701X or EC2204.", + "corequisite": "" + }, + { + "moduleCode": "FIN3101", + "title": "Corporate Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH3101 or BZ3301 or BK3100 or FNA3101 or FE5105 or FIN3101A or FIN3101B or FIN3101C", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA2004 or FIN2004 or BH2004 or BZ2004 or BK2004", + "corequisite": "" + }, + { + "moduleCode": "FIN3101A", + "title": "Corporate Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "BH3101 or BZ3301 or BK3100 or FNA3101 or FE5105 or FIN3101 or FIN3101B or FIN3101C", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA2004 or FIN2004 or BH2004 or BZ2004 or BK2004", + "corequisite": "" + }, + { + "moduleCode": "FIN3101B", + "title": "Corporate Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "BH3101 or BZ3301 or BK3100 or FNA3101 or FE5105 or FIN3101 or FIN3101A or FIN3101C", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA2004 or FIN2004 or BH2004 or BZ2004 or BK2004", + "corequisite": "" + }, + { + "moduleCode": "FIN3101C", + "title": "Corporate Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "BH3101 or BZ3301 or BK3100 or FNA3101 or FE5105 or FIN3101 or FIN3101A or FIN3101B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA2004 or FIN2004 or BH2004 or BZ2004 or BK2004", + "corequisite": "" + }, + { + "moduleCode": "FIN3102", + "title": "Investment Analysis and Portfolio Management", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH3102 or BZ3302 or BK3101 or FNA3102A/B/C or FIN3102A/B/C or FE5108 or EC3333 or CF3101/QF3101", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA2004 or FIN2004 or BH2004 or BZ2004 or BK2004", + "corequisite": "" + }, + { + "moduleCode": "FIN3102A", + "title": "Investment Analysis and Portfolio Management", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "BH3102 or BZ3302 or BK3101 or FNA3102 or FNA3102B/C or FIN3102 or FIN3102B/C or FE5108 or EC3333 or CF3101/QF3101", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA2004 or FIN2004 or BH2004 or BZ2004 or BK2004", + "corequisite": "" + }, + { + "moduleCode": "FIN3102B", + "title": "Investment Analysis and Portfolio Management", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "BH3102 or BZ3302 or BK3101 or FNA3102 or FNA3102A/C or FIN3102 or FIN3102A/C or FE5108 or EC3333 or CF3101/QF3101", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA2004 or FIN2004 or BH2004 or BZ2004 or BK2004", + "corequisite": "" + }, + { + "moduleCode": "FIN3102C", + "title": "Investment Analysis and Portfolio Management", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "BH3102 or BZ3302 or BK3101 or FNA3102 or FNA3102A/B or FIN3102 or FIN3102A/B or FE5108 or EC3333 or CF3101/QF3101", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA2004 or FIN2004 or BH2004 or BZ2004 or BK2004", + "corequisite": "" + }, + { + "moduleCode": "FIN3102D", + "title": "Investment Analysis and Portfolio Management", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH3102 or BZ3302 or BK3101 or FNA3102A/B/C or FIN3102A/B/C or FE5108 or EC3333 or CF3101/QF3101", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA2004 or FIN2004 or BH2004 or BZ2004 or BK2004", + "corequisite": "" + }, + { + "moduleCode": "FIN3103", + "title": "Financial Markets", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH3103 or BZ3303 or BK3102 or FNA3103 or FIN3103A or FIN3103B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA2004 or FIN2004 or BH2004 or BZ2004 or BK2004", + "corequisite": "" + }, + { + "moduleCode": "FIN3103A", + "title": "Financial Markets", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "BH3103 or BZ3303 or BK3102 or FNA3103 or FIN3103 or FIN3103B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA2004 or FIN2004 or BH2004 or BZ2004 or BK2004", + "corequisite": "" + }, + { + "moduleCode": "FIN3103B", + "title": "Financial Markets", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "BH3103 or BZ3303 or BK3102 or FNA3103 or FIN3103 or FIN3103A", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA2004 or FIN2004 or BH2004 or BZ2004 or BK2004", + "corequisite": "" + }, + { + "moduleCode": "FIN3103C", + "title": "Financial Markets", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "BH3103 or BZ3303 or BK3102 or FNA3103 or FIN3103 or FIN3103B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA2004 or FIN2004 or BH2004 or BZ2004 or BK2004", + "corequisite": "" + }, + { + "moduleCode": "FIN3113", + "title": "Financial Statement Analysis", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "BH3113 or BZ3105 or BK3105 or FNA3113", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA1002 or FNA1002X or ACC1002 or ACC1002X or BH1002 or BZ1002 or BK1003 or FNA1002E or BH1002E", + "corequisite": "" + }, + { + "moduleCode": "FIN3114", + "title": "Global Financial and Accounting Issues", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "Students who have passed FNA3114 are not allowed to take FIN3114.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA1002 or FNA1002X or ACC1002 or ACC1002X", + "corequisite": "" + }, + { + "moduleCode": "FIN3115", + "title": "International Financial Management", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "BH3115 or BZ3304 or BK3108 or FNA3115", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA3102 or FIN3102 or FIN3102A or FIN3102B or FIN3102C", + "corequisite": "" + }, + { + "moduleCode": "FIN3116", + "title": "Options and Futures", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "BH3116 or BZ3312 or BK3109A or FNA3116 or FIN3116A or FIN3116B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA3102 or FNA3102A or FNA3102B or FNA3102C or FIN3102 or FIN3102A or FIN3102B or FIN3102C", + "corequisite": "" + }, + { + "moduleCode": "FIN3117", + "title": "Bank Management", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have passed FNA3117 are not allowed to take FIN3117. Not for students who have passed FE5105.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA2004/FIN2004 and FNA3102/FIN3102", + "corequisite": "" + }, + { + "moduleCode": "FIN3118", + "title": "Financial Risk Management", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "BH3118 or BZ3305 or FNA3118", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN3102", + "corequisite": "" + }, + { + "moduleCode": "FIN3119", + "title": "Risk and Insurance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "BH3119 or BZ3311 or FNA3119", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA2004 or FIN2004 or BH2004 or BZ2004 or BK2004", + "corequisite": "" + }, + { + "moduleCode": "FIN3120", + "title": "Topics in Finance (TIF)", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "Students who have passed FNA3120 are not allowed to take FIN3120.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Depends on specific topics offered.", + "corequisite": "" + }, + { + "moduleCode": "FIN3120B", + "title": "TIF: Transaction Banking", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN3101 Corporate Finance", + "corequisite": "" + }, + { + "moduleCode": "FIN3120C", + "title": "TIF: China's Capital Markets", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2004 Finance and FIN3103 Financial Markets", + "corequisite": "" + }, + { + "moduleCode": "FIN3120D", + "title": "TIF: Foreign Exchange Trading", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2004 Finance and FIN3103 Financial Markets", + "corequisite": "Recommended (but not required) co-requisite: FIN3120E Topics in Finance: Physical Commodity Markets and Assets. The rationale is that commodities and foreign exchange usually sit in the same division in many banks, hence having both courses would be usef" + }, + { + "moduleCode": "FIN3120E", + "title": "TIF: Phy. Comdty Mkt & Assets", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2004 Finance and FIN3103 Financial Markets", + "corequisite": "Recommended (but not required) co-requisite: FIN3120D Topics in Finance: Foreign Exchange Trading. The rationale is that commodities and foreign exchange usually sit in the same division in many banks, hence having both courses would be useful from a job" + }, + { + "moduleCode": "FIN3120X", + "title": "Topic in Finance", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FIN3120Y", + "title": "Topic in Finance", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FIN3120Z", + "title": "Topic in Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FIN3129", + "title": "Independent Study in Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Vary according to project topic. In general, however, students will have to have completed the core modules of the BBA/BBA(Acc) curriculum.", + "corequisite": "" + }, + { + "moduleCode": "FIN3130", + "title": "Financial Modelling", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ACC1002 Financial Accounting\n• FIN2004 Finance\n• FIN3102 Investment Analysis and Portfolio\nManagement\n• An aptitude with mathematics and programming would\nbe a plus.", + "corequisite": "" + }, + { + "moduleCode": "FIN3131", + "title": "Fixed Income Securities", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "FNA3120A or CF3201/QF3201", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA3102 or FIN3102 or FIN3102A or FIN3102B or FIN3102C", + "corequisite": "" + }, + { + "moduleCode": "FIN3132", + "title": "Value Investing In Asia", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "- ACC1002 Financial Accounting \n- FIN3101 Corporate Finance", + "corequisite": "" + }, + { + "moduleCode": "FIN3133", + "title": "Measuring Success in Philanthropy and Impact Investing", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "FIN4117", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FIN3134", + "title": "Household Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "FIN3719 Household Finance; and\nFIN4113 Personal Finance and Wealth Management", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2004/FIN2004X Finance", + "corequisite": "" + }, + { + "moduleCode": "FIN3135", + "title": "Consumer Banking Wealth Management", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2004/FIN2704 Finance", + "corequisite": "" + }, + { + "moduleCode": "FIN3139", + "title": "Independent Study in Finance", + "moduleCredit": 2, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Vary according to project topic. In general, however, students will have to have completed the core modules of the BBA/BBA(Acc) curriculum.", + "corequisite": "Vary according to project topics." + }, + { + "moduleCode": "FIN3701", + "title": "Corporate Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "FIN3101; RE3807.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2704/FIN2704X", + "corequisite": "" + }, + { + "moduleCode": "FIN3701A", + "title": "Corporate Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "FIN3101; RE3807.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2704/FIN2704X", + "corequisite": "" + }, + { + "moduleCode": "FIN3701B", + "title": "Corporate Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "FIN3101; RE3807.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2704/FIN2704X", + "corequisite": "" + }, + { + "moduleCode": "FIN3701C", + "title": "Corporate Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "FIN3101; RE3807.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2704/FIN2704X", + "corequisite": "" + }, + { + "moduleCode": "FIN3701D", + "title": "Corporate Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "FIN3101; RE3807.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2704/FIN2704X", + "corequisite": "" + }, + { + "moduleCode": "FIN3702", + "title": "Investment Analysis and Portfolio Management", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "FIN3102", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2704/FIN2704X", + "corequisite": "" + }, + { + "moduleCode": "FIN3702A", + "title": "Investment Analysis and Portfolio Management", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "FIN3102", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2704/FIN2704X", + "corequisite": "" + }, + { + "moduleCode": "FIN3702B", + "title": "Investment Analysis and Portfolio Management", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "FIN3102", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2704/FIN2704X", + "corequisite": "" + }, + { + "moduleCode": "FIN3702C", + "title": "Investment Analysis and Portfolio Management", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "FIN3102", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2704/FIN2704X", + "corequisite": "" + }, + { + "moduleCode": "FIN3702D", + "title": "Investment Analysis and Portfolio Management", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "FIN3102", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2704/FIN2704X", + "corequisite": "" + }, + { + "moduleCode": "FIN3703", + "title": "Financial Markets", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "FIN3103", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2704/FIN2704X", + "corequisite": "" + }, + { + "moduleCode": "FIN3703A", + "title": "Financial Markets", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "FIN3103", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2704/FIN2704X", + "corequisite": "" + }, + { + "moduleCode": "FIN3703B", + "title": "Financial Markets", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "FIN3103", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2704/FIN2704X", + "corequisite": "" + }, + { + "moduleCode": "FIN3703C", + "title": "Financial Markets", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "FIN3103", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2704/FIN2704X", + "corequisite": "" + }, + { + "moduleCode": "FIN3703D", + "title": "Financial Markets", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "FIN3103", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2704/FIN2704X", + "corequisite": "" + }, + { + "moduleCode": "FIN3711", + "title": "International Financial Management", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "FIN3115", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2704/FIN2704X", + "corequisite": "" + }, + { + "moduleCode": "FIN3712", + "title": "Options and Futures", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "FIN3116", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2704/FIN2704X", + "corequisite": "" + }, + { + "moduleCode": "FIN3713", + "title": "Bank Management", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "FIN3117", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2704/FIN2704X and FIN3702.", + "corequisite": "" + }, + { + "moduleCode": "FIN3714", + "title": "Financial Risk Management", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "FIN3118", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN3702", + "corequisite": "" + }, + { + "moduleCode": "FIN3715", + "title": "Risk and Insurance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "FIN3119", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2704/FIN2704X.", + "corequisite": "" + }, + { + "moduleCode": "FIN3716", + "title": "Financial Modelling", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "FIN3130", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(ACC1701/ACC1701X or EC2204) and FIN3702.", + "corequisite": "" + }, + { + "moduleCode": "FIN3717", + "title": "Fixed Income Securities", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "FIN3131", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN3702", + "corequisite": "" + }, + { + "moduleCode": "FIN3718", + "title": "Value Investing in Asia", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "FIN3132", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(ACC1701/ACC1701X or EC2204) and (FIN3701 or RE3807).", + "corequisite": "" + }, + { + "moduleCode": "FIN3719", + "title": "Household Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "FIN3134 Household Finance; and\nFIN4712 Personal Finance and Wealth Management", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2704/FIN2704X Finance", + "corequisite": "" + }, + { + "moduleCode": "FIN3720", + "title": "Financial Statement Analysis", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "FIN3113 Financial Statement Analysis", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ACC1701 Accounting for Decision Makers\nFIN2704 Finance", + "corequisite": "" + }, + { + "moduleCode": "FIN3721", + "title": "Consumer Banking Wealth Management", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2704/FIN2004 Finance", + "corequisite": "" + }, + { + "moduleCode": "FIN3751", + "title": "Independent Study in Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Varies according to the subject matter covered.", + "corequisite": "" + }, + { + "moduleCode": "FIN3752", + "title": "Independent Study in Finance (2 MC)", + "moduleCredit": 2, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Varies according to the subject matter covered.", + "corequisite": "" + }, + { + "moduleCode": "FIN3761", + "title": "Topics in Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Varies according to the subject matter covered.", + "corequisite": "" + }, + { + "moduleCode": "FIN3761A", + "title": "TIF: Transaction Banking", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "FIN3120B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN3701 or RE3807.", + "corequisite": "" + }, + { + "moduleCode": "FIN3761B", + "title": "TIF: China’s Capital Markets", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "FIN3120C", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2704/FIN2704X and FIN3703.", + "corequisite": "" + }, + { + "moduleCode": "FIN3761C", + "title": "TIF: Foreign Exchange Trading", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "FIN3120D", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2704/FIN2704X and FIN3703.", + "corequisite": "" + }, + { + "moduleCode": "FIN3761D", + "title": "TIF: Physical Commodity Markets and Assets", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "FIN3120E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2704/FIN2704X and FIN3703.", + "corequisite": "" + }, + { + "moduleCode": "FIN3761X", + "title": "Topics in Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Varies according to the subject matter covered.", + "corequisite": "" + }, + { + "moduleCode": "FIN3761Y", + "title": "Topics in Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Varies according to the subject matter covered.", + "corequisite": "" + }, + { + "moduleCode": "FIN3761Z", + "title": "Topics in Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Varies according to the subject matter covered.", + "corequisite": "" + }, + { + "moduleCode": "FIN4111", + "title": "Research Methods in Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "Students who have passed FNA4111 are not allowed to take FIN4111. Not for students who have passed FE5209.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA3101/FIN3101/FIN3101A/FIN3101B/FIN3101C and FNA3102/FIN3102/FIN3102A/FIN3102B/FIN3102C and ST1131A/ST1131/ST1232/MA2216/ST2131/ST2334/EE2003/ME2491", + "corequisite": "" + }, + { + "moduleCode": "FIN4112", + "title": "Seminars in Finance (SIF)", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FIN4112A", + "title": "SIF: Empirical Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FIN4112C", + "title": "SIF: Business Valuation", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FIN4112D", + "title": "SIF: Private Equity and Governance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "FNA4112D", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA1002X/ACC1002X, FIN3101 and FIN3102", + "corequisite": "" + }, + { + "moduleCode": "FIN4112G", + "title": "SIF: Private Equity", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "FIN4112F: Seminars in Finance: Private Equity and Investment Banking", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN3101 Corporate Finance\n FIN3102 Investment Analysis and Portfolio Management\n FIN3103 Financial Markets", + "corequisite": "" + }, + { + "moduleCode": "FIN4112H", + "title": "SIF: Investment Banking", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "FIN4112F: Seminars in Finance: Private Equity and Investment Banking", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "- FIN3101 Corporate Finance\n- FIN3102 Investment Analysis and Portfolio Management\n- FIN3103 Financial Markets", + "corequisite": "" + }, + { + "moduleCode": "FIN4112J", + "title": "SIF: Security Analysis and Valuation", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN3102 Investment Analysis and Portfolio Management", + "corequisite": "" + }, + { + "moduleCode": "FIN4112K", + "title": "SIF: Applied Portfolio Management Techniques", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN3102 Investment Analysis and Portfolio Management", + "corequisite": "" + }, + { + "moduleCode": "FIN4112L", + "title": "SIF: Family Business & Wealth Management", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN3101 Corporate Finance", + "corequisite": "" + }, + { + "moduleCode": "FIN4112M", + "title": "SIF: Applied Investment Valuation", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2004 Finance and FIN3101 Corporate Finance", + "corequisite": "" + }, + { + "moduleCode": "FIN4112Y", + "title": "Seminars in Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FIN4112Z", + "title": "Seminars in Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FIN4113", + "title": "Personal Finance and Wealth Management", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "FNA4112E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN3101% and ST1131A", + "corequisite": "" + }, + { + "moduleCode": "FIN4113A", + "title": "Personal Finance and Wealth Management", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "FNA4112E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN3101% and ST1131A", + "corequisite": "" + }, + { + "moduleCode": "FIN4113B", + "title": "Personal Finance and Wealth Management", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "FNA4112E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN3101% and ST1131A", + "corequisite": "" + }, + { + "moduleCode": "FIN4113C", + "title": "Personal Finance and Wealth Management", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "FNA4112E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN3101% and ST1131A", + "corequisite": "" + }, + { + "moduleCode": "FIN4113Y", + "title": "Personal Finance and Wealth Management", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "FNA4112E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN3101% and ST1131A", + "corequisite": "" + }, + { + "moduleCode": "FIN4114", + "title": "Private Equity and Investment Banking", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN3101 and FIN3102 and FIN3103", + "corequisite": "" + }, + { + "moduleCode": "FIN4115", + "title": "Advanced Portfolio Mgt: Security Analysis & Valuation", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "- ACC1002 Financial Accounting \n- FIN3101 Corporate Finance \n- FIN3102 Investment Analysis and Portfolio Management", + "corequisite": "" + }, + { + "moduleCode": "FIN4116", + "title": "Valuation and Mergers & Acquisitions", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2004, FIN3101", + "corequisite": "" + }, + { + "moduleCode": "FIN4117", + "title": "Measuring Success in Philanthropy and Impact Investing", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "FIN3133", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FIN4118", + "title": "Equity Research Seminar", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN3101", + "corequisite": "" + }, + { + "moduleCode": "FIN4119", + "title": "Advanced Independent Study in Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Vary according to project topic. In general, however, students will have to have completed the core modules of the BBA/BBA(Acc) curriculum.", + "corequisite": "" + }, + { + "moduleCode": "FIN4120", + "title": "Equity Research Seminar 1", + "moduleCredit": 2, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "FIN3132 Value Investing In Asia" + }, + { + "moduleCode": "FIN4121", + "title": "Equity Research Seminar 2", + "moduleCredit": 2, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "FIN3132 Value Investing In Asia (FIN3132 should have either been taken in previous semesters or concurrently) and / or FIN 4120 Equity Research Seminar 1" + }, + { + "moduleCode": "FIN4122", + "title": "Entrepreneurial Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2004 Finance\nFIN3101 Corporate Finance", + "corequisite": "" + }, + { + "moduleCode": "FIN4123", + "title": "FinTech Management", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN3101 Corporate Finance, FIN3102 Investment Analysis and Portfolio Management, FIN3103 Financial Markets", + "corequisite": "" + }, + { + "moduleCode": "FIN4124", + "title": "FinTech and Financial Data Analytics", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "FIN4719 FinTech and Financial Data Analytics", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(1)FIN3102 or QF3101\nand\n(2)DAO2702 or DSC2008 or CS1010 or CS1010E or CS1010S or CS1010X or CS1101S", + "corequisite": "" + }, + { + "moduleCode": "FIN4125", + "title": "Sustainability and Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "FIN4720 Sustainability and Finance", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN3101/FIN3701;\nand\nFIN3102/FIN3702 or QF3101", + "corequisite": "" + }, + { + "moduleCode": "FIN4126", + "title": "AI, Blockchain and Quantum Computing", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "FIN4721 AI, Blockchain and Quantum Computing", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2004/FIN2704 Finance", + "corequisite": "" + }, + { + "moduleCode": "FIN4129", + "title": "Advanced Independent Study in Finance", + "moduleCredit": 2, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Vary according to project topic. In general, however, students will have to have completed the core modules of the BBA/BBA(Acc) curriculum.", + "corequisite": "Vary according to project topics." + }, + { + "moduleCode": "FIN4711", + "title": "Research Methods in Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "FIN4111", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(FIN3701 or RE3807) and FIN3702.", + "corequisite": "" + }, + { + "moduleCode": "FIN4712", + "title": "Personal Finance and Wealth Management", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "FIN4113", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN3701 or RE3807.", + "corequisite": "" + }, + { + "moduleCode": "FIN4713", + "title": "Advanced Portfolio Management: Securities Analysis & Valuation", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "FIN4115", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(ACC1701/ACC1701X or EC2204), (FIN3701 or RE3807) and FIN3702.", + "corequisite": "" + }, + { + "moduleCode": "FIN4714", + "title": "Valuation and Mergers & Acquisition", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "FIN4116", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2704/FIN2704X and (FIN3701 or RE3807).", + "corequisite": "" + }, + { + "moduleCode": "FIN4715", + "title": "Measuring Success in Philanthropy and Impact Investing", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "FIN4117", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FIN4716", + "title": "Equity Research Seminar", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "FIN4118", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN3701 or RE3807.", + "corequisite": "" + }, + { + "moduleCode": "FIN4717", + "title": "Entrepreneurial Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "FIN4122", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2704/FIN2704X and (FIN3701 or RE3807).", + "corequisite": "" + }, + { + "moduleCode": "FIN4718", + "title": "FinTech Management", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN3701 Corporate Finance, FIN3702 Investment Analysis and Portfolio Management, FIN3703 Financial Markets", + "corequisite": "" + }, + { + "moduleCode": "FIN4719", + "title": "FinTech and Financial Data Analytics", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "FIN4124 FinTech and Financial Data Analytics", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(1)FIN3702 or QF3101\nand\n(2)DAO2702 or DSC2008 or CS1010 or CS1010E or CS1010S or CS1010X or CS1101S", + "corequisite": "" + }, + { + "moduleCode": "FIN4720", + "title": "Sustainability and Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "FIN4125 Sustainability and Finance", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN3101/FIN3701;\nand\nFIN3102/FIN3702 or QF3101", + "corequisite": "" + }, + { + "moduleCode": "FIN4721", + "title": "AI, Blockchain and Quantum Computing", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "FIN4126 AI, Blockchain and Quantum Computing", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN2004/FIN2704 Finance", + "corequisite": "" + }, + { + "moduleCode": "FIN4751", + "title": "Advanced Independent Study in Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Varies according to the subject matter covered.", + "corequisite": "" + }, + { + "moduleCode": "FIN4752", + "title": "Advanced Independent Study in Finance (2 MC)", + "moduleCredit": 2, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Varies according to the subject matter covered.", + "corequisite": "" + }, + { + "moduleCode": "FIN4761", + "title": "Seminars in Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Varies according to the subject matter covered.", + "corequisite": "" + }, + { + "moduleCode": "FIN4761A", + "title": "SIF: Private Equity", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "FIN4112G", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(FIN3701 or RE3807), FIN3702 and FIN3703.", + "corequisite": "" + }, + { + "moduleCode": "FIN4761B", + "title": "SIF: Investment Banking", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "FIN4112H", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(FIN3701 or RE3807), FIN3702 and FIN3703.", + "corequisite": "" + }, + { + "moduleCode": "FIN4761C", + "title": "SIF: Applied Portfolio Management Techniques", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "FIN4112K", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN3702", + "corequisite": "" + }, + { + "moduleCode": "FIN4761D", + "title": "SIF: Family Business & Wealth Management", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "FIN4112L", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FIN3701 or RE3807.", + "corequisite": "" + }, + { + "moduleCode": "FIN6001", + "title": "Corporate Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FIN6002", + "title": "Banking and Household Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FIN6003", + "title": "Asset Pricing and Microstructure Theory", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FIN6004", + "title": "Empirical Asset Pricing and Microstructure", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMA1201B", + "title": "FS: Chinatowns: History and Myth", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Other Freshman Seminar modules", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "The medium of instruction of this module is Chinese. Students must have obtained: \n1) at least a B4 for (a) Higher Chinese at GCE 'O' level, or (b) Chinese Language at GCE 'AO' level (at GCE 'A' level examination); \nOR 2) at least a pass for (a) Chinese at GCE 'A' level, or (b) Higher Chinese at GCE 'A' level;\nOR 3) at least C grade for Chinese Language (H1CL) at GCE 'A' level; \nOR 4) at least a pass for (a) Chinese Language and Literature (H2CLL) at GCE 'A' level, or (b) Chinese Language and Literature (H3CLL) at GCE 'A' level. \n5) Equivalent qualifications may be accepted.", + "corequisite": "" + }, + { + "moduleCode": "FMA1201D", + "title": "FS: Contemporary Issues in Trade Policy", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMA1201F", + "title": "FS : Representing War", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Other Freshman Seminar Modules", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMA1201H", + "title": "FS: Australian Culture", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Other Freshman Seminar Modules", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMA1201J", + "title": "FS: Generations", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Other Freshman Seminar Modules", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMA1201K", + "title": "FS : The Civilization of Islam in the Malay World", + "moduleCredit": 4, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Other Freshman Seminar Modules", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMA1201P", + "title": "FS: Meanings and Leanings: Is There a Reason Why?", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Other Freshman Seminar modules", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMA1201Q", + "title": "FS: Love Actually? The Social Construction of Romantic Love", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Other Freshman Seminar Modules", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMA1202D", + "title": "Taking Risks: Economics, Psychology, and Biology", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Other Freshman Seminar modules", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "‘A’ grade in A’ Level Mathematics. Students who do not meet the grade requirement may contact the lecturer for an online discussion prior to the first class.", + "corequisite": "" + }, + { + "moduleCode": "FMA1202F", + "title": "FS: Heroism and Society", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Other Freshman Seminar modules", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMA1202G", + "title": "FS: Producing Nature, Consuming Nature", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Other Freshman Seminar modules", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMA1202N", + "title": "FS: Neuroeconomics: Brain on Money", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Other Freshman Seminar modules", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMA1203C", + "title": "FS: Smart Cities", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Other Freshman Seminar modules.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMA1203Q", + "title": "FS: Contemplating Theme Parks", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Other Freshman Seminar modules", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMA1204C", + "title": "FS: Saving Face", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMA1204H", + "title": "FS: War Memories: From Anne Frank to Changi Prison", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Other Freshman Seminar modules", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMA1205H", + "title": "FS: Decolonization in the 20th Century", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Other Freshman Seminar modules.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMA1206H", + "title": "FS: Travel and the Historian", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Other Freshman Seminar modules", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMA1207H", + "title": "FS: Biopolitics", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Other Freshman Seminar modules", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMD1203", + "title": "Freshmen Seminar: Real Estate Policy Issues", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMD1204", + "title": "Freshmen Seminar: Urban Conservat'n & Sustainable Dev't", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FME1201", + "title": "FS: From Canvas to Engineering Drawing", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FME1202", + "title": "FS: Great Discoveries & Inventions in Sci & Engg", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FME1203", + "title": "FS: Practices of Modern Engineering", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FME1204", + "title": "Catalysis for Sustainable Chemical Technology", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FME1205", + "title": "FS: Energy - How to return to sustainability?", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FME1206", + "title": "FS: Towards a Smart and Sustainable City", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1201P", + "title": "FS: Matter and Interaction", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1201S", + "title": "FS: The Role of Statistics in Scientific Investigation", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1202C", + "title": "FS: The 5 S's of Molecules", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1202M", + "title": "FS: Mathematics in Science, Technology & Society", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1202P", + "title": "FS: Learning through Experiments", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1202S", + "title": "FS: Randomness in Life", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1203B", + "title": "FS: Exploring the Mysteries of Ageing", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1203M", + "title": "FS: The Mathematics of Infinity", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1203P", + "title": "FS: The Beauty of Symmetry", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1203S", + "title": "FS: Randomness in Scientific Thinking", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1204B", + "title": "FS: The Global Impact of Biological Computing", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1204M", + "title": "FS: Appreciation of Basic Results in Mathematics", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1204P", + "title": "FS: Conceptual Development of Physics", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1204S", + "title": "FS: Fraud, Deception and Data", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1205M", + "title": "FS: Analogy & Intuition in Mathematics", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1205P", + "title": "FS: Nanoworld and Synchrotron Radiation", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1205S", + "title": "Junk science, good science, and statistics", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1206B", + "title": "FS: Genetic Engineering", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1206M", + "title": "FS: Is Mathematics Science?", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1206P", + "title": "Energy Storage Devices - State of the Art", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1207C", + "title": "Gemstones, Minerals and Rocks", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1207M", + "title": "FS: Mathematics and Computer Science", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1207P", + "title": "The scientific method and how it can fail", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1208B", + "title": "FS: Understanding the Fundamentals of Biotechnology", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1208C", + "title": "FS: Carbon Dioxide and Our Environment", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1208M", + "title": "FS: Space, Time and the Universe", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1208P", + "title": "Experimental Physics", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1209C", + "title": "The strange and exciting world of nanoparticles", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1209M", + "title": "Philosophy of Mathematics", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1209P", + "title": "Science of Solar and Thermal Energy", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1210B", + "title": "From Genetic Engineering to Protein Engineering", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1210C", + "title": "Simple Chemistry for Different Disciplines", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1210M", + "title": "Turning Points in the History of Mathematics", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1210P", + "title": "Imaging our world", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1211B", + "title": "Protein materials - composition and property", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1211C", + "title": "FS: Science of Color", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1211M", + "title": "Mathematics in Modern Technology", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar. Students staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1211P", + "title": "Understanding the Materials Genome", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1212C", + "title": "Green Chemistry for Sustainable Society", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar. Students staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1212M", + "title": "Uncovering the Magic in Magic Squares and Magic Graphs", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar. Students staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1212P", + "title": "SYC: Simple Yet Complex", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1213P", + "title": "The Little Focused Laser That Could", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar. Students staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1214B", + "title": "Mysteries of Water, Protein Aggregation and Diseases", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1214P", + "title": "Silk: Fibers that make a difference in our world", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar. Students staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1215B", + "title": "Plant Pathogens that cause plants to end up in a bucket", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1218B", + "title": "FS: How come aspirin can relieve my headache?", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1221B", + "title": "Science: The Good, the Bad, the Ugly and the Beautiful", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1222B", + "title": "From Toxins to Therapeutics", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1223B", + "title": "The Native Seed Plants of Singapore", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1224B", + "title": "Why do these crystal structures deserve the Nobel Prize?", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1225B", + "title": "Infectious Diseases and Host-Pathogen Interactions", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1226B", + "title": "Battles of the Sexes in the Animal World", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "Students who have read a Freshman Seminar before will be precluded from reading a second Freshman Seminar.\n\nStudents staying in Residential Colleges in UTown who will be reading or have read the Junior Seminars will be precluded from reading Freshman Seminar in the Faculty.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1227B", + "title": "The Science of the Brave New World", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FMS1228B", + "title": "Adapt, Evolve and Survive: The Fungal Story", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FNA1002", + "title": "Financial Accounting", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FNA1002E", + "title": "Financial Accounting", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FNA1002X", + "title": "Financial Accounting", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "Students who have taken CS1304 or EC3212 or BK1003 or BZ1002 or BH1002 or BZ1002E or BH1002E or FNA1002E are not allowed to take FNA1002X.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FNA1006", + "title": "Accounting Information Systems", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA1002", + "corequisite": "" + }, + { + "moduleCode": "FNA2002", + "title": "Managerial Accounting", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH2002 or BZ3102 or BK2001", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed BK1003 or BZ1002 or BH1002 or FNA1002 or FNA1002X or FNA1002E or BH1002E or CS1304 or EC3212 or EG1422 before they are allowed to take FNA2002.", + "corequisite": "" + }, + { + "moduleCode": "FNA2004", + "title": "Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "Students who have taken CS2251 or EC3209 or EC3333 or BK2004 or BZ2004 or BH2004 are not allowed to take FNA2004.\n \n1st Year BSc (BU & RE), all BSc (RE) and Computational Finance are not allowed to take FNA2004.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed BK1003 or BZ1002 or BH1002 or FNA1002 or FNA1002X or FNA1002E or BH1002E or EC3212 or EG1422 before they are allowed to take FNA2004.", + "corequisite": "" + }, + { + "moduleCode": "FNA2111", + "title": "Personal Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "Students who have passed BZ3314 or BH2111 are not allowed to take FNA2111.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FNA3101", + "title": "Corporate Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH3101 or BZ3301 or BK3100", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA2004 or BH2004 or BZ2004 or BK2004", + "corequisite": "" + }, + { + "moduleCode": "FNA3101A", + "title": "Corporate Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH3101 or BZ3301 or BK3100 or FNA3101 or FNA3101B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA2004 or BH2004 or BZ2004 or BK2004", + "corequisite": "" + }, + { + "moduleCode": "FNA3101B", + "title": "Corporate Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH3101 or BZ3301 or BK3100 or FNA3101 or FNA3101A", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA2004 or BH2004 or BZ2004 or BK2004", + "corequisite": "" + }, + { + "moduleCode": "FNA3102", + "title": "Investment Analysis and Portfolio Management", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH3102 or BZ3302 or BK3101", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA2004 or BH2004 or BZ2004 or BK2004", + "corequisite": "" + }, + { + "moduleCode": "FNA3102A", + "title": "Investment Analysis and Portfolio Management", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH3102 or BZ3302 or BK3101 or FNA3102 or FNA3102B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA2004 or BH2004 or BZ2004 or BK2004", + "corequisite": "" + }, + { + "moduleCode": "FNA3102B", + "title": "Investment Analysis and Portfolio Management", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH3102 or BZ3302 or BK3101 or FNA3102 or FNA3102A", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA2004 or BH2004 or BZ2004 or BK2004", + "corequisite": "" + }, + { + "moduleCode": "FNA3103", + "title": "Financial Markets", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH3103 or BZ3303 or BK3102", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA2004 or BH2004 or BZ2004 or BK2004", + "corequisite": "" + }, + { + "moduleCode": "FNA3111", + "title": "Corporate Accounting And Reporting", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH3111 or BZ3101 or BK3106", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA1002", + "corequisite": "" + }, + { + "moduleCode": "FNA3112", + "title": "Managerial Planning And Control", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA2002", + "corequisite": "" + }, + { + "moduleCode": "FNA3113", + "title": "Financial Statement Analysis", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH3113 or BZ3105 or BK3105", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA1002 or FNA1002X or BH1002 or BZ1002 or BK1003 or FNA1002E or BH1002E", + "corequisite": "" + }, + { + "moduleCode": "FNA3114", + "title": "Global Financial And Accounting Issues", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA1002 or FNA1002X", + "corequisite": "" + }, + { + "moduleCode": "FNA3115", + "title": "International Financial Management", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH3115 or BZ3304 or BK3108", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA3102", + "corequisite": "" + }, + { + "moduleCode": "FNA3116", + "title": "Options And Futures", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH3116 or BZ3312 or BK3109A", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA3102", + "corequisite": "" + }, + { + "moduleCode": "FNA3117", + "title": "Bank Management", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA2004", + "corequisite": "" + }, + { + "moduleCode": "FNA3118", + "title": "Financial Risk Management", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH3118 or BZ3305", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA3101", + "corequisite": "" + }, + { + "moduleCode": "FNA3119", + "title": "Risk And Insurance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH3119 or BZ3311", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA2004 or BH2004 or BZ2004 or BK2004", + "corequisite": "" + }, + { + "moduleCode": "FNA3120", + "title": "Topics In Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Depends on specific topics offered", + "corequisite": "" + }, + { + "moduleCode": "FNA3120A", + "title": "Topics In Finance:Fixed Income Securities", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH3120A or BZ3315", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA3102", + "corequisite": "" + }, + { + "moduleCode": "FNA3120X", + "title": "Topics in Finance:selected Topics 1", + "moduleCredit": 4, + "department": "Finance and Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FNA3120Y", + "title": "Topics in Finance:selected Topics 2", + "moduleCredit": 4, + "department": "Finance and Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FNA3121", + "title": "Assurance and Attestation", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA1002, FNA2002, (Students who are not enrolled in the accounting or accounting-specialization program should seek Deans Office permission to read the module)", + "corequisite": "" + }, + { + "moduleCode": "FNA3122", + "title": "Corporate & Securities Law", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BSP1004", + "corequisite": "" + }, + { + "moduleCode": "FNA3126", + "title": "Valuation", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA2004", + "corequisite": "" + }, + { + "moduleCode": "FNA3127", + "title": "Taxation", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA1002, BSP1004", + "corequisite": "" + }, + { + "moduleCode": "FNA4111", + "title": "Research Methods In Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA3101, FNA3102 and ST1131A/ST1131/ST1232/MA2216/ST2131/ST2334/EE2003/ME2491", + "corequisite": "" + }, + { + "moduleCode": "FNA4112", + "title": "Seminars In Finance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA3101 and FNA3102", + "corequisite": "" + }, + { + "moduleCode": "FNA4112D", + "title": "SIF: Private Equity and Governance", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA1002X or FNA1002, FNA3101 and FNA3102 Additional pre-requisites may apply depending on specific modules offered.", + "corequisite": "" + }, + { + "moduleCode": "FNA4112E", + "title": "SIF: Personal Finance and Private Wealth Management", + "moduleCredit": 4, + "department": "Finance", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA3101 and ST1131A", + "corequisite": "" + }, + { + "moduleCode": "FSC4206", + "title": "Advanced Criminal Litigation – Forensics on Trial", + "moduleCredit": 5, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "LL4362V/LL5362V/LL6362V Advanced Criminal Litigation – Forensics on Trial", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM1306 Forensic Science", + "corequisite": "" + }, + { + "moduleCode": "FSC5101", + "title": "Survey of Forensic Science", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FSC5199", + "title": "Research Project in Forensic Science", + "moduleCredit": 16, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FSC5201", + "title": "Advanced CSI Techniques", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FSC5202", + "title": "Forensic Defense Science", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FSC5203", + "title": "Digital Forensic Investigation", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FSC5204", + "title": "Forensic Psychiatry and Psychology", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FSC5205", + "title": "Forensic Science in Major Cases", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FSE1201", + "title": "FS: From Canvas to Engineering Drawing", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FSE1202", + "title": "Great discoveries & inventions in the Hist of Sci & Eng", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FSE1203", + "title": "Practices of Modern Engineering", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FSP4003", + "title": "Field Service Project", + "moduleCredit": 8, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + false, + false, + false, + false + ], + "prerequisite": "Varies according to the nature of the project.", + "corequisite": "" + }, + { + "moduleCode": "FST1101", + "title": "Science and Technology of Foods", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Food Science and Technology Major", + "corequisite": "" + }, + { + "moduleCode": "FST1103", + "title": "Fundamentals of Food Engineering", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "CM1161, CM2161", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FST1101", + "corequisite": "" + }, + { + "moduleCode": "FST2102A", + "title": "Chemistry of Food Components", + "moduleCredit": 6, + "department": "Chemistry", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CM1191 and FST1101", + "corequisite": "" + }, + { + "moduleCode": "FST2102B", + "title": "Chemistry of Food Components", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "FST2102A", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FST1101 and CM1121 or CM1501", + "corequisite": "" + }, + { + "moduleCode": "FST2106", + "title": "Post Harvest Food Processing", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FST1101 and (LSM1101 or LSM1106)", + "corequisite": "" + }, + { + "moduleCode": "FST2107", + "title": "Food Analysis and Lab", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "CM2192, CM2192A, FST2102A", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FST1101 and CM1191", + "corequisite": "" + }, + { + "moduleCode": "FST2108", + "title": "Food Safety Assurance", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "FST3102", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FST2102B or (LSM1103 and LSM2103) or LSM1106", + "corequisite": "" + }, + { + "moduleCode": "FST2201", + "title": "Introduction to Human Nutrition", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM1101 or LSM1106", + "corequisite": "" + }, + { + "moduleCode": "FST2202", + "title": "Food Commodities in Costa Rica", + "moduleCredit": 6, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FST2203", + "title": "Food Commodities in Indonesia", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [], + "preclusion": "FST2202 Food Commodities in Costa Rica", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "O-Level Chemistry and O-Level Biology", + "corequisite": "" + }, + { + "moduleCode": "FST2204", + "title": "Seafood Supply Chains in Japan and Singapore", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 3, + 4 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FST2288", + "title": "Basic UROPS in Food Science & Technology I", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "FST1101 and Departmental Approval", + "corequisite": "" + }, + { + "moduleCode": "FST2289", + "title": "Basic UROPS in Food Science & Technology II", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FST1101 and Departmental Approval", + "corequisite": "" + }, + { + "moduleCode": "FST3101", + "title": "Food Microbiology & Fermentation", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FST1101, FST2102B", + "corequisite": "" + }, + { + "moduleCode": "FST3102", + "title": "Food Safety Assurance", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(FST2102A) or (LSM1103 and LSM2103)", + "corequisite": "" + }, + { + "moduleCode": "FST3103", + "title": "Advanced Food Engineering", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FST1101 and FST1103", + "corequisite": "" + }, + { + "moduleCode": "FST3104", + "title": "Food Sensory, Innovation and Packaging", + "moduleCredit": 6, + "department": "Chemistry", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "FST2102A and FST2106", + "corequisite": "" + }, + { + "moduleCode": "FST3105", + "title": "Food Product Development and Packaging", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "FST3104", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FST2102B and FST2107 and FST2108", + "corequisite": "" + }, + { + "moduleCode": "FST3106", + "title": "Sensory and Flavour Science", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "FST3104, FST4101", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FST2102B", + "corequisite": "" + }, + { + "moduleCode": "FST3181", + "title": "Professional Placement", + "moduleCredit": 12, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Food Science & Technology Major", + "corequisite": "" + }, + { + "moduleCode": "FST3201", + "title": "Independent Study (Food Science & Tech)", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Food Science & Technology Major", + "corequisite": "" + }, + { + "moduleCode": "FST3202", + "title": "Nutrition and Disease Prevention", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FST2201", + "corequisite": "" + }, + { + "moduleCode": "FST3203", + "title": "Vitamins & Minerals in Health & Diseases", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2101. For those without LSM2101, pass in GCE 'A' level or H2 equivalent Biology and Chemistry by permission.", + "corequisite": "" + }, + { + "moduleCode": "FST3288", + "title": "Advanced UROPS in Food Science & Technology I", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "By permission.", + "corequisite": "" + }, + { + "moduleCode": "FST3289", + "title": "Advanced UROPS in Food Science & Technology II", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "FST3288, and by permission.", + "corequisite": "" + }, + { + "moduleCode": "FST3310", + "title": "Undergraduate Professional Internship Programme", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 3, + 4 + ], + "preclusion": "XX3310 modules offered in Science, where XX stands for the subject prefix of the respective major.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed 3 regular semesters of study, having declared Food Science and Technology as first major and have completed a minimum of 32 MCs in Food Science and Technology major at the time of application.", + "corequisite": "" + }, + { + "moduleCode": "FST3311", + "title": "Undergraduate Professional Internship Programme", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 3, + 4 + ], + "preclusion": "XX3311 modules offered in Science, where XX stands for the subject prefix for the respective major.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed 3 regular semesters of study, having declared Food Science and Technology as first major and have completed a minimum of 32 MCs in Food Science and Technology major at the time of application.", + "corequisite": "" + }, + { + "moduleCode": "FST4101", + "title": "Flavour Science", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FST3104", + "corequisite": "" + }, + { + "moduleCode": "FST4102", + "title": "Advanced Food Processing Technology", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FST3103", + "corequisite": "" + }, + { + "moduleCode": "FST4103", + "title": "Food Colloids and Components Science", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FST3105 and FST3106", + "corequisite": "" + }, + { + "moduleCode": "FST4199", + "title": "Honours Project in Food Science & Tech", + "moduleCredit": 16, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "For Cohort 2011 and before- At least an overall CAP of 3.50, on fulfillment of 100MC or more; and major requirements under the B.Appl.Sc. programme. Food Science and Technology Major. \n\nFor Cohort 2012 and after- At least an overall CAP of 3.20, on fulfillment of 100MC or more; and major requirements under the B.Appl.Sc. (for Cohort 2012 and 2013) /B.Sc. (for Cohort 2014 and after) programme. Food Science and Technology Major.", + "corequisite": "" + }, + { + "moduleCode": "FST4201", + "title": "Current Topics ( Food Science & Tech )", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FST3102 and FST3104", + "corequisite": "" + }, + { + "moduleCode": "FST4202", + "title": "Nutritional Biochemistry", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FST3202 (or equivalent module) and either LSM2101 or LSM2211", + "corequisite": "" + }, + { + "moduleCode": "FST4203", + "title": "Food Forensics", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FST3101 and FST3102", + "corequisite": "" + }, + { + "moduleCode": "FST4299", + "title": "Applied Project in FST", + "moduleCredit": 16, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "FST4199", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must be reading the Bachelor of Science degree and have met Honours eligibility requirements for the specific major", + "corequisite": "" + }, + { + "moduleCode": "FST5198", + "title": "Advanced Food Science and Nutrition Seminar", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FST5199", + "title": "MSc research project", + "moduleCredit": 12, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FST5201", + "title": "Rheology and Textural Properties of Biomaterials", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "FST4204", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FST5202", + "title": "Advanced Food Fermentation", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FST3101 or LSM3232 or by permission", + "corequisite": "" + }, + { + "moduleCode": "FST5202A", + "title": "Modern Food Fermentation", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FST 3101 Food Enzymology and Fermentation, or LSM 3232 Microbiology, or by permission", + "corequisite": "" + }, + { + "moduleCode": "FST5203", + "title": "Advanced Food Microbiology and Safety", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FST3101 or LSM3232 or by permission”", + "corequisite": "" + }, + { + "moduleCode": "FST5203A", + "title": "Advanced Food Microbiological Analysis and Food Safety", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FST3101 or LSM3232 or by permission", + "corequisite": "" + }, + { + "moduleCode": "FST5204", + "title": "Evidence Based Functional Foods", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FST2102/2102A or CM2121, or by permission", + "corequisite": "" + }, + { + "moduleCode": "FST5205", + "title": "Frontier of Food Processing and Engineering", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FST5205A", + "title": "Frontiers of Food Processing and Engineering", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FST5225", + "title": "Advanced Current Topics in Food Science I", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "By the lecturer’s approval", + "corequisite": "By the lecturer’s approval" + }, + { + "moduleCode": "FST5226", + "title": "Advanced Current Topics in Food Science II", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "By lecturer’s approval", + "corequisite": "" + }, + { + "moduleCode": "FST5227", + "title": "Advanced Current Topics in Food Science III", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "By lecturer’s approval", + "corequisite": "" + }, + { + "moduleCode": "FST5301", + "title": "Evidence Based Functional Foods", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "FST5204", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "FST5301A", + "title": "Evidence-based Functional Foods", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FST5302", + "title": "Food, Nutrition and Health", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "FST2201 Introduction to Human Nutrition", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FST5303", + "title": "Modern Human Nutrition", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "FST5303A", + "title": "Modern Human Nutrition", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE1101E", + "title": "Geographical Journeys: Exploring World Environments", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "GEK1001", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE2101", + "title": "Methods and Practices in Geography", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "GE2225", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE2202", + "title": "Economy & Space", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE2204", + "title": "Cities in Transition", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE2206", + "title": "Geographies of Life and Death", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE2215", + "title": "Introduction to GIS", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE2218", + "title": "Leisure, Recreation and Tourism", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE2220", + "title": "Terrestrial and Coastal Environments", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE2221", + "title": "Nature and Society", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE2222", + "title": "Politics and Space", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE2226", + "title": "Southeast Asia", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE2227", + "title": "Cartography and Visualisation", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE2228", + "title": "Weather and Climate", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "GE2219", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE2229", + "title": "Water and the Environment", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "GE2219", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE2230", + "title": "Energy Futures: Environment and Sustainability", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE2231", + "title": "Introduction to Social and Cultural Geographies", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE2233", + "title": "Geospatial Analytics for Biodiversity Conservation", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE2880", + "title": "Topics in Geography I", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE3201", + "title": "The Service Economy", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE3204", + "title": "Cities and Regions: Planning for Change", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE3206", + "title": "Gender, Space & Place", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE3210", + "title": "Natural Resources: Policy and Practice", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE3216", + "title": "Applications of GIS & Remote Sensing", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GE2215", + "corequisite": "" + }, + { + "moduleCode": "GE3219", + "title": "Globalisation and the Asian Cities", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE3221", + "title": "Ecological Systems", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE3223", + "title": "Environmental Change in the Tropics", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GE2220: Terrestrial and Coastal Environments; or GE2228: Atmospheric Environments or GE2229: Water and Environment.", + "corequisite": "" + }, + { + "moduleCode": "GE3224", + "title": "Cultural Landscapes", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE3226", + "title": "Tourism Development", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE3227", + "title": "Urban Climates", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GE2228 or permission from lecturer", + "corequisite": "" + }, + { + "moduleCode": "GE3230A", + "title": "Field Studies in Geography: SE Asia", + "moduleCredit": 8, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 3 + ], + "preclusion": "GE3230", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE3231", + "title": "Natural Hazards", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE3234", + "title": "Historical Landscapes and Heritage", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE3235", + "title": "Geographies of Development", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE3236", + "title": "Transport and Communications", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE3237", + "title": "Geographies of Migration", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE3238", + "title": "GIS Design and Practices", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GE2215", + "corequisite": "" + }, + { + "moduleCode": "GE3240", + "title": "Geographical Research: Developing Ideas", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE3241", + "title": "Geographies of Social Life", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "GE2224", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE3242", + "title": "Sediments and Sedimentary Basins", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE3243", + "title": "Applied Petroleum Exploration", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GE3880A Topics in Petroleum Geoscience\nor\nGE3244 Fundamentals in Petroleum Geoscience (This is the proposed regularised module code of the existing GE3880A Topics in Petroleum Geoscience)", + "corequisite": "" + }, + { + "moduleCode": "GE3244", + "title": "Fundamentals of Petroleum Exploration", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GE3880A Topics in Petroleum Geoscience", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE3245", + "title": "Conservation & Urban Tropical Ecology in SE Asia", + "moduleCredit": 6, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "None (Preference for enrolment given to BES and Geography students, 5 slots set aside for both combined)", + "corequisite": "" + }, + { + "moduleCode": "GE3246", + "title": "Environmental Pollution", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE3247", + "title": "Worlds of Work", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE3550A", + "title": "GIS Internship Module", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "GE3550B and any other XX3550 module", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "The GISIM is for Geography majors who are taking/ intend to declare GIS minor, subject to the specific requirements of the hiring company or government agency.\n\nStudents must have completed GE2215 Introduction to Geographic Information Systems, before taking this module. Some companies may also require students to pass GE2227 and/ or GE3238.", + "corequisite": "" + }, + { + "moduleCode": "GE3550B", + "title": "Geography Internship", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "GE3550A and any other XX3550 module", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students should:\n1) have completed a minimum of 24 MCs in Geography; and\n2) have declared Geography as their major", + "corequisite": "" + }, + { + "moduleCode": "GE3551", + "title": "FASS Undergraduate Research Opportunity (UROP)", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "Students must:\nhave declared a Major, completed a minimum of 24 MCs in that Major, and have a CAP of at least 3.20.", + "corequisite": "" + }, + { + "moduleCode": "GE3880", + "title": "Topics in Geography II", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE4101", + "title": "Development of Geographic Thought", + "moduleCredit": 5, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must have completed at least 80 MCs and for GE majors only.", + "corequisite": "" + }, + { + "moduleCode": "GE4202", + "title": "Remaking the Global Economy", + "moduleCredit": 5, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "GE3880B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in GE, or 28 MCs in SN, with a minimum CAP of 3.20 or be on the Honours track. \n\n(Global Studies students) Must have read and passed GE1101E and at least one of the following modules: GE2202, GE3201 and GE3238. Completed at least 80 MCs, including 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in GE, or 28 MCs in SN, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "GE4203", + "title": "International Transport Systems", + "moduleCredit": 5, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in GE, or 28 MCs with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "GE4204", + "title": "Urban Space:Critical Perspectives", + "moduleCredit": 5, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in GE or 28 MCs in SN, with a minimum CAP of 3.20 or be on the Honours track. \n\n(Global Studies students)\nMust have read and passed GE1101E and at least one of the following modules: GE2204, GE3204 and GE3219. Completed at least 80MCs, including 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in GE or 28 MCs in SN, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "GE4207", + "title": "Coastal Management", + "moduleCredit": 5, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in GE, with a minimum CAP of 3.20 or be on the Honours track. Must have read and passed GE1101E or at least one of the following modules: GE2219, GE2220, GE2228, GE2229, GE3221 and GE3227.\n\n(BES students from both specialisations).\nCompleted 80 MCs of NUS modules before they can read any level-4000 GE modules. Do not need to complete 28 MCs of GE modules before they can read any level-4000 GE modules. Do not need a minimum CAP of 3.20 before they can read any level-4000 GE modules.\n\n(Global Studies students)\nMust have read and passed GE1101E and at least one of the following modules:\nGE2220, GE2228, GE2229, GE3221, GE3223 and GE3231 and completed at least 80MCs, including 28 MCs in GL/GL recognised non-language modules with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in GE, with a minimum CAP of 3.20 or be on the Honours track. Must have read and passed GE1101E or at least one of the following modules: GE2219, GE2220, GE2228, GE2229, GE3221 and GE3227.\n\n(BES students from both specialisations).\nCompleted 80 MCs of NUS modules before they can read any level-4000 GE modules. Do not need to complete 28 MCs of GE modules before they can read any level-4000 GE modules. Do not need a minimum CAP of 3.20 before they can read any level-4000 GE modules.", + "corequisite": "" + }, + { + "moduleCode": "GE4211", + "title": "Advanced Hydrology and Water Resources Management", + "moduleCredit": 5, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in GE, with a minimum CAP of 3.20 or be on the Honours track. Must have read and passed GE1101E or at least one of the following modules: GE2219, GE2220, GE2228, GE2229, GE3221 and GE3227.\n\n(Global Studies students).\nMust have read and passed GE1101E and at least one of the following modules: GE2220, GE2228, GE2229, and GE3221 and completed at least 80MCs, including 28 MCs in GL/GL recognised non-language modules with a minimum CAP of 3.20 or be on the Honours Track.\n\n(BES students from both specialisations).\nMust have read and passed GE1101E or at least one of the following modules: GE2219, GE2220, GE2228, GE2229, GE3221 and GE3227. Completed 80 MCs of NUS modules before they can read any level-4000 GE modules. Do not need to complete 28 MCs of GE modules before they can read any level-4000 GE modules. Do not need a minimum CAP of 3.20 before they can read any level-4000 GE modules.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in GE, with a minimum CAP of 3.20 or be on the Honours track. Must have read and passed GE1101E or at least one of the following modules: GE2219, GE2220, GE2228, GE2229, GE3221 and GE3227.\n\n(BES students from both specialisations).\nMust have read and passed GE1101E or at least one of the following modules: GE2219, GE2220, GE2228, GE2229, GE3221 and GE3227. Completed 80 MCs of NUS modules before they can read any level-4000 GE modules. Do not need to complete 28 MCs of GE modules before they can read any level-4000 GE modules. Do not need a minimum CAP of 3.20 before they can read any level-4000 GE modules.", + "corequisite": "" + }, + { + "moduleCode": "GE4212", + "title": "Environmental Modelling", + "moduleCredit": 5, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in GE with a minimum CAP of 3.20 or be on the Honours track. Must have read and passed GE1101E or at least one of the following modules: GE2219, GE2220, GE2228, GE2229, GE3221 and GE3227.\n\n(BES students from both specialisations)\nMust have read and passed GE1101E or at least one of the following modules: GE2219, GE2220, GE2228, GE2229, GE3221 and GE3227. Completed 80 MCs of NUS modules before they can read any level-4000 GE modules. Do not need to complete 28 MCs of GE modules before they can read any level-4000 GE modules. Do not need a minimum CAP of 3.20 before they can read any level-4000 GE modules.\n\n(Global Studies students)\nMust have read and passed GE1101E and at least one of the following modules: GE2220, GE2228, GE2229, GE3221, GE3223 and GE3227. Completed at least 80MCs, including 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in GE with a minimum CAP of 3.20 or be on the Honours track. Must have read and passed GE1101E or at least one of the following modules: GE2219, GE2220, GE2228, GE2229, GE3221 and GE3227.\n\n(BES students from both specialisations)\nMust have read and passed GE1101E or at least one of the following modules: GE2219, GE2220, GE2228, GE2229, GE3221 and GE3227. Completed 80 MCs of NUS modules before they can read any level-4000 GE modules. Do not need to complete 28 MCs of GE modules before they can read any level-4000 GE modules. Do not need a minimum CAP of 3.20 before they can read any level-4000 GE modules.", + "corequisite": "" + }, + { + "moduleCode": "GE4213", + "title": "Cultural Geographies", + "moduleCredit": 5, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in GE, or 28 MCs in SN with a minimum CAP of 3.20 or be on the Honours track.\n\n(Global Studies students) Must have read and passed GE1101E and at least one of the following modules: GE2206, GE3206 and GE3237. Completed at least 80MCs, including 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in GE, or 28 MCs in SN with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "GE4214", + "title": "Remote Sensing of Environment", + "moduleCredit": 5, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "To read and pass GE2215. Completed 80 MCs, including 28 MCs in GE, with a minimum CAP of 3.20 or be on the Honours track.\n\n(BES students from both specialisations)\nTo read and pass GE2215. Completed 80 MCs of NUS modules before they can read any level-4000 GE modules. Do not need to complete 28 MCs of GE modules before they can read any level-4000 GE modules. Do not need a minimum CAP of 3.20 before they can read any level-4000 GE modules.", + "corequisite": "" + }, + { + "moduleCode": "GE4217", + "title": "Political Geographies: Space and Power", + "moduleCredit": 5, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in GE, with a minimum CAP of 3.20 or be on the Honours track.\n\n(Global Studies students) Must have read and passed GE1101E and GE2222. Completed at least 80MCs, including 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in GE, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "GE4218", + "title": "Interpreting Tourism Spaces and Cultures", + "moduleCredit": 5, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in GE, with a minimum CAP of 3.20 or be on the Honours track.\n\n(Global Studies students). Completed 80MCs, including 28MCs in GE or 28MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in GE, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "GE4219", + "title": "Development and Environment in Southeast Asia", + "moduleCredit": 5, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012 onwards: Completed 80 MCs, including 28 MCs in GE, or 28 MCs in MS, or 28 MCs in SE with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2012 onwards: (BES students from both specialisations). Completed 80 MCs of NUS modules before they can read any level-4000 GE modules. Do not need to complete 28 MCs of GE modules before they can read any level-4000 GE modules. Do not need a minimum CAP of 3.20 before they can read any level-4000 GE modules.", + "corequisite": "" + }, + { + "moduleCode": "GE4220", + "title": "Field Investigation in Physical Geography", + "moduleCredit": 5, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in GE, with a minimum CAP of 3.20 or be on the Honours track.\n\n(BES students from both specialisations)\nCompleted 80 MCs of NUS modules before they can read any level-4000 GE modules. Do not need to complete 28 MCs of GE modules before they can read any level-4000 GE modules. Do not need a minimum CAP of 3.20 before they can read any level-4000 GE modules.", + "corequisite": "" + }, + { + "moduleCode": "GE4221", + "title": "Field Investigation in Human Geography", + "moduleCredit": 5, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in GE, with a minimum CAP of 3.20 or be on the Honours track.\n\n(BES students from both specialisations). \nCompleted 80 MCs of NUS modules before they can read any level-4000 GE modules. Do not need to complete 28 MCs of GE modules before they can read any level-4000 GE modules. Do not need a minimum CAP of 3.20 before they can read any level-4000 GE modules.", + "corequisite": "" + }, + { + "moduleCode": "GE4222", + "title": "Advanced Geomorphology", + "moduleCredit": 5, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in GE, with a minimum CAP of 3.20 or be on the Honours track.\n\n(BES students from both specialisations)\nCompleted 80 MCs of NUS modules before they can read any level-4000 GE modules. Do not need to complete 28 MCs of GE modules before they can read any level-4000 GE modules. Do not need a minimum CAP of 3.20 before they can read any level-4000 GE modules.", + "corequisite": "" + }, + { + "moduleCode": "GE4223", + "title": "Development of Geographic Thought", + "moduleCredit": 5, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "GE4101A", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed at least 80MCs, including 28MCs in GE, with a minimum CAP of 3.20 or be on the Honours track.\n\n(BES students from both specialisations). \nCompleted 80 MCs of NUS modules before they can read any level-4000 GE modules. Do not need to complete 28 MCs of GE modules before they can read any level-4000 GE modules. Do not need a minimum CAP of 3.20 before they can read any level-4000 GE modules.", + "corequisite": "" + }, + { + "moduleCode": "GE4224", + "title": "Applied Biogeography", + "moduleCredit": 5, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed at least 80MCs, including 28MCs in GE, with a minimum CAP of 3.20 or be on the Honours track.\n\n(BES students from both specialisations).\nCompleted 80 MCs of NUS modules before they can read any level-4000 GE modules. Do not need to complete 28 MCs of GE modules before they can read any level-4000 GE modules. Do not need a minimum CAP of 3.20 before they can read any level-4000 GE modules.", + "corequisite": "" + }, + { + "moduleCode": "GE4225", + "title": "Young People and Children: Global Perspectives", + "moduleCredit": 5, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed at least 80MCs, including 28MCs in GE, with a minimum CAP of 3.20 or be on the Honours track. \n\n(Global Studies students) \nCompleted 80MCs, including 28MCs in GE or 28MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed at least 80MCs, including 28MCs in GE, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "GE4226", + "title": "Mobile Spaces: Making Social Worlds", + "moduleCredit": 5, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed at least 80MCs, including 28MCs in GE, with a minimum CAP of 3.20 or be on the Honours track. \n\n(Global Studies students) Completed 80MCs, including 28MCs in GE or 28MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed at least 80MCs, including 28MCs in GE, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "GE4227", + "title": "Climate Change: Processes, Impact and Responses", + "moduleCredit": 5, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed at least 80MCs, including 28MCs in GE, with a minimum CAP of 3.20 or be on the Honours track.\n\n(BES students from both specialisations).\nCompleted 80 MCs of NUS modules before they can read any level-4000 GE modules. Do not need to complete 28 MCs of GE modules before they can read any level-4000 GE modules. Do not need a minimum CAP of 3.20 before they can read any level-4000 GE modules.", + "corequisite": "" + }, + { + "moduleCode": "GE4228", + "title": "Gender and the City", + "moduleCredit": 5, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in GE with a minimum CAP of 3.20 or be on the Honours track.\nGE3206.", + "corequisite": "" + }, + { + "moduleCode": "GE4229", + "title": "Earth Systems Science", + "moduleCredit": 5, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed at least 80MCs, including 28MCs in GE, with a minimum CAP of 3.20 or be on the Honours track.\n\n(BES students from both specialisations).\nCompleted 80 MCs of NUS modules before they can read any level-4000 GE modules. Do not need to complete 28 MCs of GE modules before they can read any level-4000 GE modules. Do not need a minimum CAP of 3.20 before they can read any level-4000 GE modules.", + "corequisite": "" + }, + { + "moduleCode": "GE4230", + "title": "Greater China", + "moduleCredit": 5, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed at least 80MCs, including 28MCs in GE, with a minimum CAP of 3.20 or be on the Honours track. \n\n(Global Studies students) Completed 80MCs, including 28 MCs in GE or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed at least 80MCs, including 28MCs in GE, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "GE4231", + "title": "Urban and Regional Economies", + "moduleCredit": 5, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in GE with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "GE4232", + "title": "Global Political Ecologies", + "moduleCredit": 5, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in GE with a minimum CAP of 3.20 or be on the Honours track\n\n(BES students from both specialisations).\nCompleted 80 MCs of NUS modules before they can read any level-4000 GE modules. Do not need to complete 28 MCs of GE modules before they can read any level-4000 GE modules. Do not need a minimum CAP of 3.20 before they can read any level-4000 GE modules.", + "corequisite": "" + }, + { + "moduleCode": "GE4233", + "title": "Geography in the Contemporary World", + "moduleCredit": 5, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "GE4102", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in GE, with a minimum CAP of 3.20 or be on the Honours track.\n\n(Global Studies).\nMust have read and passed GE1101E and at least one of the following modules: GE2202, GE2206, GE2220, GE2228, GE2229, GE3201, GE3206, GE3221, GE3223, GE3227, GE3231 and GE3237, Completed at least 80MCs, including 28 MCs in GL/GL recognised non-language modules with a minimum CAP of 3.20 or be on the Honours track.\n\n(BES students from both specialisations).\nCompleted 80 MCs of NUS modules before they can read any level-4000 GE modules. Do not need to complete 28 MCs of GE modules before they can read any level-4000 GE modules. Do not need a minimum CAP of 3.20 before they can read any level-4000 GE modules.", + "corequisite": "" + }, + { + "moduleCode": "GE4401", + "title": "Honours Thesis", + "moduleCredit": 15, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "GE4660", + "attributes": [ + false, + false, + false, + false, + true, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012 and before\nTo read and pass GE3240. Completed 110 MCs including 60 MCs of GE requirements with a minimum CAP of 3.50.\n\nCohort 2013-2015\nTo read and pass GE3240. Completed 110 MCs including 60 MCs of GE requirements with a minimum SJAP of 4.00 and CAP of 3.50. Students may seek a waiver of the SJAP pre-requisite from the department if they have a minimum CAP of 4.25 after completing 110 MCs.\n\nCohort 2016 onwards\nTo read and pass GE3240. Completed 110 MCs including 44 MCs of GE requirements with a minimum SJAP of 4.00 and CAP of 3.50. Students may seek a waiver of the SJAP pre-requisite from the department if they have a minimum CAP of 4.25 after completing 110 MCs.\n\nCohort 2012 onwards: (BES NVG students)\nTo read and pass GE3240. Completed 80 MCs of NUS modules before they can read any level-4000 GE modules. Do not need to complete 28 MCs of GE modules before they can read any level-4000 GE modules. Do not need a minimum CAP of 3.20 before they can read any level-4000 GE modules.", + "corequisite": "" + }, + { + "moduleCode": "GE4660", + "title": "Independent Study", + "moduleCredit": 5, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "GE4401", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012-2015:\nCompleted 100 MCs, including 60 MCs in GE, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nCompleted 100 MCs, including 44 MCs in GE, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "GE4880", + "title": "Topics in Geography III", + "moduleCredit": 5, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012 onwards:\nCompleted 80 MCs, including 28 MCs in GE, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2012 onwards: (BES students from both specialisations)\nCompleted 80 MCs of NUS modules before they can read any level-4000 GE modules. Do not need to complete 28 MCs of GE modules before they can read any level-4000 GE modules. Do not need a minimum CAP of 3.20 before they can read any level-4000 GE modules.", + "corequisite": "" + }, + { + "moduleCode": "GE5211", + "title": "Dynamic Environments", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE5212", + "title": "Cities and Global Connections", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE5213", + "title": "Tourism Impacts and Management", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE5214", + "title": "Landscapes of Southeast Asia", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "SE5221", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE5215", + "title": "The Politics of Environment in Se Asia", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "SE5294", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE5216", + "title": "Geography and Social Theory", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE5217", + "title": "Research Methods in Environmental Sciences", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "GE6215", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE5218", + "title": "Research Methods in Human Geography", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE5219", + "title": "Spatial Programming", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GE5223 Introduction to Applied GIS or with Lecturer’s consent", + "corequisite": "" + }, + { + "moduleCode": "GE5223", + "title": "Introduction to Applied GIS", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "Students with prior GIS training should consult with the lecturer in charge to decide if the module is suitable.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE5225", + "title": "Thesis Planning and Implementation", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE5226", + "title": "GIS Applications", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE5227", + "title": "Internet GIS", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE5228", + "title": "Spatial Big Data and Analytics", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE5660", + "title": "Independent Study", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE5880", + "title": "Topics in Geography I", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE6211", + "title": "Spatial Data Handling", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE6212", + "title": "Mapping Global Economic Change", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE6213", + "title": "Tourism Geographies", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE6221", + "title": "Discussing Human‐Environment Interactions", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE6222", + "title": "Transnationalism and Society: Comparative Spaces", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE6223", + "title": "Navigating the Boundaries Between Science and Policy", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE6224", + "title": "Political Geography", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE6225", + "title": "GIS Research Thesis", + "moduleCredit": 12, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GE5223, GE5219, GE6211, GE5225", + "corequisite": "" + }, + { + "moduleCode": "GE6226", + "title": "GIS Research Project", + "moduleCredit": 8, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GE5223, GE5219, GE6211, GE5226", + "corequisite": "" + }, + { + "moduleCode": "GE6660", + "title": "Independent Study", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE6770", + "title": "Graduate Research Seminar", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GE6880", + "title": "Topics in Geography II", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1000", + "title": "Exp Cultural Diversty In ASEAN", + "moduleCredit": 4, + "department": "Human Resource Management", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "GEK2014", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1001", + "title": "Globalisation and New Media", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "GEM1036", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1002", + "title": "Economic Issues in Dev World", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "GEM1018K, GEK1018", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1004", + "title": "Chinese Heritage: Hist & Lit", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "GEK1007", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1005", + "title": "Crime Fiction in Eng & Chinese", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "GEK1021", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1006", + "title": "Chinese Music, Language and Literature (in English)", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "GEK1053", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1007", + "title": "Asian Cinema: The Silent Era", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEM1049", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1008", + "title": "Nations & Nat'lisms in S Asia", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEK1035", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1009", + "title": "Framing Bollywood: Unpacking The Magic", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "GEM1050", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1010", + "title": "Beasts, People and Wild Environments in South Asia", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "GEM1913", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1011", + "title": "Film and History", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "HY2243 and GEM2005", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1013", + "title": "Pirates, Oceans and the Maritime World", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "GEK2049", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1014", + "title": "Samurai, Geisha, Yakuza as Self or Other", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "GEK2022", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1015", + "title": "Cultural Borrowing: Japan and China", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "GEK2042", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1016", + "title": "Understanding Consumption", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "GEM1047", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1017", + "title": "Computation & Machine: Ancient to Modern", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "GEK1536", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1018", + "title": "A Brief History of Science", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "GEK1539", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1019", + "title": "Food & Health", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "GEK1529 and GEM1908", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1020", + "title": "Our Atmosphere: A Chemical Perspective", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [], + "preclusion": "GEK1535", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1021", + "title": "Rethinking Technology, Orgns And People", + "moduleCredit": 4, + "department": "Human Resource Management", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "GEK1013", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1022", + "title": "Geopolitics:Geographies of War & Peace", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "GEK1022", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1023", + "title": "Exploring Chinese Cinema: Shanghai‐Hong Kong‐Singapore", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "GEK2047, CH2297", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1024", + "title": "International Relations of Asia", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEM1048", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1025", + "title": "Global Environmental Issues", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "GEK1522", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1025T", + "title": "Global Environmental Issues", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2, + 3 + ], + "preclusion": "GEK1522, GEK1522T, GEH1025", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1026", + "title": "Drugs and Society", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "GEK2506", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1027", + "title": "Einstein's Universe & Quantum Weirdness", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "GEK1508", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1028", + "title": "The Emerging Nanoworld", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "GEK1509", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1029", + "title": "Great Ideas in Contemporary Physics", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "GEK1510", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1030", + "title": "Science of Music", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "GEK1519", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1031", + "title": "Understanding the Universe", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "GEK1520", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1032", + "title": "Modern Technology in Medicine and Health", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "GEK1540", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1033", + "title": "How the Ocean Works", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "GEK1548,GEK1548FC", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1034", + "title": "Clean Energy and Storage", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "GEM1535", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1035", + "title": "Phy'cal Qns from Everyday Life", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "GEM2507", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1036", + "title": "Living with Mathematics", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "GEK1505", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1039", + "title": "The Art of Rituals and Recreation", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "GEM2022, MUL3203", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1040", + "title": "Exploration in Musical Production", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "GEK1065", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1041", + "title": "Engaging the natural environment in ASEAN", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEK1066", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1042", + "title": "The Search for Life on Other Worlds", + "moduleCredit": 4, + "department": "Biochemistry", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "GEK1537", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1043", + "title": "Microbes which Changed Human History", + "moduleCredit": 4, + "department": "Microbiology and Immunology", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "GEK1534", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1044", + "title": "Understanding Globalisation", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "GEK1041", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1045", + "title": "World Religions", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "GEK1045", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1046", + "title": "Visual images", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEK1056", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1047", + "title": "Social and Cultural Studies through Music", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "GEK1054", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1048", + "title": "Technology and Artistic Innovators", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "GEM2021, MUL3202", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1049", + "title": "Public Health in Action", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1, + 2 + ], + "preclusion": "GEK1900", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1050", + "title": "Plants and Society", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "GEK1538", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1051", + "title": "Narrative", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEK1049", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1052", + "title": "Standard English Across Cultures", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEK1059", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1053", + "title": "Film Art and Human Concerns", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "GEK2020", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1054", + "title": "Names as Markers of Socio-cultural Identity", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "GEM1031", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1055", + "title": "Religion and Film", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "GEM1033", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1056", + "title": "Cultural Diversity in the Contemporary World", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "GEK1005", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1057", + "title": "Materials: The Enabling Substance of Civilization", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1058", + "title": "The Theatre Experience", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "GEK1055", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1059", + "title": "Living in the Nuclear World", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1060", + "title": "Social History of the Piano", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1061", + "title": "Representation and Media", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1062", + "title": "Ghosts and Spirits in Society and Culture", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1063", + "title": "Understanding Body, Mind and Culture through Sport", + "moduleCredit": 4, + "department": "Physiology", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1064", + "title": "Imagining War", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1065", + "title": "Art in Society", + "moduleCredit": 4, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1066", + "title": "Art Movements and -isms", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1067", + "title": "Superhero Entertainments", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1068", + "title": "The Life Aquatic: Machines and the Making of the Ocean", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1069", + "title": "Art in Asia: Through Media, Style, Space and Time", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1070", + "title": "Traditional Chinese Knowledge of Health and Well-being", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1071", + "title": "Religion in Malay-Indonesian Literary Worlds", + "moduleCredit": 4, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1072", + "title": "Culture in Action", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1073", + "title": "The Art of Chinese Poetry: Past and Present", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1074", + "title": "Luck", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1075", + "title": "Life, Disrupted: The Sharing Revolution", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1076", + "title": "Worlds of Football", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1077", + "title": "Metropolis: The City in World History", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1078", + "title": "Heroes of China", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEH1079", + "title": "Whatever it takes? Making War on Civilians", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1000", + "title": "An Introduction to Literary Studies", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EN1101E. Students who are majoring in EN, or intend to major in EN should not take GEK1000.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Exempted from NUS Qualifying English Test, or passed NUS Qualifying\nEnglish Test, or exempted from further CELC Remedial English modules.", + "corequisite": "" + }, + { + "moduleCode": "GEK1001", + "title": "Geographical Journeys: Exploring World Environments", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GE1101E. Not for students majoring or intend to major in GE.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1002", + "title": "Introduction to Japan", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "JS1101E. Students majoring in JS are precluded from taking\nthis module.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1003", + "title": "Introduction to Politics", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PS1101, GEM1003K, PS1101E. Not for students majoring in PS", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1005", + "title": "Cultural Diversity in the Contemporary World", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEH1056", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1007", + "title": "Chinese Heritage: History and Literature", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEH1004", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1008", + "title": "Southeast Asia: A Changing Region", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "SE1101E, SSA1202, SS1203SE and GEM1008K. Not for students majoring, or intend to major in SE.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1010", + "title": "Property Management", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "Not for Real Estate Students", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1010T", + "title": "Property Management", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "Not for Real Estate students", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1011", + "title": "The Nature of Language", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EL1101E", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Exempted from NUS Qualifying English Test, or passed NUS Qualifying English Test, or exempted from further CELC Remedial English modules.", + "corequisite": "" + }, + { + "moduleCode": "GEK1012", + "title": "Contemporary Social Issues in Singapore", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GES1016", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1013", + "title": "Rethinking Technology, Orgns And People", + "moduleCredit": 4, + "department": "Human Resource Management", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "GEH1021", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1014", + "title": "Understanding Emotions In Interactive Processes", + "moduleCredit": 4, + "department": "Human Resource Management", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "Students who have read or are reading HR2002 or HR2101A or HR3111A or HR2102 are not allowed to take GEK1014.\n\n- All SoC students matriculated in 1999 or earlier.\n\n- All Science students matriculated in 2000 or earlier\n\n- All FASS students matriculated in 2001 or earlier.\n\n- All Engineering students.\n\n- All SDE students except Industrial Design students from 2002-cohort onwards.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students who have read or are reading HR2002 or HR2101A or HR3111A or HR2102 are not allowed to take GEK1014.\n\n- All SoC students matriculated in 1999 or earlier.\n\n- All Science students matriculated in 2000 or earlier\n\n- All FASS students matriculated in 2001 or earlier.\n\n- All Engineering students.\n\n- All SDE students except Industrial Design students from 2002-cohort onwards.", + "corequisite": "" + }, + { + "moduleCode": "GEK1018", + "title": "Economic Issues in the Developing World", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEH1002", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1020", + "title": "Ethics at Work: Rhyme, Reason and Reality", + "moduleCredit": 4, + "department": "Human Resource Management", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "GET1000", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1021", + "title": "Crime Fiction in English & Chinese", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEH1005", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1022", + "title": "Geopolitics:Geographies of War & Peace", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEH1022", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1026", + "title": "The Horror of the Other", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1029", + "title": "Managing Change: Power & Paradox", + "moduleCredit": 4, + "department": "Human Resource Management", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BZ3503 - Managing Change Processes", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1029T", + "title": "Managing Change: Power & Paradox", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "MNO3313A", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1030", + "title": "Service Work: Winning Hearts & Minds", + "moduleCredit": 4, + "department": "Human Resource Management", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1035", + "title": "Nations & Nationalisms in South Asia", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEH1008", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1037", + "title": "Seeing the World Through Maps", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GET1001", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1039", + "title": "Understanding Careers", + "moduleCredit": 4, + "department": "Human Resource Management", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1041", + "title": "Understanding Globalisation", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEH1044", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1042", + "title": "Intellectual Property In Cyberspace", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "GET1007", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1045", + "title": "World Religions", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEH1045", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1046", + "title": "Introduction to Cultural Studies", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1047", + "title": "Organisational Power And Culture", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1048", + "title": "Maverick or Mahatma? Gandhi’s Life & Legacy", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GET1009", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1049", + "title": "Narrative", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEH1051", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1050", + "title": "Space And Health", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1053", + "title": "Chinese Music, Language and Literature (in English)", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEH1006", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1054", + "title": "Social and Cultural Studies through Music", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "GEH1047", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1055", + "title": "The Theatre Experience", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEH1058", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1056", + "title": "Visual images", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEH1046", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1059", + "title": "Standard English Across Cultures", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEH1052", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1062", + "title": "Bridging East and West: Exploring Chinese Communication", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GET1002", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1064", + "title": "Psychology in Everyday Life", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PLB1201 and PL1101E.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1065", + "title": "Exploration in Musical Production", + "moduleCredit": 4, + "department": "Office of Student Affairs", + "faculty": "NUS", + "semester": [], + "preclusion": "GEH1040", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1066", + "title": "Engaging the natural environment in ASEAN", + "moduleCredit": 4, + "department": "Office of Student Affairs", + "faculty": "NUS", + "semester": [], + "preclusion": "GEH1041", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1067", + "title": "Life, the Universe, and Everything", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PH1102E, GET1029", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1500", + "title": "Inside Your Personal Computer", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "To preclude all FoE, CEG and SoC students.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1501", + "title": "Information Technology And Us", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "To preclude all Facultyof Engineering, Computer Engineering (CEG) & School of Computing students", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1505", + "title": "Living with Mathematics", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "GEH1036.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1508", + "title": "Einstein's Universe & Quantum Weirdness", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "PC1325, GEH1027", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1509", + "title": "The Emerging Nanoworld", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "GEH1028", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1510", + "title": "Great Ideas in Contemporary Physics", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "GEH1029", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1512", + "title": "Understanding How The Internet Works", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "To preclude Electrical Engineering, Computer Engineering (CPE & CEG) and School of Computing students", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1513", + "title": "Wireless Communications - Past, Present And Future", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "To preclude Electrical Engineering, Computer Engineering and School of Computing students (except EE1, CPE1, CEG1, CEC1, COM1) and students who have read IT2001.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "basic knowledge of mathematics and physics at the GCE O-level.", + "corequisite": "" + }, + { + "moduleCode": "GEK1514", + "title": "Microelectronics Revolution - From Sand To IC", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "Students who have read EE2021 or EE3431C are not allowed to read this module.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1517", + "title": "Mathematical Thinking", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "GET1017", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1519", + "title": "Science of Music", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "PC1327, GEH1030", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1520", + "title": "Understanding the Universe", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "GEH1031. Students majoring in Physics are not allowed to take this module.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1521", + "title": "Physics in the Life Sciences", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "GET1013. Students majoring in Physics are not allowed to take this module", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1522", + "title": "Global Environmental Issues", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "GEH1025", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1522T", + "title": "Global Environmental Issues", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2, + 3 + ], + "preclusion": "GEK1522, GEH1025, GEH1025T", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1523T", + "title": "Innovativeness In Engineering Design", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1529", + "title": "Food & Health", + "moduleCredit": 4, + "department": "Food Science and Technology", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "GEH1019 and GEM1908", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1531", + "title": "Cyber Security", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "GET1004", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1534", + "title": "Microbes which Changed Human History", + "moduleCredit": 4, + "department": "Microbiology and Immunology", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "GEH1043", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1535", + "title": "Our Atmosphere: A Chemical Perspective", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [], + "preclusion": "GEH1020", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Available to all students", + "corequisite": "" + }, + { + "moduleCode": "GEK1536", + "title": "Computation & Machine: Ancient to Modern", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "GEH1017", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1537", + "title": "The Search for Life on Other Worlds", + "moduleCredit": 4, + "department": "Biochemistry", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "GEH1042", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1539", + "title": "A Brief History of Science", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "GEH1018", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1540", + "title": "Modern Technology in Medicine and Health", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "GEH1032", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1544", + "title": "The Mathematics of Games", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "GET1018.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1547", + "title": "The Art of Science, the Science of Art", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "GET1014", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1548", + "title": "How the Ocean Works", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "GEH1033", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK1549", + "title": "Critical Thinking And Writing", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "1. IEM1201%, UTW1001%, ES1531, GEK1549 and GET1021. \n2. U-town students cannot select ES2531.\n3. ES1601 and ES1601A Professional and Academic Communication.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "1. Students who are required to take ES1000 Foundation Academic English and/or ES1103 English for Academic Purposes must pass the modules before they are allowed to read this module. \n2. Students who matriculated in AY2014/15 and AY2015/16 are to read the cross-listed modules, GEK1549 and GET1021, respectively.", + "corequisite": "" + }, + { + "moduleCode": "GEK1900", + "title": "Public Health in Action", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 2 + ], + "preclusion": "GEH1049", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2000", + "title": "The U.S.: From Settlement to Superpower", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "AS2237, HY2237. GEK2000 is not for students majoring in HY.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2001", + "title": "Changing Landscapes of Singapore", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "SSA2202, GES1003", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2002", + "title": "Philosophy of Art", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2003", + "title": "Government and Politics of Singapore", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "PS1102, GEM2003K, SS2209PS, PS2101B, SSA2209, PS2101, PS2249. Not for students majoring in PS.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2005", + "title": "Urban Planning in Singapore", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "Not for Real Estate students and first year students and GES1026", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2008", + "title": "Environmental History", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "HY2235. GEK2008 is not for students majoring in HY.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2010", + "title": "Foreign Policy and Diplomacy", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PS2209, GEM2010K, PS2209B, PS2239. Not for students majoring in PS", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2012", + "title": "Public Administration in Asia", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PS2206, GEM2012K, PS2211B, PS2241. Not for students majoring in PS", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2013", + "title": "Real Estate Finance", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "Not for Real Estate students", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2014", + "title": "Exploring Cultural Diversity In ASEAN", + "moduleCredit": 4, + "department": "Human Resource Management", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "GEH1000", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2018", + "title": "Identity and Western Literature", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2020", + "title": "Film Art and Human Concerns", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEH1053", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2022", + "title": "Samurai, Geisha, Yakuza as Self or Other", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEH1014", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2023", + "title": "Technology For Better Social Habitats", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2024", + "title": "Political Ideologies", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PS2233", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2025", + "title": "Politics of the Middle East", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "PS2255", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2027", + "title": "Introduction to Indian Thought", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PH2204, SN2273", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2028", + "title": "Founders of Modern Philosophy", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PH2206", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2029", + "title": "Applied Ethics", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PH2208", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2030", + "title": "Introduction to Continental Philosophy", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PH2212, EU2214", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2031", + "title": "Environmental Philosophy", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PH2216, UPI2205", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2033", + "title": "Business Ethics", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PH2218", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2034", + "title": "Social Philosophy and Policy", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PH2220", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2035", + "title": "Medical Ethics", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PH2208, PH2221", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2036", + "title": "Greek Philosophy (Socrates and Plato)", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PH2222, PH3209", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2037", + "title": "Introduction to the Philosophy of Technology", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PH2223", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2038", + "title": "Classical Chinese Philosophy I", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PH2301, PH2205", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2039", + "title": "Chinese Philosophical Traditions I", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PH2302", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2040", + "title": "Philosophy and Film", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PH2224, PH2880A", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2041", + "title": "Science Fiction and Philosophy", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PH2225, GET1025", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2042", + "title": "Cultural Borrowing: Japan and China", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEH1015", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2043", + "title": "Politics on Screen", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PS2256", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2044", + "title": "Reading Visual Images", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "AR2225", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2045", + "title": "History & Theory Of Modern Architecture", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2047", + "title": "Exploring Chinese Cinema: Shanghai-Hong Kong-Singapore", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "CH2297, GEH1023", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2048", + "title": "Effective Reasoning", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PH2111, GET1026", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2049", + "title": "Pirates, Oceans and the Maritime World", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "GEH1013", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2050", + "title": "Computers and the Humanities", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GET1030", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2501", + "title": "Understanding your Medications", + "moduleCredit": 4, + "department": "Pharmacology", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "Preclusion(s): Medical, Dental, Pharmacy, Nursing and all 1st year students are precluded. Life Science students who have taken LSM3211 are also precluded. Life Science students who have taken GEK2501 will not be allowed to do LSM3211", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Open only to 2nd, 3rd and 4th year students", + "corequisite": "" + }, + { + "moduleCode": "GEK2502", + "title": "Environmental Science and Technology", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2503", + "title": "Remote Sensing for Earth Observation", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2505", + "title": "Introductory Biomedical Engineering", + "moduleCredit": 2, + "department": "Biomedical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "For students from other departments except Division of Bioengineering and students doing Minor in Bioengineering", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2506", + "title": "Drugs and Society", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "GEH1026", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK2508", + "title": "Sky and Telescopes", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "A-Level Physics or\nUnderstanding the Universe (GEK1520/PC1322) or\nEinstein’s Universe & Quantum Weirdness (GEK1508/PC1325)", + "corequisite": "" + }, + { + "moduleCode": "GEK3005", + "title": "Politics and the Visual", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PS3260", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK3006", + "title": "Human Rights in International Politics", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PS3252", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEK3007", + "title": "Politics, Music and Society", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PS3266", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1003", + "title": "Introduction to Theatre and Performance", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "TS1101E", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Exempted from NUS Qualifying English Test, or passed NUS\nQualifying English Test, or exempted from further CELC Remedial English modules.", + "corequisite": "" + }, + { + "moduleCode": "GEM1004", + "title": "Reason and Persuasion", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GET1027", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1006", + "title": "Study of Movement Aesthetics", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1008", + "title": "Evaluating Academic Arguments", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [], + "preclusion": "GET1005", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1010K", + "title": "Property Management", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1016K", + "title": "History of Modern Architecture", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1020K", + "title": "Ethics At Work : Rhyme,reason & Reality", + "moduleCredit": 4, + "department": "Human Resource Management", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1029", + "title": "Patrons of the Arts", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "MUL2102, GET1019", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1030", + "title": "Art and Identity", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "MUL3201, GEH1038", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1031", + "title": "Names as Markers of Socio-cultural Identity", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEH1054", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1033", + "title": "Religion and Film", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEH1055", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1035", + "title": "Jr Sem: Generation Y: Transitions to Adulthood", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [], + "preclusion": "UTC1402", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1036", + "title": "Globalisation and New Media", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEH1001", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1046", + "title": "Home", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GET1003", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1047", + "title": "Understanding Consumption", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEH1016", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1048", + "title": "International Relations of Asia", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEH1024", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1049", + "title": "Asian Cinema: The Silent Era", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEH1007", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1050", + "title": "Framing Bollywood: Unpacking The Magic", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEH1009", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1051", + "title": "Ethnicity and Nation-Building: Singapore and Malaysia", + "moduleCredit": 4, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GES1008", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1052", + "title": "Understanding the Changing Global Economic Landscape", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GET1016", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1052T", + "title": "Understanding The Changing Global Economic Landscape", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "GEM1052, GET1016, GET1016T", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1500K", + "title": "Inside Your Personal Computer", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1505A", + "title": "Engineering by Design - Devices and Systems", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1505B", + "title": "Engineering by Design - Electrical Systems", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1505C", + "title": "Engineering by Design - Forms & Structures", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1505D", + "title": "Engineering by Design - Biomimetic Systems", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1535", + "title": "Clean Energy and Storage", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "GEH1034", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1536", + "title": "Darwin and Evolution", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "GEM1902B Junior Seminar: The Darwinian Revolution\nGET1020", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1537", + "title": "Nanotechnology-Smart Phone and Beyond", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1902", + "title": "Junior Seminar", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1902% or GEM1912% or UTC11%", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1902B", + "title": "Junior Seminar: The Darwinian Revolution", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1902% or GEM1912% or UTC11% or GEM1536 or GET1020", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1902M", + "title": "Junior Seminar: On Blindness", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1902% or GEM1912% or UTC11%", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1904", + "title": "Jr Sem: Hidden Communities", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [], + "preclusion": "UTC1403", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1905", + "title": "Jr Sem: Power and Ideas", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [], + "preclusion": "UTC1404", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1909", + "title": "Jr Sem: Technology and Human Progress", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [], + "preclusion": "UTC1408", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1910", + "title": "Jr Sem: The Pursuit of Happiness", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [], + "preclusion": "UTC1409\nUQF2101J", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1911", + "title": "Jr Sem: Special Topics", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [], + "preclusion": "UTC1410", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1912", + "title": "Jr Sem : Special Topics", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1902% or GEM1912% or UTC11%", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1912B", + "title": "Jr Sem Special Topics: Quality Journalism and Critical Reading", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1902% or GEM1912% or UTC11%", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1913", + "title": "Beasts, People and Wild Environments in South Asia", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEH1010", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1914", + "title": "Jnr Sem: Systems Systems Everywhere", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1915%, GEM1918, GEM1919, GET1011, UTC1411, UTC1700, UTC1701", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1917", + "title": "Understanding and Critiquing Sustainability", + "moduleCredit": 4, + "department": "Ridge View Residential College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEQ1917 (twin-code)", + "attributes": [ + true, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1918", + "title": "Thinking in Systems: Ecosystems and Natural Resources", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1914 or GEM1915% or GEM1918 or GEM1919 or GET1011 or UTC1411 or UTC1702% or UTC1701 or UTC1700", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM1919", + "title": "Thinking in Systems: Diseases and Healthcare", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1914 or GEM1915% or GEM1918 or GEM1919 or GET1011 or UTC1411 or UTC1702% or UTC1701 or UTC1700", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM2000", + "title": "Foundations of Real Estate Appraisal", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "All School of Design and Environment students are not allowed to read it as a GEM.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM2004K", + "title": "History & Theory Of Industrial Design", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM2005", + "title": "Film and History", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "HY2243, GEH1011", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM2006", + "title": "Logic", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PH2110, CS3234, MA4207, GET1028", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM2007K", + "title": "East Asia", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM2021", + "title": "Technology and Artistic Innovators", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "MUL3202 GEH1048", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM2022", + "title": "The Art of Rituals and Recreation", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "MUL3203, GEH1039", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM2025", + "title": "Introduction to Philosophy Of Science", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PH2201", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM2026", + "title": "Film Genres: Stars and Styles", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "TS2243. Students who are majoring in TS, or intend to major in TS should not take\nGEM2026.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM2027", + "title": "Public Speaking and Critical Reasoning", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "GET1008", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM2028", + "title": "Citizenship in a Changing World", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM2028X", + "title": "Citizenship in a Changing World", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM2028\nSSU2007%\nUTC2403\nUTS2403", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM2501", + "title": "Electric Energy - Powering The New Millenium", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "All FoE & CEG students are not allowed to read this module.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Basic knowledge of mathematics and physics at GCE O level", + "corequisite": "" + }, + { + "moduleCode": "GEM2502", + "title": "Modes Of Invention", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "GET1010", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM2503", + "title": "Thinking Science on Computer", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "GET1012", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM2505", + "title": "Taming Chaos", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "GET1015", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM2507", + "title": "Physical Questions from Everyday Life", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "GEH1035", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM2900", + "title": "Understand'g Uncertainty & Stats Think'g", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "Not for Statistics Major students", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM2901", + "title": "Reporting Statistics in the Media", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM2903", + "title": "Community Leadership", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [], + "preclusion": "This module is currently open only to students of the College of Alice & Peter Tan, University Town", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM2903X", + "title": "Community Leadership", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM2903\nUTC2400", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM2905X", + "title": "Singapore as ‘Model’ City?", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM2902% or GEM2905% or GEM2907% or GEM2908% or GEM2909% or GEM2910% or UTC21% or UTS2105 or SSU2004%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1902% or GEM1912% or UTC11%", + "corequisite": "" + }, + { + "moduleCode": "GEM2906", + "title": "Environment and Civil Society in Singapore", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [], + "preclusion": "This module is currently open only to students of the College of Alice & Peter Tan, University Town", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM2906X", + "title": "Environment and Civil Society in Singapore", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM2906\nSSU2005%\nUTC2402\nUTS2402", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM2907X", + "title": "Senior Seminar: Negotiating in a Complex World", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM2902% or GEM2905% or GEM2907% or GEM2908% or GEM2909% or GEM2910% or UTC21%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1902% or GEM1912% or UTC11%", + "corequisite": "" + }, + { + "moduleCode": "GEM2908X", + "title": "Senior Seminar: Technology and the Fate of Knowledge", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM2902% or GEM2905% or GEM2907% or GEM2908% or GEM2909% or GEM2910% or UTC21%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1902% or GEM1912% or UTC11%", + "corequisite": "" + }, + { + "moduleCode": "GEM2911", + "title": "Committed to Changing Our World: Dana Meadows’ Legacy", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [], + "preclusion": "UTC27% or GEM2911X", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1918 or GEM1919 or UTC1700 or UTC1701 or UTC1702%", + "corequisite": "" + }, + { + "moduleCode": "GEM2911X", + "title": "Committed to Changing Our World: Dana Meadows’ Legacy", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [], + "preclusion": "UTC27% or GEM2911", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1918 or GEM1919 or UTC1700 or UTC1701 or UTC1702%", + "corequisite": "" + }, + { + "moduleCode": "GEM3002", + "title": "Global Cities and Local Cultures", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM3003", + "title": "Literature and the other Arts", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EN3246", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(i) EN1101E or GEK1000, AND (ii) at least one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207)", + "corequisite": "So long as students have fulfilled EN1101E/GEK1000, they may take this EN level-3000 module in the same semester as they are taking one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207)." + }, + { + "moduleCode": "GEM3881", + "title": "Gem B", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM3902", + "title": "Independent Study", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [], + "preclusion": "UTC3400", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEM3903", + "title": "CAPT Undergraduate Research Opportunity (UROP)", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [], + "preclusion": "This module is currently open only to students of the College of Alice & Peter Tan, University Town", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEQ1000", + "title": "Asking Questions", + "moduleCredit": 4, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "GEQ1000H, GEQ1000E, GEQ1000K, GEQ1000W, GEQ1000R, GEQ1000S, GEQ1000T, GEQ1000P", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEQ1000H", + "title": "Asking Questions", + "moduleCredit": 4, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [ + 2 + ], + "preclusion": "GEQ1000, GEQ1000E, GEQ1000K, GEQ1000W, GEQ1000R, GEQ1000S, GEQ1000T, GEQ1000P", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "To be read by students from halls – Eusoff, Kent Ridge, King Edward, Raffles, Sheares, Temasek, PGPH", + "corequisite": "" + }, + { + "moduleCode": "GEQ1000X", + "title": "Asking Questions", + "moduleCredit": 4, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [], + "preclusion": "GEQ1000H, GEQ1000E, GEQ1000K, GEQ1000W, GEQ1000R, GEQ1000S, GEQ1000T, GEQ1000P, GEQ1000", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GEQ1917", + "title": "Understanding and Critiquing Sustainability", + "moduleCredit": 4, + "department": "Ridge View Residential College", + "faculty": "Residential College", + "semester": [ + 1, + 2 + ], + "preclusion": "GEM1917 (twin-code)", + "attributes": [ + true, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GER1000", + "title": "Quantitative Reasoning", + "moduleCredit": 4, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "GER1000E, GER1000K, GER1000W, GER1000R, GER1000S, GER1000T, GER1000P, GER1000B", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GER1000B", + "title": "Quantitative Reasoning", + "moduleCredit": 4, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [], + "preclusion": "GER1000, GER1000E, GER1000K, GER1000W, GER1000R, GER1000S, GER1000T, GER1000P", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "To be read by SCALE students reading in Special Term.", + "corequisite": "" + }, + { + "moduleCode": "GER1000H", + "title": "Quantitative Reasoning", + "moduleCredit": 4, + "department": "Office of Sr Dy Pres and Provost", + "faculty": "NUS", + "semester": [ + 1 + ], + "preclusion": "GER1000, GER1000B, GER1000E, GER1000K, GER1000W, GER1000R, GER1000S, GER1000T, GER1000P", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "To be read by students from halls – Eusoff, Kent Ridge, King Edward, Raffles, Sheares, Temasek, PGPH", + "corequisite": "" + }, + { + "moduleCode": "GES1000", + "title": "Singapore Employment Law", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "SSB1204, SSB1204T, GES1000T", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1000T", + "title": "Singapore Employment Law", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2 + ], + "preclusion": "SSB1204, SSB1204T, GES1000", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1001", + "title": "Employee Management In S'pore", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "SSB2216, SSB2216T, GES1001T", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1001T", + "title": "Employee Management In Singapore", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "MNO2302,SSB2216, SSB2216T, GES1001", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1002", + "title": "Global EC Dimensions of S'pore", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "SSA2220, SSA2220T, GES1002T", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1002T", + "title": "Global Economic Dimensions Of Singapore", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 3 + ], + "preclusion": "EC2202, EC2373, GES1002, SSA2220, SSA2220T", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1003", + "title": "Changing Landscapes of Singapore", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "GEK2001, SSA2202", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1004", + "title": "The Biophysical Env of S'pore", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "SSA2215", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1005", + "title": "Everyday Life of Chinese Singaporeans: Past & Present (taught in English)", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "SSA1208", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1006", + "title": "Singapore and India: Emerging Relations", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "SSA2214", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1007", + "title": "South Asia in Singapore", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "SSA2219", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1008", + "title": "Ethnicity and Nation-Building: Singapore and Malaysia", + "moduleCredit": 4, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "GEM1051", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1009", + "title": "Singapore’s Business History", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "HY2239 and SSA2203", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1010", + "title": "Nation-Building in Singapore", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "HY2229, USE2304 and SSA2204", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1010T", + "title": "Nation-Building in Singapore", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "HY2229, USE2304, SSA2204, GES1010", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1011", + "title": "The Evolution of a Global City-State", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "SSA2211", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1012", + "title": "Popular Culture in Singapore", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "HY2254 and SSA2221", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1013", + "title": "Singapore Urban History & Architecture", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "SSD2213", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1014", + "title": "Islam and Contemporary Malay Society", + "moduleCredit": 4, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "SSA2206, MS2205.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1015", + "title": "Singapore and Japan: Historical and Contemporary Relationships", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "SSA2205, JS2224", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1016", + "title": "Contemporary Social Issues in Singapore", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEK1012", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1017", + "title": "Building a Dynamic Singapore - Role of Engineers", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "SSE1201", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1018", + "title": "Singapore, Asia and American Power", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "SSA1203", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1019", + "title": "Managing Singapore's Built Environment", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "SSD2210", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1020", + "title": "Western Music within a Singaporean Context", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "SSY2223", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1021", + "title": "Natural Heritage of Singapore", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "SSS1207, YID3218", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1022", + "title": "The Singlish Controversy", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEK1063, SSA1209", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1023", + "title": "Representing Singapore", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "SSA1206", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1024", + "title": "Real Estate Development & Investment Law", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "SSD1203", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1025", + "title": "Singapore Literature in English: Selected Texts", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "SSA1207, SSA1207FC", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1026", + "title": "Urban Planning in Singapore", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "GEK2005", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1027", + "title": "Taxation and the Singapore Miracle", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "SSB2217", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1028", + "title": "Singapore Society", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "SSA1201", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1029", + "title": "Singapore Film: Performance of Identity", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "SSA2218, TS2238", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1030", + "title": "Singapore and the Sea", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1031", + "title": "Culture and Communication in Singapore", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1033", + "title": "Who moved my OB markers?", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1034", + "title": "We the Citizens - Understanding Singapore’s Politics", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1035", + "title": "Singapore: Imagining the Next 50 Years", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1036", + "title": "The Arts in Singapore Today", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1037", + "title": "A History of Singapore in Ten Objects", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1038", + "title": "La Kopi: Forging of the Chinese Singaporean Community", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1039", + "title": "Cultural Performances and Practices in Singapore", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1040", + "title": "Prominent Chinese in Colonial Singapore", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "CH2298 Chinese Personalities in Southeast Asia", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "2-1-0-2-5" + }, + { + "moduleCode": "GES1041", + "title": "Everyday Ethics in Singapore", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1042", + "title": "Public Health in Singapore: Challenges and Changes", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 3 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GES1043", + "title": "State of the Art: A Current View of Music in Singapore", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1000", + "title": "Ethics at Work: Rhyme, Reason and Reality", + "moduleCredit": 4, + "department": "Human Resource Management", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "GEK1020", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1001", + "title": "Seeing the World Through Maps", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEK1037", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1002", + "title": "Bridging East and West: Exploring Chinese Communication", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "GEK1062", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1003", + "title": "Home", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "GEM1046", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1004", + "title": "Cyber Security", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "GEK1531", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1005", + "title": "Evaluating Academic Arguments", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [], + "preclusion": "GEM1008", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1007", + "title": "Intellectl Ppty In Cyberspace", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "GEK1042", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1008", + "title": "Public Speaking and Critical Reasoning", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "GEM2027", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1009", + "title": "Maverick or Mahatma? Gandhi’s Life & Legacy", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "GEK1048", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1010", + "title": "Modes Of Invention", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "GEM2502", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Prerequisite of basic knowledge of physics at GCE \"O\" levels", + "corequisite": "" + }, + { + "moduleCode": "GET1011", + "title": "Towards an Understanding of the Complex World", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "GEM1912 Jnr Sem: Systems Systems Everywhere (offered at CAPT, UTown)\n\nDespite the minimal overlap, the preclusion may be needed to ensure that students who have completed GEM1912 do not have an unfair starting advantage over others who take this module.\n\nGEM1915", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1012", + "title": "Thinking Science on Computer", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "GEM2503", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1013", + "title": "Physics in the Life Sciences", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "GEK1521", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1014", + "title": "The Art of Science, the Science of Art", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "GEK1547", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1015", + "title": "Taming Chaos", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "GEM2505.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1016", + "title": "Understanding the Changing Global Economic Landscape", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "GEM1052", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1016T", + "title": "Understanding The Changing Global Economic Landscape", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2, + 3 + ], + "preclusion": "GEM1052, GET1016", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1017", + "title": "Mathematical Thinking", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "GEK1517", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1018", + "title": "The Mathematics of Games", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "GEK1544", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1019", + "title": "Patrons of the Arts", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "GEM1029, MUL2102", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1020", + "title": "Darwin and Evolution", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "GEM1902B Junior Seminar: The Darwinian Revolution. GEM1536", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1021", + "title": "Critical Thinking And Writing", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "1. IEM1201%, UTW1001%, ES1531, GEK1549 and GET1021. \n2. U-town students cannot select ES2531.\n3. ES1601 and ES1601A Professional and Academic Communication.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "1. Students who are required to take ES1000 Foundation Academic English and/or ES1103 English for Academic Purposes must pass the modules before they are allowed to read this module. \n2. Students who matriculated in AY2014/15 and AY2015/16 are to read the cross-listed modules, GEK1549 and GET1021, respectively.", + "corequisite": "" + }, + { + "moduleCode": "GET1022", + "title": "Understanding Your Brain", + "moduleCredit": 4, + "department": "Physiology", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1023", + "title": "Thinking Like An Economist", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1024", + "title": "Radiation-Scientific Understanding and Public Perception", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1025", + "title": "Science Fiction and Philosophy", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "GEK2041", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1026", + "title": "Effective Reasoning", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "GEK2048", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1027", + "title": "Reason and Persuasion", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEM1004", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1028", + "title": "Logic", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "PH2110, CS3234, MA4207, GEM2006", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1029", + "title": "Life, the Universe, and Everything", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "PH1102E, GEK1067", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1030", + "title": "Computers and the Humanities", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "GEK2050", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1031", + "title": "Computational Thinking", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "GET1031A", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1032", + "title": "Building Relationship : Theories and Practice", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1033", + "title": "Exploring Computational Media Literacy", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1034", + "title": "Communication and Critical Thinking for Community Leadership", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1035", + "title": "Critical Perspectives in Advertising", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1036", + "title": "The Logic of Language", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1037", + "title": "Big Picture History", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1038", + "title": "Communication in Small Groups", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1039", + "title": "What, When and Where is Art?", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1040", + "title": "Communicating about the Arts", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1041", + "title": "Disney and the Theme Park World", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1042", + "title": "Sky and Telescopes", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1043", + "title": "Universe, Big Bang, and Unsolved Mysteries", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1044", + "title": "Hollywood Cinema: Constructing the Realistic", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1045", + "title": "Structures of Conversation", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1046", + "title": "I Do Not Think Therefore I Am", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1047", + "title": "Art and Identity", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1048", + "title": "Science: From Thinking to Narratives", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1049", + "title": "Thinking Strategically", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GET1050", + "title": "Computational Reasoning", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "GET1031A Computational Thinking", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GL1101E", + "title": "Global Issues", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GL2101", + "title": "Origins of the Modern World", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GL1101E", + "corequisite": "" + }, + { + "moduleCode": "GL2102", + "title": "Global Political Economy", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GL1101E", + "corequisite": "" + }, + { + "moduleCode": "GL2103", + "title": "Global Governance", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GL1101E", + "corequisite": "" + }, + { + "moduleCode": "GL2104", + "title": "Inquiry and Method", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GL3101", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ARS3 and above GL major students only. GL1101E and one of the following Core Modules: GL2101 Origins of the Modern World, GL2102 Global Political Economy, GL2103 Global Governance.", + "corequisite": "" + }, + { + "moduleCode": "GL3101", + "title": "Inquiry and Method", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ARS3 and above GL major students only. GL1101E and one of the following Core Modules: GL2101 Origins of the Modern World, GL2102 Global Political Economy, GL2103 Global Governance.", + "corequisite": "" + }, + { + "moduleCode": "GL3201", + "title": "Doing Global Visual Culture", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ARS2 students and above only. GL1101E.", + "corequisite": "" + }, + { + "moduleCode": "GL3550", + "title": "Global Studies Internship", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "Any other XX3550 internship modules\n(Note: Students who change major may not do a second internship in their new major)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students should:\nhave completed a minimum of 24 MC in Global Studies including GL1101E and one of the following Core Modules GL2101, GL2102, GL2103; and have declared Global Studies as their Major.", + "corequisite": "" + }, + { + "moduleCode": "GL3551", + "title": "FASS Undergraduate Research Opportunity", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must:\nhave declared a Major, completed a minimum of 24 MCs in that Major, and have a CAP of at least 3.20.", + "corequisite": "" + }, + { + "moduleCode": "GL4101", + "title": "Research in Global Issues", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GL majors ONLY. Completed 80 MCs, including 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track. Completed GL2104 Inquiry & Method or SC2101 Methods of Social Research.", + "corequisite": "" + }, + { + "moduleCode": "GL4102", + "title": "Task Force", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GL majors ONLY. Completed 80 MCs, including 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track, and GL4101 Readings in Global Issues.", + "corequisite": "" + }, + { + "moduleCode": "GL4401", + "title": "Honours Thesis", + "moduleCredit": 15, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "GL4660", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2015 and before:\nCompleted 110 MCs including 60 MCs of GL/GL recognised non-language modules, with a minimum SJAP of 4.00 and CAP of 3.50. Students may seek a waiver of the SJAP pre-requisite from the department if they have a minimum CAP of 4.25 after completing 110 MCs.\n\nCohort 2016 onwards:\nCompleted 110 MCs including 52 MCs of GL/GL recognised non-language modules, with a minimum SJAP of 4.00 and CAP of 3.50. Students may seek a waiver of the SJAP pre-requisite from the department if they have a minimum CAP of 4.25 after completing 110 MCs.", + "corequisite": "" + }, + { + "moduleCode": "GL4660", + "title": "Independent Study", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "GL4401", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2015 and before:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 52 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "GL4880", + "title": "Topics in Business and Transnational Cultures", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "GL4880A", + "title": "Globalization, Culture, and Identity", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in GL/GL recognized non-language modules with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "GL4880B", + "title": "Globalisation and the Imagination of Work", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in GL/GL recognized non-language modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "GL4881", + "title": "Topics in Colonialism and Postcolonialism", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "GL4881A", + "title": "Colonial, Anticolonial and Postcolonial Globalizations", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in GL/GL recognized non-language modules, or 28MCs in SC or 28 MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "GL4882", + "title": "Topics in Global Economics and Development", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "GL4882A", + "title": "Development and the Globalisation of Food", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in GL/GL recognised non‐language modules, or 28 MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "GL4882B", + "title": "Contested Globalisation: Resistance and Resilience", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in GL/GL recognised non-language modules, or 28 MCs in PS with a minimum CAP of 3.2, or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "GL4882C", + "title": "The Politics of Global Finance", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in GL/GL\nrecognised non-language modules, or 28 MCs in PS\nwith a minimum CAP of 3.20, or be on the Honours\ntrack.", + "corequisite": "" + }, + { + "moduleCode": "GL4882D", + "title": "Global Corporations and Power", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in GL/GL recognised non-language modules, 28MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "GL4883", + "title": "Topics in Global Health and Environment", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "GL4883A", + "title": "Conflict and Natural Resources", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in GL/GL recognised non‐language modules or 28 MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "GL4883B", + "title": "Climate Justice", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in GL/GL recognized non-language modules, or 28 MCs in PS with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "GL4884", + "title": "Topics in International Communications", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "GL4885", + "title": "Topics in Policy Making", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "GL4885A", + "title": "International Law and World Politics", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in GL/GL recognised non-language modules, or 28 MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "GL4886", + "title": "Topics in Population and Migration", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "GL4886A", + "title": "Citizenship and the Politics of Belonging", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in GL/GL recognised non‐language modules, or 28 MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "GL4886B", + "title": "The International Refugee Regime", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "GL3202", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GL1101; and Completed 80MCs, including 28 MCs in GL/GL recognised non-language modules, or 28 MCs in PS with a minimum CAP of 3.20 or be on the Honours Track.", + "corequisite": "" + }, + { + "moduleCode": "GL4887", + "title": "Topics in Religion and Ethnicity", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "GL4887A", + "title": "The Modern Middle East in the Age of Globalizations", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in GL/GL recognised non-language modules or 28MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "GL4888", + "title": "Topics in Technology and Globalisation", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "GL4888A", + "title": "Justice and Emerging Technology", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in GL/GL recognized non-language modules, or 28MCs in SC or 28 MCs in PS, with a minimum CAP of 3.20 or be on the Honours track", + "corequisite": "" + }, + { + "moduleCode": "GL4889", + "title": "Topics in War and Security", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "GL4889A", + "title": "International Law's Regulation of Violence", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in GL/GL recognised non-language modules, or 28MCs in SC or 28MCs in PS, with a minimum CAP of 3.20 or be on the Honours Track.", + "corequisite": "" + }, + { + "moduleCode": "GL4889B", + "title": "Debates on Human Rights", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in GL/GL recognized non-language modules, or 28 MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "GMS1000", + "title": "The Duke-NUS Premed Course", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [ + 2, + 3 + ], + "preclusion": "FMS1201D", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS5001", + "title": "Foundations of Health Product Regulation", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS5002", + "title": "Leadership for Regulatory Professionals", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS5011", + "title": "Fundamentals of Pharmaceutical Regulation", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS5012", + "title": "Chemistry, Manufacturing and Controls (CMC)", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS5101", + "title": "Clinical Trial Design and Data Analysis", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS5102", + "title": "Multi-Regional Clinical Trials (MRCT)", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS5103", + "title": "Regulation of Cell, Tissue and Gene Therapies", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS5104", + "title": "Biotherapeutics and Biosimilars", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS5105", + "title": "Generic Medicines", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS5106", + "title": "Regulation of Digital Health Products", + "moduleCredit": 0, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS5107", + "title": "In-Vitro Diagnostic Devices and Precision Medicine", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS5111", + "title": "Pharmacovigilance Principles and Frameworks", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS5112", + "title": "Pharmacovigilance Risk Management Planning", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS5113", + "title": "Post-market Surveillance and Enforcement", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS5114", + "title": "Post-Market for Medical Technologies", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS5121", + "title": "Advanced Topics in Regulatory Policy", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS5122", + "title": "Strategic Planning for Pharmaceutical Products", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS5123", + "title": "Strategic Planning for Medical Devices", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS5201", + "title": "Implementation Science for Health Services", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "B.Sc", + "corequisite": "" + }, + { + "moduleCode": "GMS5202", + "title": "Research Methods for Health Services", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "B.Sc", + "corequisite": "" + }, + { + "moduleCode": "GMS5203", + "title": "Health Technology Assessment, Cost-Effectiveness and Decision-making", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "B.Sc", + "corequisite": "" + }, + { + "moduleCode": "GMS5204", + "title": "Data Science + Healthcare", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "B.Sc", + "corequisite": "" + }, + { + "moduleCode": "GMS6100", + "title": "C.A.R.E. 1: Joining the Medical Profession", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6101", + "title": "Molecules, Cells and Tissues", + "moduleCredit": 6, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6102", + "title": "Human Structure & Function", + "moduleCredit": 12, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6103", + "title": "Brain & Behaviour", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6104", + "title": "Body & Disease", + "moduleCredit": 18, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6105", + "title": "Fundamentals of Clinical Practice", + "moduleCredit": 6, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6106", + "title": "Investigative Methods & Tools", + "moduleCredit": 1, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6107", + "title": "Evidence Based Medicine", + "moduleCredit": 1, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6200", + "title": "C.A.R.E. 2: Learning From & For Patients", + "moduleCredit": 7, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6201", + "title": "Medicine Clerkship", + "moduleCredit": 8, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6202", + "title": "Surgery Clerkship", + "moduleCredit": 8, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6203", + "title": "Obstetrics & Gynecology Clerkship", + "moduleCredit": 8, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6204", + "title": "Paediatrics Clerkship", + "moduleCredit": 8, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6205", + "title": "Psychiatry Clerkship", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6206", + "title": "Neurology Clerkship", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6207", + "title": "Clinical Core 1", + "moduleCredit": 1, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6208", + "title": "Clinical Core 2", + "moduleCredit": 1, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6209", + "title": "Clinical Core 3", + "moduleCredit": 1, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6210", + "title": "Oncology, Geri Med & Pall Care Progrm", + "moduleCredit": 1, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6211", + "title": "Clinical Core 5", + "moduleCredit": 1, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6212", + "title": "Practice Course 2", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6213D", + "title": "Emergency Medicine", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6214B", + "title": "Histopathology", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6214D", + "title": "Histopathology", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6215", + "title": "Anaesthesiology Program", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6216", + "title": "Obstetrics & Gynaecology Clerkship", + "moduleCredit": 6, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6217", + "title": "Longitudinal Integrated Clerkship", + "moduleCredit": 5, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6218", + "title": "Fundamentals of Research & Scholarship", + "moduleCredit": 1, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6219", + "title": "Geriatrics & Nutrition", + "moduleCredit": 1, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6220", + "title": "Innovation & Design Thinking", + "moduleCredit": 1, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6221D", + "title": "Oncologic Body Imaging", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6222B", + "title": "Vascular & Interventional Radiology", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6222D", + "title": "Vascular & Interventional Radiology", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6223B", + "title": "Paediatric Radiology", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6223D", + "title": "Paediatric Radiology", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6224B", + "title": "Neuroradiology", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6224D", + "title": "Neuroradiology", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6225B", + "title": "Basic Radiology", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6225C", + "title": "Basic Radiology", + "moduleCredit": 3, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6225D", + "title": "Basic Radiology", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6226D", + "title": "Body Imaging", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6227D", + "title": "Oncologic Imaging", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6228", + "title": "Radiology Program", + "moduleCredit": 1, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6230B", + "title": "Paediatric Emergency Medicine", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6230D", + "title": "Paediatric Emergency Medicine", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6231B", + "title": "Paediatric Rheumatology & Immunology", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6231D", + "title": "Paediatric Rheumatology & Immunology", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6232B", + "title": "Paediatric Allergy and Immunology", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6232D", + "title": "Paediatric Allergy and Immunology", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6233D", + "title": "Neonatology Elective Program", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6234B", + "title": "Perinatal Psychiatry", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6234D", + "title": "Perinatal Psychiatry", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6235D", + "title": "General Paediatrics Elective", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6236B", + "title": "Paediatric Neurology", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6236D", + "title": "Paediatric Neurology", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6237B", + "title": "Paediatric Developmental Medicine", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6237D", + "title": "Paediatric Developmental Medicine", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6238B", + "title": "Paediatric Orthopaedics", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6238C", + "title": "Paediatric Orthopaedics", + "moduleCredit": 3, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6240B", + "title": "Gynaecology Oncology", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6240D", + "title": "Gynaecology Oncology", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6242B", + "title": "OB Anaesthesia Clinical & Research Prog", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6242C", + "title": "OB Anaesthesia Clinical & Research Prog", + "moduleCredit": 3, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6242D", + "title": "OB Anaesthesia Clinical & Research Prog", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6246", + "title": "Fundamentals of Family Medicine", + "moduleCredit": 1, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6247", + "title": "Clinical Reflections", + "moduleCredit": 1, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6250B", + "title": "Consultation-Liaison Psychiatry", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6250C", + "title": "Consultation-Liaison Psychiatry", + "moduleCredit": 3, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6250D", + "title": "Consultation-Liaison Psychiatry", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6251B", + "title": "Child & Adolescent Psychiatry", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6251D", + "title": "Child & Adolescent Psychiatry", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6252B", + "title": "Mood Disorders & Schizophrenia", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6252D", + "title": "Mood Disorders & Schizophrenia", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6253B", + "title": "Early Psychosis Intervention", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6253D", + "title": "Early Psychosis Intervention", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6260", + "title": "Palliative Medicine", + "moduleCredit": 1, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6260B", + "title": "Palliative Medicine", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6260D", + "title": "Palliative Medicine", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6261", + "title": "General Rehabilitative Medicine", + "moduleCredit": 1, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6261B", + "title": "General Rehabilitation Medicine", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6261D", + "title": "General Rehabilitation Medicine", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6262", + "title": "Geriatric Medicine", + "moduleCredit": 1, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6262B", + "title": "Geriatric Medicine", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6262D", + "title": "Geriatric Medicine", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6263D", + "title": "Respiratory & Critical Care Medicine", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6264B", + "title": "Infectious Disease", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6264C", + "title": "Infectious Disease", + "moduleCredit": 3, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6264D", + "title": "Infectious Disease", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6265B", + "title": "Rheumatology & Immunology", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6265D", + "title": "Rheumatology & Immunology", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6266B", + "title": "Gastroenterology/Hepatology", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6266D", + "title": "Gastroenterology/Hepatology", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6267B", + "title": "Medical Oncology", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6267D", + "title": "Medical Oncology", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6268B", + "title": "Clinical Cardiology", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6268C", + "title": "Clinical Cardiology", + "moduleCredit": 3, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6268D", + "title": "Clinical Cardiology", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6269B", + "title": "Dermatology @ SGH", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6269D", + "title": "Dermatology @ SGH", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6270B", + "title": "Renal Medicine", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6270C", + "title": "Renal Medicine", + "moduleCredit": 3, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6270D", + "title": "Renal Medicine", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6271B", + "title": "Endocrinology", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6272B", + "title": "Neurology", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6272D", + "title": "Neurology", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6273B", + "title": "Respiratory Medicine", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6274B", + "title": "Dermatology @NSC", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6274D", + "title": "Dermatology @NSC", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6275B", + "title": "Neurology @TTSH", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6276", + "title": "Cardiology Program", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6280B", + "title": "Advanced Urologic Clerkship", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6280D", + "title": "Advanced Urologic Clerkship", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6281B", + "title": "Colorectal Surgery", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6281D", + "title": "Colorectal Surgery", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6282C", + "title": "Surgical Oncology", + "moduleCredit": 3, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6282D", + "title": "Surgical Oncology", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6283B", + "title": "Hand Surgery", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6283D", + "title": "Hand Surgery", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6284B", + "title": "Plastic, Reconstructive & Aesthetic Surg", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6284D", + "title": "Plastic, Reconstructive & Aesthetic Surg", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6285B", + "title": "Neurosurgery", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6285D", + "title": "Neurosurgery", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6286B", + "title": "Anaes, Perioperative Med & Pain Mgmt", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6286D", + "title": "Anaes, Perioperative Med & Pain Mgmt", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6287B", + "title": "HPB & Liver Transplant Surgery", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6287D", + "title": "HPB & Liver Transplant Surgery", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6288B", + "title": "Orthopaedics - Adult Reconstruction", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6289B", + "title": "Sports Orthopaedic Surgery", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6290B", + "title": "Orthopaedics - Trauma", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6290D", + "title": "Orthopaedics - Trauma", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6291B", + "title": "Ophthalmology", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6292B", + "title": "Breast Surgery", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6292D", + "title": "Breast Surgery", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6293B", + "title": "Orthopaedics - Spine", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6294D", + "title": "General Surgery Elective", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6295D", + "title": "Upper Gastrointestinal Surgery", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6296B", + "title": "Vascular Surgery", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6296D", + "title": "Vascular Surgery", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6297", + "title": "Musculoskeletal Year 2 Program", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6298", + "title": "Clinical Oncology", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6300", + "title": "Orientation to Research Year", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6301", + "title": "Practice Course 3", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6302", + "title": "Family Medicine Clerkship", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6304", + "title": "Research Methods and Analysis", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6305B", + "title": "Family Medicine Elective@SHS Polyclinics", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6306B", + "title": "Transitional Care & Com Hosp Setting", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6310", + "title": "IRB Modules", + "moduleCredit": 1, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6311", + "title": "Research/Scholarship (Part 1)", + "moduleCredit": 17, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6312", + "title": "Research/Scholarship (Part 2)", + "moduleCredit": 17, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6313", + "title": "Research/Scholarship Thesis", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6390", + "title": "C.a.r.e. 3", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6398B", + "title": "General Clinical Elective", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6398C", + "title": "General Clinical Elective", + "moduleCredit": 3, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6398D", + "title": "General Clinical Elective", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6399A", + "title": "Independent Study", + "moduleCredit": 1, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6399B", + "title": "Independent Study", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6399D", + "title": "Independent Study", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6400", + "title": "Practice Course 4", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6401", + "title": "Advanced Medicine", + "moduleCredit": 5, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6401F", + "title": "Medicine Sub-Internship", + "moduleCredit": 7, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6402", + "title": "Advanced Surgery", + "moduleCredit": 6, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6403", + "title": "Critical Care Rotation", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6404", + "title": "Musculoskeletal Rotation", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6405", + "title": "Phase 4 Family Medicine", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6406", + "title": "Community Hospital", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6407D", + "title": "Psychiatry Sub-Internship", + "moduleCredit": 5, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6410", + "title": "Advance Clinical Practice", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6410B", + "title": "Advance Clinical Practice", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6411", + "title": "Student as Future Educator", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6412B", + "title": "General Pathology", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6412D", + "title": "General Pathology", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6413B", + "title": "Microbiology", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6413D", + "title": "Microbiology", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6414", + "title": "Emergency Medicine", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6417B", + "title": "Radiation Oncology", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6417D", + "title": "Radiation Oncology", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6421B", + "title": "Molecular & Functional Imaging", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6421D", + "title": "Molecular & Functional Imaging", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6427B", + "title": "Cognitive Neurology", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6427D", + "title": "Cognitive Neurology", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6430C", + "title": "Children Intensive & Acute Care", + "moduleCredit": 3, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6430D", + "title": "Children Intensive & Acute Care", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6431B", + "title": "Paediatrics (General&Urological) Surgery", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6431D", + "title": "Paediatrics (General&Urological) Surgery", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6432B", + "title": "Paediatric Infectious Diseases", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6432D", + "title": "Paediatric Infectious Diseases", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6433D", + "title": "Paediatrics Sub-Internship", + "moduleCredit": 5, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6434B", + "title": "Paediatric Cardiothoracic Surgery", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6434D", + "title": "Paediatric Cardiothoracic Surgery", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6435B", + "title": "Paediatric Neurosurgery", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6435D", + "title": "Paediatric Neurosurgery", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6436B", + "title": "Paediatric Anaesthesia", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6436D", + "title": "Paediatric Anaesthesia", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6437B", + "title": "Paediatric Cardiology", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6440B", + "title": "Maternal-Foetal/General OG Elective", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6440D", + "title": "Maternal-Foetal/General OG Elective", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6441D", + "title": "Maternal-Foetal/OG Sub-Internship", + "moduleCredit": 5, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6441F", + "title": "Maternal-Foetal/OG Sub-Internship", + "moduleCredit": 7, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6442B", + "title": "Reproductive Medicine", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6450B", + "title": "General & Consultatn Liaison Psychiatry", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6451B", + "title": "Psychogeriatrics", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6451D", + "title": "Psychogeriatrics", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6452B", + "title": "Psychotraumatology", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6454B", + "title": "Addiction", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6454D", + "title": "Addiction", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6455B", + "title": "Geriatric Psychiatry @IMH", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6460", + "title": "Dermatology", + "moduleCredit": 1, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6460B", + "title": "Dermatology @ CGH", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6461B", + "title": "Internal Medicine Elective @ CGH", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6461D", + "title": "Internal Medicine Elective @ CGH", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6463B", + "title": "Haematology", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6463D", + "title": "Haematology", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6466D", + "title": "Medical Oncology (Y4)", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6482B", + "title": "Cardiothoracic Surgery", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6482D", + "title": "Cardiothoracic Surgery", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6483", + "title": "Ophthalmology", + "moduleCredit": 1, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6483D", + "title": "Ophthalmology Sub-Internship", + "moduleCredit": 5, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6484", + "title": "Otorhinolaryngology", + "moduleCredit": 1, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6484B", + "title": "Otorhinolaryngology (ENT)", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6484D", + "title": "Otorhinolaryngology (ENT)", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6487B", + "title": "Upper Gastrointestinal Surgery", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6487D", + "title": "Upper Gastrointestinal Surgery", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6488B", + "title": "Head & Neck Surgery", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6488D", + "title": "Head & Neck Surgery", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6489D", + "title": "Orthopaedic Surgery Sub-Internship", + "moduleCredit": 5, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6490B", + "title": "Trauma Surgery (General Surgery)", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6491B", + "title": "Sports Medicine @ CGH", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6495", + "title": "Student-In-Practice (Medicine)", + "moduleCredit": 6, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6496", + "title": "Student-In-Practice (Surgery)", + "moduleCredit": 6, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6497", + "title": "Student-In-Practice", + "moduleCredit": 6, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6499", + "title": "Capstone", + "moduleCredit": 3, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6500", + "title": "C.A.R.E. 4: Caring for Patients", + "moduleCredit": 5, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6800", + "title": "Integrated Biostatistics and Bioinformatics Journal Club", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6801", + "title": "Study Designs in Clinical and Population Health Research", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6802", + "title": "Analysis of Complex Biomedical Data", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Core Concepts in Biostatistics", + "corequisite": "" + }, + { + "moduleCode": "GMS6803", + "title": "Design and Analysis of Modern Clinical Studies", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6804", + "title": "Biomedical Research Internship", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completion of 1st year course work", + "corequisite": "" + }, + { + "moduleCode": "GMS6810", + "title": "Clinical and Translational Research Journal Club", + "moduleCredit": 3, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "B.Sc", + "corequisite": "" + }, + { + "moduleCode": "GMS6811", + "title": "Principles of Clinical Research", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "B.Sc", + "corequisite": "" + }, + { + "moduleCode": "GMS6812", + "title": "Foundations of Precision Medicine", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "B.Sc", + "corequisite": "" + }, + { + "moduleCode": "GMS6813", + "title": "Biostatistics for Clinical Research", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6820", + "title": "Core Concepts in Biostatistics", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Strong undergraduate training and background in statistics, mathematics or epidemiology.", + "corequisite": "" + }, + { + "moduleCode": "GMS6821", + "title": "R-Programming", + "moduleCredit": 0, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6850", + "title": "Core Concepts in Bioinformatics", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GMS6901, “Molecules to Medicines”, or a strong undergraduate background in biology and molecular biology. An undergraduate module in computer programming, or permission from the module coordinator.", + "corequisite": "" + }, + { + "moduleCode": "GMS6891", + "title": "Thesis Research (QBM Computational Biology)", + "moduleCredit": 36, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GMS6850-Core Concepts in Bioinformatics", + "corequisite": "" + }, + { + "moduleCode": "GMS6892", + "title": "Thesis Research", + "moduleCredit": 32, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GMS6801 Study Designs in Clinical and Population Health Research and GMS6820 Core Concepts in Biostatistics", + "corequisite": "" + }, + { + "moduleCode": "GMS6900", + "title": "Student Research Seminars", + "moduleCredit": 3, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Only for PhD students in IBM program", + "corequisite": "" + }, + { + "moduleCode": "GMS6901", + "title": "Molecules to Medicines", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6902", + "title": "Laboratory Rotation 1", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6903", + "title": "Laboratory Rotation 2", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6904", + "title": "Principles of Infectious Diseases", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students should have followed course GMS6901 “Molecules to Medicines” or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "GMS6905", + "title": "Developments in Infectious Diseases", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This module complements course GMS 6904 “Principles of Infectious Diseases”.", + "corequisite": "" + }, + { + "moduleCode": "GMS6906", + "title": "Laboratory Rotation 3", + "moduleCredit": 2, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6910", + "title": "Evolutionary Genetics", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6920", + "title": "Metabolic Basis of Disease", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6921", + "title": "Cardiovascular Molecular Biology", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Molecules to Medicines (GMS6901) or equivalent introductory graduate biochemistry course", + "corequisite": "" + }, + { + "moduleCode": "GMS6950", + "title": "Health Services and Systems Research", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6951", + "title": "Dynamic Modelling of Healthcare Services and Systems", + "moduleCredit": 4, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6991", + "title": "Thesis", + "moduleCredit": 40, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GMS6992", + "title": "Thesis (HSSR)", + "moduleCredit": 19, + "department": "Duke-NUS Dean's Office", + "faculty": "Duke-NUS Medical School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GPM3010", + "title": "Ethics And Jurisprudence", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GPM4000", + "title": "General Practise Management", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GPM4010", + "title": "Ethics And Jurisprudence", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GS5001", + "title": "Research Ethics & Integrity 1", + "moduleCredit": 4, + "department": "NGS Dean's Office", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GS5002", + "title": "Academic Professional Skills and Techniques", + "moduleCredit": 4, + "department": "NGS Dean's Office", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GS5003", + "title": "Stem Cell Biology", + "moduleCredit": 4, + "department": "NGS Dean's Office", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GS5007", + "title": "Microscopy For Cell & Developmental Biology", + "moduleCredit": 4, + "department": "NGS Dean's Office", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GS5100", + "title": "Research Supervision", + "moduleCredit": 0, + "department": "NGS Dean's Office", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GS5101", + "title": "Research Immersion module", + "moduleCredit": 2, + "department": "NGS Dean's Office", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GS5101A", + "title": "Lab Rotation", + "moduleCredit": 4, + "department": "NGS Dean's Office", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GS5104", + "title": "Undergraduate Teaching", + "moduleCredit": 0, + "department": "NGS Dean's Office", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GS6001", + "title": "Research Ethics and Scientific Integrity", + "moduleCredit": 4, + "department": "NGS Dean's Office", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GS6003", + "title": "Stem Cell Biology", + "moduleCredit": 4, + "department": "NGS Dean's Office", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GS6004", + "title": "Vision and Perception", + "moduleCredit": 4, + "department": "NGS Dean's Office", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GS6007", + "title": "Microscopy for Cell & Developmental Biology", + "moduleCredit": 4, + "department": "NGS Dean's Office", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GS6880A", + "title": "The Biology and Sociology of Influenza Pandemics", + "moduleCredit": 1, + "department": "NGS Dean's Office", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GS6880B", + "title": "Infectious Disease Modeling", + "moduleCredit": 1, + "department": "NGS Dean's Office", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GS6881A", + "title": "BioEnergy", + "moduleCredit": 1, + "department": "NGS Dean's Office", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GS6882A", + "title": "Biology of Disease", + "moduleCredit": 4, + "department": "NGS Dean's Office", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GS6883A", + "title": "Interface Science and Engineering", + "moduleCredit": 2, + "department": "NGS Dean's Office", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GS6884A", + "title": "Introduction to Optical Tweezers", + "moduleCredit": 1, + "department": "NGS Dean's Office", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GS6885", + "title": "Introduction to Image Processing and Basic ImageJ", + "moduleCredit": 2, + "department": "NGS Dean's Office", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GS6887A", + "title": "Sound, Music, and Mind", + "moduleCredit": 4, + "department": "NGS Dean's Office", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GS6889A", + "title": "Academic Professional Skills II", + "moduleCredit": 2, + "department": "NGS Dean's Office", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "The skills capsules are timed.", + "corequisite": "" + }, + { + "moduleCode": "GS6889B", + "title": "Academic Skills and Research Ethics", + "moduleCredit": 2, + "department": "NGS Dean's Office", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GSC6880A", + "title": "Computational Systems Biology", + "moduleCredit": 2, + "department": "NGS Dean's Office", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GSG6886A", + "title": "Graphene: Production, Properties and Applications", + "moduleCredit": 4, + "department": "NGS Dean's Office", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GSN6501", + "title": "Neuronal Signalling", + "moduleCredit": 4, + "department": "NGS Dean's Office", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GSN6502", + "title": "Developmental Neurobiology: from genes to neuronal circuits", + "moduleCredit": 4, + "department": "NGS Dean's Office", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GSN6503", + "title": "Techniques in Neuroscience", + "moduleCredit": 4, + "department": "NGS Dean's Office", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GSN6504", + "title": "Behavioral & Cognitive Neuroscience", + "moduleCredit": 4, + "department": "NGS Dean's Office", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Neuronal signalling", + "corequisite": "" + }, + { + "moduleCode": "GSN6505", + "title": "Brain Disorders & Repair", + "moduleCredit": 4, + "department": "NGS Dean's Office", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GSN6506", + "title": "Computational Neuroscience & Neuroengineering", + "moduleCredit": 4, + "department": "NGS Dean's Office", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GSN6880", + "title": "Neuroethics", + "moduleCredit": 2, + "department": "NGS Dean's Office", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GSN6881", + "title": "Human Cognitive Neuroscience: A hands on approach", + "moduleCredit": 4, + "department": "NGS Dean's Office", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "GSS6886", + "title": "NGS Seminars", + "moduleCredit": 2, + "department": "NGS Dean's Office", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HM5102", + "title": "Psychosis", + "moduleCredit": 4, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HM5103", + "title": "Mood, Anxiety, & Grief", + "moduleCredit": 4, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HM5104", + "title": "Addiction/ Personality Disorders", + "moduleCredit": 4, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HM5105", + "title": "Child & Adolescent Mental Health including Learning Disabilities", + "moduleCredit": 4, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HM5106", + "title": "Psychogeriatrics", + "moduleCredit": 4, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1, + 3 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HM5107", + "title": "Personality Disorders and Psychological Therapies", + "moduleCredit": 4, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "N.A.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "N.A.", + "corequisite": "N.A." + }, + { + "moduleCode": "HR1424", + "title": "Business, Management And People", + "moduleCredit": 3, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HR1424T", + "title": "Business, Management And People", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "HR2002T", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HR2002", + "title": "Human Capital in Organizations", + "moduleCredit": 3, + "department": "Human Resource Management", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "Students who have passed or are reading HR2001 or HR2101 or HR3111 are not allowed to take HR2002", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For Engineering students only", + "corequisite": "" + }, + { + "moduleCode": "HR2002T", + "title": "Human Capital in Organizations", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "HR1424T", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HR2101A", + "title": "Understand'G Hr In The New Economy", + "moduleCredit": 4, + "department": "Human Resource Management", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HR2307", + "title": "Human Resource Management (Medicine)", + "moduleCredit": 1, + "department": "Human Resource Management", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HR3003", + "title": "Management And Human Relations", + "moduleCredit": 4, + "department": "Human Resource Management", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For School of Design and Environment students only", + "corequisite": "" + }, + { + "moduleCode": "HR3302", + "title": "Human Resource Management", + "moduleCredit": 3, + "department": "Human Resource Management", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HR3304", + "title": "Human Resource Management (Dentistry)", + "moduleCredit": 1, + "department": "Human Resource Management", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY1101E", + "title": "Asia and the Modern World", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY2062", + "title": "Asia In The Modern World", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY2206", + "title": "China's Imperial Past: History & Culture", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY2207", + "title": "Struggle for Modern China, 1800-1949", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY2208", + "title": "Pre-Modern Japan: History and Culture", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "HY3207", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY2210", + "title": "State & Society in Early-Modern Europe", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY2216", + "title": "Total War, 1815-1945", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY2217", + "title": "Warfare after 1945", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY2220", + "title": "Korea in the Twentieth Century", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY2225", + "title": "East-West Artistic Interactions", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEK2015", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY2231", + "title": "Upheaval in Europe: 1848-1918", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EU2213", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY2232", + "title": "Modern Japan: Conflict in History", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY2233", + "title": "International History of Singapore", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY2235", + "title": "Environmental History", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "GEK2008", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY2236", + "title": "US Media in the 20th Century & Beyond", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "AS2236", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY2237", + "title": "The U.S.: From Settlement to Superpower", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "AS2237, GEK2000", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY2242", + "title": "Singapore's Military History", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "SSA2208", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY2245", + "title": "Empires, Colonies and Imperialism", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "EU2221", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY2247", + "title": "Sport and History", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY2249", + "title": "Art and History", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY2250", + "title": "Introduction to Southeast Asian History", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY2251", + "title": "From the Wheel to the Web", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY2252", + "title": "Introduction to Business History", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY2253", + "title": "Christianity in World History", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY2255", + "title": "Islam in World History", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY2257", + "title": "Law, Crime, and Punishment in History", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY2258", + "title": "Passage to India: Modern Indian Society", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY2259", + "title": "The Craft of History", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "YHU2217 and YHU3276", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be HY majors and have completed at least 40 MCs of\nwhich at least 16 MCs in HY, including HY1101E. For EU\nmajors, must have completed at least 40 MCs of which at\nleast 16 MCs in EU/LA [French/German/Spanish]/ recognised\nmodules, including EU1101E and HY1101E.", + "corequisite": "" + }, + { + "moduleCode": "HY2260", + "title": "History and Popular Culture", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY2261", + "title": "Modern Middle East History: From 1699 to the Present", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY2262", + "title": "The Ancient World: The Roman Empire", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "Students from Cohort 2017 and before who have taken HY2245/EU2221", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY2263", + "title": "The Ancient World: Ancient Greece", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3201", + "title": "Indonesia: History, Economy and Society", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3202", + "title": "International History of SE Asia", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3204", + "title": "Southeast Asia: Decolonization & After", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3205", + "title": "Society & Economy in Late Imperial China", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3206", + "title": "East Asian International Relations", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3209", + "title": "Cold War in Europe, 1945-1991", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EU3230", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3214", + "title": "History of Strategic Thought", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3217", + "title": "The Making of Colonial Indochina", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3223", + "title": "Technology and Culture in the Asia-Pacific", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3224", + "title": "China and the Maritime World", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3225", + "title": "Minorities in Southeast Asia", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3226", + "title": "Memory, Heritage & History", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3227", + "title": "Europe of the Dictators", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EU3212", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3228", + "title": "The Evolution of Vietnam as a Nation", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3230", + "title": "American Business: Industrial Revolution-Web", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "AS3240, AS3230, HY3240", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3231", + "title": "History of the Malay World", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3236", + "title": "The Struggle for India, 1920-1964", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "HY2228, SN2261, SN3262", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3237", + "title": "Issues in Thai History", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3238", + "title": "The Political History of the US", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3239", + "title": "The United States in the Asia-Pacific", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "AS3239", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3240", + "title": "Making America Modern", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "AS3230, AS3240, HY3230", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Any level 1000 or 2000 History module or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "HY3242", + "title": "Modern Imperialism", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EU3231", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3243", + "title": "China and Southeast Asia: Past & Present", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3245", + "title": "Engendering History/Historicising Gender", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3246", + "title": "History of Muslim Southeast Asia", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3247", + "title": "From Monarchy to Military: History of Myanmar", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3248", + "title": "People's Republic of China, 1949-1989", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3250", + "title": "Approaches to Singapore History", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3251", + "title": "India’s Pursuit of Prosperity", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3252", + "title": "From Tropical Medicine to Bioscience", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3253", + "title": "Nation and Empire in East Asia", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3254", + "title": "Cold War in East Asia", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3256", + "title": "Brides of the Sea: Asia's Port Cities", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3257", + "title": "The Philippines: A Social and Cultural History", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3258", + "title": "Cold War in the Global South", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3259", + "title": "Issues in Korean Cultural History since 1945", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3260", + "title": "Chinese Migrations in World History", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3261", + "title": "Historicizing Science, Technology and Society", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3262", + "title": "Buddhism In Southeast Asian History", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "HY2234", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY3551", + "title": "FASS Undergraduate Research Opportunity", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must:\nhave declared a Major, completed a minimum of 24 MCs in that Major, and have a CAP of at least 3.20.", + "corequisite": "" + }, + { + "moduleCode": "HY3880", + "title": "Topics in History", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY4201", + "title": "Economy and Society in Southeast Asia", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80MCs, including 28MCs in HY or 28MCs in SE or 28MCs in MS or 28MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80MCs, including 28MCs in HY or 28MCs in SE or 28MCs in MS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "HY4203", + "title": "Maritime History of China", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80MCs, including 28MCs in HY or 28MCs in GL/GL recognised non- language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80MCs, including 28MCs in HY, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "HY4205", + "title": "Early Modern Europe and its World", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "EU4224", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80MCs, including 28MCs in HY or 28MCs in GL/GL recognised non- language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80MCs, including 28MCs in HY, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "HY4207", + "title": "Special Paper in Military History", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in HY, or 28 MCs in SC with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "HY4209", + "title": "Imperialism and Empires", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "EU4226", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80MCs including 28MCs in HY or 28MCs or 28MCs in GL/GL recognised non-language modules, in PS with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80MCs including 28MCs in HY or 28MCs in PS with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "HY4210", + "title": "Issues and Events in Malaysian History", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80MCs, including 28MCs in HY or 28MCs in SC or 28MCs in MS, or 28MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80MCs, including 28MCs in HY or 28MCs in SC or 28MCs in MS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "HY4211", + "title": "Topics in Environmental History", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80MCs, including 28MCs in HY, or 28 MCs in SC, or 28MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80MCs, including 28MCs in HY, or 28 MCs in SC with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "HY4212", + "title": "Special Paper in Modern European History", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EU4214", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in HY, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "HY4214", + "title": "Approaches to Chinese History", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in HY, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "HY4215", + "title": "The Classical Empires of Southeast Asia", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in HY or 28 MCs in SC or 28MCs in SE, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "HY4216", + "title": "Culture and Literature in S.E.A. History", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in HY or 28 MCs in SC or 28MCs in SE, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "HY4217", + "title": "Approaches to Study of SE Asian History", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in HY or 28MCs in SE or 28MCs in MS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "HY4218", + "title": "Approaches to Modern Japanese History", + "moduleCredit": 5, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "JS4213", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80MCs, including 28MCs in HY or 28MCs in GL/GL recognised non- language modules, with a minimum CAP of 3.20 or be on the Honours track\n\nCohort 2020 onwards: Completed 80MCs, including 28MCs in HY, with a minimum CAP of 3.20 or be on the Honours track", + "corequisite": "" + }, + { + "moduleCode": "HY4219", + "title": "American Intellectual History", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "AS4219", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before:\nCompleted 80MCs, including 28MCs in HY, or 28 MCs in SC with a minimum CAP of 3.50 or be on the Honours track.\n\nCohort 2012 onwards:\nCompleted 80MCs, including 28MCs in HY, or 28 MCs in SC with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "HY4221", + "title": "Imperial Legacies in Europe", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EU4215", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80MCs, including 28MCs in HY or 28MCs in GL/GL recognised non- language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80MCs, including 28MCs in HY, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "HY4222", + "title": "Asian Business History: Case Studies", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80MCs, including 28MCs in HY or 28 MCs in SC or 28MCs in SN or 28MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80MCs, including 28MCs in HY or 28 MCs in SC or 28MCs in SN, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "HY4223", + "title": "Chinese Overseas: Sojourners & Settlers", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80MCs, including 28MCs in HY or 28MCs in GL/GL recognised non- language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80MCs, including 28MCs in HY, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "HY4225", + "title": "Ideological Origins of US Foreign Policy", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: \nCompleted 80MCs, including 28MCs in HY, or 28 MCs in SC, or 28MCs in PS, or 28MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards:\nCompleted 80MCs, including 28MCs in HY, or 28 MCs in SC, or 28MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "HY4226", + "title": "European Intellectual History", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EU4225", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80MCs, including 28 MCs in HY or 28MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80MCs, including 28 MCs in HY, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "HY4227", + "title": "Sources of Singaporean History", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in HY, or 28 MCs in SC with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "HY4228", + "title": "Material Culture in History: Theory and Practice", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MC, including 28 MC in HY, with a minimum CAP of\n3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "HY4229", + "title": "Biography and History", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in HY, or 28 MCs in SC with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "HY4230", + "title": "Historiography and Historical Method", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "HY4101", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in HY or 28MCs in EU/LA (French/German/Spanish)/ recognised modules or 28MCs in MS or 28MCs in SN or 28MCs in SC or 28 MCs in GL or GL recognised non- language modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "HY4231", + "title": "Family-State Relations in Chinese History", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in HY, with a minimum CAP of\n3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "HY4232", + "title": "History of American Icons", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in HY, or 28 MCs in GL or GL recognised non- language modules with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in HY with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "HY4233", + "title": "Japanese Colonialism and Imperialism", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in HY, with a minimum CAP of\n3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "HY4234", + "title": "Grand Strategy in Peace and War", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in HY, with a minimum CAP of\n3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "HY4235", + "title": "A History of the 20th Century and Beyond", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in HY, with a minimum CAP of\n3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "HY4236", + "title": "Topics in Singaporean History", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in HY, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "HY4237", + "title": "Global Histories of the Nuclear Age", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in HY, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "HY4238", + "title": "Gender, Culture & History", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in HY, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "HY4239", + "title": "History of Gender in India", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in HY, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "HY4401", + "title": "Honours Thesis", + "moduleCredit": 15, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "HY4660", + "attributes": [ + false, + false, + false, + false, + true, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2013-2015:\nCompleted 110 MCs including 60 MCs of HY major requirements with a minimum SJAP of 4.00 and a CAP of 3.50. Students may seek a waiver of the SJAP pre- requisite from the department if they have a minimum CAP of 4.25 after completing 110 MCs.\n\nCohort 2016 onwards:\nCompleted 110 MCs including 44 MCs of HY major requirements with a minimum SJAP of 4.00 and a CAP of 3.50. Students may seek a waiver of the SJAP pre- requisite from the department if they have a minimum CAP of 4.25 after completing 110 MCs", + "corequisite": "" + }, + { + "moduleCode": "HY4660", + "title": "Independent Study", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "HY4401", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012-2015:\nCompleted 100 MCs, including 60 MCs in HY, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nCompleted 100 MCs, including 44 MCs in HY, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "HY4880", + "title": "Topics in History", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in HY, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "HY4880B", + "title": "Student Movements in Asia Since 1950", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MC, including 28 MCs in HY, or 28 MCs in GL or GL recognised non- language modules with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MC, including 28 MCs in HY with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "HY5210", + "title": "Approaches to Modern Se Asian History", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY5210R", + "title": "Approaches to Modern Se Asian History", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY5211", + "title": "Approaches to Modern East Asian History", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY5301", + "title": "Internship in History", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY5302", + "title": "Approaches to Military History", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY5303", + "title": "Problems in Cultural History", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY5303R", + "title": "Problems in Cultural History", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY5304", + "title": "Imperialism & Empires: Historical Approaches", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY5304R", + "title": "Imperialism & Empires: Historical Approaches", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY5305", + "title": "Approaches to World History", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY5305R", + "title": "Approaches to World History", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY5401", + "title": "Historiography On China", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY5402", + "title": "Reconsidering the Cold War", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY5402R", + "title": "Reconsidering the Cold War", + "moduleCredit": 5, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY5403", + "title": "Interpreters of Southeast Asian Pasts", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY5660", + "title": "Independent Study", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY6101", + "title": "Historiography: Theory & Archive", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY6204", + "title": "Directed Studies: Selected Areas", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY6205", + "title": "Special Topics in History and Historiography", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY6206", + "title": "Community Formation in Se Asia", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY6401", + "title": "Southeast Asian Historiography", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY6402", + "title": "The Historian's Craft", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY6660", + "title": "Independent Study", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY6770", + "title": "Graduate Research Seminar", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY6881", + "title": "Topics in Southeast Asian History", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "HY6882", + "title": "Topics in Chinese History", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID1101", + "title": "Design 01 - Basic Design", + "moduleCredit": 9, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID1102", + "title": "Design 02 - Living & Workplace System", + "moduleCredit": 9, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID1105", + "title": "Design Fundamentals 1", + "moduleCredit": 8, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "Module not offered to none industrial design students", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID1106", + "title": "Design Fundamentals 2", + "moduleCredit": 8, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "Module not offered to none industrial design students", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID1111", + "title": "Modelling For Industrial Design", + "moduleCredit": 4, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID1112", + "title": "Modelling and Sketching for Design", + "moduleCredit": 4, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID1113", + "title": "Modelling and Sketching for Design", + "moduleCredit": 4, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID1121", + "title": "Human-Centred Design", + "moduleCredit": 4, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID1223", + "title": "History & Theory Of Industrial Design", + "moduleCredit": 4, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID1321", + "title": "Materials For Industrial Design", + "moduleCredit": 4, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID1322", + "title": "Materials and Manufacturing for Industrial Design", + "moduleCredit": 4, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID2041", + "title": "Design Internship", + "moduleCredit": 4, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [ + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID2042", + "title": "Work Experience Internship", + "moduleCredit": 4, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [ + 3, + 4 + ], + "preclusion": "Full-time undergraduate students who have accumulated more than 12MCs for previous internship stints.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This internship module is open to full-time undergraduate students who have completed at least 60MCs and plan to proceed on an approved internship of at least 10 weeks in duration in the vacation period.", + "corequisite": "" + }, + { + "moduleCode": "ID2101", + "title": "Design For the Tropical Environment", + "moduleCredit": 6, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID2102", + "title": "Design For Context & Connectivity", + "moduleCredit": 6, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "Module not offered to non-industrial design students", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AR1101 Basic Design & Communication ? Grade 'C 'AR1102 Design for Interface ? Grade 'C '", + "corequisite": "" + }, + { + "moduleCode": "ID2105", + "title": "Design for Context and Sustainability", + "moduleCredit": 8, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Pass ID 1105 & 1106", + "corequisite": "" + }, + { + "moduleCode": "ID2106", + "title": "Design Platforms 1", + "moduleCredit": 10, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Pass ID 1105 & 1106", + "corequisite": "" + }, + { + "moduleCode": "ID2111", + "title": "Computer Aided Industrial Design", + "moduleCredit": 4, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID2112", + "title": "Digital Design & Fabrication", + "moduleCredit": 4, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID2113", + "title": "Visual Communication Design", + "moduleCredit": 4, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID2114", + "title": "The Appreciation of Wood Craft", + "moduleCredit": 4, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "Some prior workshop or model-making experience", + "corequisite": "" + }, + { + "moduleCode": "ID2115", + "title": "Digital Sketching and Painting", + "moduleCredit": 4, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID2116", + "title": "Computing for Design", + "moduleCredit": 4, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID2122", + "title": "Ecodesign And Sustainability", + "moduleCredit": 4, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID2123", + "title": "Design Process & Research", + "moduleCredit": 4, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID2323", + "title": "Technology for Design", + "moduleCredit": 4, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID2324", + "title": "Manufacturing for Design", + "moduleCredit": 4, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID3041", + "title": "Special Studies", + "moduleCredit": 14, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Student who read ID3041 must have completed at least 60 MC. (i.e. students will be able to read this module in Year 2, second semester onwards.)", + "corequisite": "" + }, + { + "moduleCode": "ID3101", + "title": "Design 5", + "moduleCredit": 12, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "Module not offered to non-industrial design students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AR2101 Design for the Tropical Environment ?Grade 'C 'ID2102 Design for Context & Connectivity ? Grade 'C '", + "corequisite": "" + }, + { + "moduleCode": "ID3102", + "title": "Design For Culture & Identity", + "moduleCredit": 8, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID3105", + "title": "Design Platforms 2", + "moduleCredit": 10, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Pass ID 2105 & 2106", + "corequisite": "" + }, + { + "moduleCode": "ID3106", + "title": "Design Platforms 3", + "moduleCredit": 10, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Pass ID 2105 & 2106", + "corequisite": "" + }, + { + "moduleCode": "ID3122", + "title": "Innovation and Design", + "moduleCredit": 4, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID3123", + "title": "Interaction Design", + "moduleCredit": 4, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID3124", + "title": "Creative Communication & Design Argumentation", + "moduleCredit": 4, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID3125", + "title": "Colours, Materials & Finishing", + "moduleCredit": 4, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID3127", + "title": "Transdisciplinary Innovation Project", + "moduleCredit": 5, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "3rd and 4th year undergraduate students", + "corequisite": "" + }, + { + "moduleCode": "ID4103", + "title": "Design Detailing", + "moduleCredit": 12, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "Module not offered to non-industrial design students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Pass ID3103 & ID3104", + "corequisite": "" + }, + { + "moduleCode": "ID4105", + "title": "Design Platforms 4", + "moduleCredit": 10, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Pass ID 3105 & 3106", + "corequisite": "" + }, + { + "moduleCode": "ID4106", + "title": "Design Thesis Project", + "moduleCredit": 12, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + false, + false, + false, + false + ], + "prerequisite": "Pass ID3103 & ID3104 or ID3105 and 3106", + "corequisite": "" + }, + { + "moduleCode": "ID4121", + "title": "Project Research", + "moduleCredit": 4, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID5021", + "title": "Design Research", + "moduleCredit": 4, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID5151", + "title": "Design Innovation", + "moduleCredit": 4, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID5351", + "title": "Design Studies", + "moduleCredit": 4, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID5770", + "title": "Graduate Seminar Module in Industrial Design", + "moduleCredit": 4, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID5951", + "title": "Topics in Industrial Design", + "moduleCredit": 4, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID5951A", + "title": "Topics in Industrial Design: Product Development", + "moduleCredit": 4, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID5951B", + "title": "Topics in Industrial Design: Interaction Design", + "moduleCredit": 4, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID5951C", + "title": "Topics in Industrial Design: Healthcare Design", + "moduleCredit": 4, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID5951D", + "title": "Topics in Industrial Design: Design Education", + "moduleCredit": 4, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID5951E", + "title": "Topics in Industrial Design: Sustainability", + "moduleCredit": 4, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ID6770", + "title": "Doctoral Seminar Module in Industrial Design", + "moduleCredit": 4, + "department": "Industrial Design", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE1111", + "title": "ISE Principles and Practice I", + "moduleCredit": 6, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE1111R", + "title": "Industrial & Systems Engrg Principles & Practice I", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "IE1111", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE1112", + "title": "ISE Principles and Practice II", + "moduleCredit": 6, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IE1111 ISE Principles and Practices I", + "corequisite": "" + }, + { + "moduleCode": "IE1113", + "title": "Introduction to Systems Analytics", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "IE1111 ISE Principles and Practices I", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE1114", + "title": "Introduction to Systems Thinking and Dynamics", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "IE1112 ISE Principles and Practices II\nIE2101 Introduction to Systems Thinking", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IE1113 Introduction to Systems Analytics", + "corequisite": "" + }, + { + "moduleCode": "IE2010E", + "title": "Introduction to Industrial System", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TM3161, TIE2010", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE2020E", + "title": "Probability and Statistics", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "IE2120E, TIE2120, TIE2020", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE2100", + "title": "Probability Models With Applications", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "DBA3711", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST2334\nor EE2012 \nor CE2407\nor BN2102", + "corequisite": "" + }, + { + "moduleCode": "IE2100E", + "title": "Probability Models with Applications", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "DSC3215, TIE2100", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "ST2131 or TS2120 or IE2120E" + }, + { + "moduleCode": "IE2110", + "title": "Operations Research I", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "DBA3701, MA2215, MA3236", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE2110E", + "title": "Operations Research I", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "DSC3214, MA2215, MA3236, TIE2110", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "MA1102R or MA1505, MA1506, TE2102 or TG1401" + }, + { + "moduleCode": "IE2111", + "title": "Industrial & Systems Engrg Principles & Practice II", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "IE2140\nIE2140", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE2130", + "title": "Quality Engineering I", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST2334 or EE2012 or CE2407 or BN2102", + "corequisite": "" + }, + { + "moduleCode": "IE2130E", + "title": "Quality Engineering I", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2 + ], + "preclusion": "TM4271, TIE2130", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "MA1505, MA1506 or SA1101, or ST1131, or ST1131A, or ST1232, or ST2334 or TE2102 or TG1401 or TM1401 or TS2120 or IE2120E" + }, + { + "moduleCode": "IE2140", + "title": "Engineering Economy", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE2140E", + "title": "Engineering Economy", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TIE2140", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE2141", + "title": "Systems Thinking and Dynamics", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "IE2101, Junior Seminar modules in RC4, GEM1915/GET1011", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE2150E", + "title": "Human Factors Engineering", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TIE2150", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE2290", + "title": "A cross cultural industrial field trip program", + "moduleCredit": 2, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Stage 2 standing", + "corequisite": "" + }, + { + "moduleCode": "IE3010E", + "title": "Systems Thinking and Design", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TIE3010", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE3100E", + "title": "Systems Design Project", + "moduleCredit": 8, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2, + 3 + ], + "preclusion": "TIE3100", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "Level 3 Standing", + "corequisite": "" + }, + { + "moduleCode": "IE3100M", + "title": "System Design Project", + "moduleCredit": 12, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "IE2100, IE2110, IE1112", + "corequisite": "IE2101 - Introduction to Systems Thinking" + }, + { + "moduleCode": "IE3101", + "title": "Statistics For Engineering Applications", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST2334 or EE2012 or CE2407 or BN2102", + "corequisite": "" + }, + { + "moduleCode": "IE3101E", + "title": "Statistics for Engineering Applications", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TIE3101", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "ST1131, ST2131 or ST1232 or TS2120 or IE2120E" + }, + { + "moduleCode": "IE3102", + "title": "Systems Engineering Project", + "moduleCredit": 8, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "IE3100M", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IE1112, IE2110, IE2150, IE3105", + "corequisite": "" + }, + { + "moduleCode": "IE3105", + "title": "Fundamentals of Systems Engineering and Architecture", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE3110", + "title": "Simulation", + "moduleCredit": 5, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "DSC3221", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IE2100 or DSC3215", + "corequisite": "" + }, + { + "moduleCode": "IE3110E", + "title": "Simulation", + "moduleCredit": 5, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "DSC3221, TIE3110", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "IE2100E or DSC3215" + }, + { + "moduleCode": "IE3110R", + "title": "Simulation", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "DSC3221", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IE2100 or DSC3215", + "corequisite": "" + }, + { + "moduleCode": "IE3120", + "title": "Manufacturing Logistics", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IE2100 or DBA3711", + "corequisite": "" + }, + { + "moduleCode": "IE3250", + "title": "Human Factors Engineering", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE4068", + "title": "Exchange Elective", + "moduleCredit": 3, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE4100E", + "title": "BTech Dissertation", + "moduleCredit": 12, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2, + 3 + ], + "preclusion": "IE4101E, TIE4101", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "Level 4 Standing", + "corequisite": "" + }, + { + "moduleCode": "IE4100R", + "title": "B.Eng.Dissertation", + "moduleCredit": 8, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "IE4102", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "ISE B.Eng. 4 standing", + "corequisite": "" + }, + { + "moduleCode": "IE4101E", + "title": "B.Tech. Dissertation", + "moduleCredit": 8, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2, + 3 + ], + "preclusion": "TIE4101, IE4100E", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "Stage 4 standing", + "corequisite": "" + }, + { + "moduleCode": "IE4102", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "IE4100R", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Stage 4 Standing", + "corequisite": "" + }, + { + "moduleCode": "IE4210", + "title": "Operations Research II", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IE2110", + "corequisite": "" + }, + { + "moduleCode": "IE4211", + "title": "Modelling & Analytics", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST2334 or EE2012 or CE2407 or BN2102", + "corequisite": "" + }, + { + "moduleCode": "IE4213", + "title": "Learning from Data", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IE3101 Statistics For Engineering Applications", + "corequisite": "" + }, + { + "moduleCode": "IE4220", + "title": "Supply Chain Modelling", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 2, + 3 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IE2100 and IE2110", + "corequisite": "" + }, + { + "moduleCode": "IE4220E", + "title": "Supply Chain Modelling", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TIE4220", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "IE2100E & IE2110E" + }, + { + "moduleCode": "IE4221", + "title": "Transportation Demand Modeling and Economics", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IE2110 Operations Research I", + "corequisite": "" + }, + { + "moduleCode": "IE4229", + "title": "Selected Topics In Logistics", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IE2110", + "corequisite": "" + }, + { + "moduleCode": "IE4229E", + "title": "Selected Topics in Logistics", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "TIE4229", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IE2110E Operations Research I", + "corequisite": "" + }, + { + "moduleCode": "IE4230", + "title": "Quality Engineering II", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IE3101", + "corequisite": "" + }, + { + "moduleCode": "IE4230E", + "title": "Quality Engineering II", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TIE4230", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "IE2130E & IE3101E" + }, + { + "moduleCode": "IE4231", + "title": "Statistical Methods for Process Design and Control", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IE3101 Statistics for Engineering Applications", + "corequisite": "" + }, + { + "moduleCode": "IE4239", + "title": "Selected Topics In Quality Engineering", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IE2100, IE3101", + "corequisite": "" + }, + { + "moduleCode": "IE4239E", + "title": "Selected Topics in Quality Engineering", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 3 + ], + "preclusion": "TIE4239", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IE2100E Probability Models with Applications\nIE3101E Statistics for Engineering Application", + "corequisite": "" + }, + { + "moduleCode": "IE4240", + "title": "Project Management", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IE2111", + "corequisite": "" + }, + { + "moduleCode": "IE4240E", + "title": "Project Management", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TIE4240", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "IE2140E" + }, + { + "moduleCode": "IE4241", + "title": "Work, Technology And Organization", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001", + "corequisite": "" + }, + { + "moduleCode": "IE4242", + "title": "Cost Analysis And Management", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "ACC2002", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IE2111", + "corequisite": "" + }, + { + "moduleCode": "IE4242E", + "title": "Cost Analysis And Management", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TIE4242", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IE2140E", + "corequisite": "" + }, + { + "moduleCode": "IE4243", + "title": "Decision Modeling & Risk Analysis", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IE2100, IE2111", + "corequisite": "" + }, + { + "moduleCode": "IE4244", + "title": "Energy: Security, Competitiveness and Sustainability", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IE1112", + "corequisite": "" + }, + { + "moduleCode": "IE4249", + "title": "Selected Topics In Engineering Management", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IE2111", + "corequisite": "" + }, + { + "moduleCode": "IE4249E", + "title": "Selected Topics in Engineering Management", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "TIE4249", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IE2140E Engineering Economy", + "corequisite": "" + }, + { + "moduleCode": "IE4250", + "title": "System Dynamics Modelling", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IE2111", + "corequisite": "" + }, + { + "moduleCode": "IE4251", + "title": "Process Analysis and Redesign", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE4252", + "title": "Human Factors Engineering: Cases and Tools", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IE 2150 Human Factors Engineering and Design", + "corequisite": "" + }, + { + "moduleCode": "IE4259", + "title": "Selected Topics in Systems Engineering", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE4259E", + "title": "Selected Topics in Systems Engineering", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TIE4259", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE4269", + "title": "Selected Topics in Economics and Service Systems", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IE2140 Engineering Economy", + "corequisite": "" + }, + { + "moduleCode": "IE4299", + "title": "Selected Topics In Industrial Engineering", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IE2100, IE2110", + "corequisite": "" + }, + { + "moduleCode": "IE4299E", + "title": "Selected Topics in Industrial Engineering", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TIE4299", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IE2010E Introduction to Industrial System", + "corequisite": "" + }, + { + "moduleCode": "IE5001", + "title": "Operations Planning and Control I", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "BDC5101 Deterministic Operations Research Models", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5001A", + "title": "Linear Programming and Network Models", + "moduleCredit": 2, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "IE5001 Operations Planning and Control I", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5001B", + "title": "Advanced Models and Techniques", + "moduleCredit": 2, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "IE5001 Operations Planning and Control I", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5002", + "title": "Applied Engineering Statistics", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5003", + "title": "Cost Analysis and Engineering Economy", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5004", + "title": "Engineering Probability And Simulation", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5105", + "title": "Modelling for Supply Chain Systems", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "IE5401 Industrial Logistics\nIE5405 Inventory Systems", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5105A", + "title": "Supply Chain: Performance Drivers and Inventory", + "moduleCredit": 2, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "IE5105 Modeling for Supply Chain Systems", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5105B", + "title": "Supply Chain: Distribution and Transportation", + "moduleCredit": 2, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "IE5105 Modeling for Supply Chain Systems", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5107", + "title": "Material Flow Systems", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5108", + "title": "Facility Layout And Location", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5121", + "title": "Quality Planning And Management", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5122", + "title": "Statistical Quality Control", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5123", + "title": "Reliability Engineering", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5125", + "title": "Software Quality Engineering", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5202", + "title": "Applied Forecasting Methods", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5203", + "title": "Decision Analysis", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5205", + "title": "Healthcare System and Analytics", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5206", + "title": "Energy and Sustainability: A Systems Approach", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "IE4244 Energy; Security, Competitiveness and Sustainability", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5208", + "title": "Systems Approach To Project Management", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5211", + "title": "New Product Management", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "MT5006 Strategic and New Product Management", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5212", + "title": "Management of Technological Innovation", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "MT5007 Management of Technological Innovation", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5213", + "title": "Service Innovation And Management", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5214", + "title": "Infocomm Systems Project Management", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5268", + "title": "Theory and algorithms for nonlinear optimization", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "MA5268", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA3252 Linear and Network Optimisation or BDC6111/IE6001 Foundations on Optimization or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "IE5291", + "title": "Topics in Engineering Management", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5301", + "title": "Human Factors In Engineering And Design", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5307", + "title": "Topics in Human Factors Engineering", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5401", + "title": "Industrial Logistics", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5402", + "title": "Introduction to Systems Engineering and Architecture", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5403", + "title": "Systems Engineering Case Studies", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5404", + "title": "Large Scale Systems Engineering", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5405", + "title": "Inventory Systems", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5407", + "title": "Flexibility in Engineering Systems Design", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "IE5004 – Engineering Probability and Simulation (or equivalent)", + "corequisite": "" + }, + { + "moduleCode": "IE5504", + "title": "Systems Modelling And Advanced Simulation", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5506", + "title": "Computer-Based Decision Systems", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5600", + "title": "Applied Programming for Industrial Systems", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5601", + "title": "Communicating Industrial Analytics Solutions", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5602", + "title": "Statistical Learning in Engineering I", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5603", + "title": "Statistical Learning in Engineering II", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5604", + "title": "Optimisation Modelling and Applications", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5605", + "title": "Simulation-driven Analytics", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Foundation in fundamental statistics", + "corequisite": "" + }, + { + "moduleCode": "IE5611", + "title": "Problem Solving in Industrial Analytics", + "moduleCredit": 6, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5612", + "title": "Industrial Analytics Practicum", + "moduleCredit": 12, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5666", + "title": "Industrial Attachment", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5766", + "title": "Industrial & Systems Engineering Attachment", + "moduleCredit": 8, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5866", + "title": "Industrial & Systems Engineering Internship", + "moduleCredit": 12, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5880", + "title": "Topics in Supply Chain Systems", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "IE5105 Introduction to Supply Chain Systems", + "corequisite": "" + }, + { + "moduleCode": "IE5901", + "title": "Independent Study in L&OR", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5902", + "title": "Research Project in L&OR", + "moduleCredit": 8, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5903", + "title": "Independent Study in PM", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5904", + "title": "Research Project in PM", + "moduleCredit": 8, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5904A", + "title": "Research Project in Project Management I", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5904B", + "title": "Research Project in Project Management II", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "IE5904A Research Project in Project Management I", + "corequisite": "" + }, + { + "moduleCode": "IE5905", + "title": "Independent Study In Systems Engineering", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5906A", + "title": "Research Project in Systems Engineering I", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5906B", + "title": "Research Project in Systems Engineering II", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "IE5906A Research Project in Service Systems I", + "corequisite": "" + }, + { + "moduleCode": "IE5907", + "title": "Independent Study in Operations Research", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5908A", + "title": "Research Project in Operations Research I", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE5908B", + "title": "Research Project in Operations Research II", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "IE5908A Research Project in Operations Research I", + "corequisite": "" + }, + { + "moduleCode": "IE5999", + "title": "Graduate Seminars", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE6001", + "title": "Foundations of Optimization", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "BDC6111 Foundations of Optimization", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE6002", + "title": "Advanced Engineering Statistics", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE6004", + "title": "Stochastic Processes I", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "BDC6112 Stochastic Process I", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE6005", + "title": "Stochastic Models and Optimization", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE6099", + "title": "Ise Research Methodology", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE6107", + "title": "Advanced Material Flow Systems", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE6108", + "title": "Advanced Facility Layout and Location", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE6123", + "title": "Advanced Reliability Engineering", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE6125", + "title": "Advanced Software Quality Engineering", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE6203", + "title": "Advanced Decision Analysis", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE6301", + "title": "Bayesian Modeling and Decision-Making", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "BDC6301", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BDC6112/IE6004 Stochastic Processes I", + "corequisite": "" + }, + { + "moduleCode": "IE6302", + "title": "Discrete Optimization and Algorithms", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "BDC6302", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BDC6111/IE6001 Foundations of Optimization", + "corequisite": "" + }, + { + "moduleCode": "IE6304", + "title": "Robust modelling and optimization", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "BDC6304", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Theory of linear programming, including duality theory.\nBasic knowledge of algorithms and complexity.", + "corequisite": "" + }, + { + "moduleCode": "IE6307", + "title": "Introduction to Data Analytics", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "BDC6307", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Calculus, Linear Algebra, Basic Probability Theory", + "corequisite": "" + }, + { + "moduleCode": "IE6401", + "title": "Advanced Topics in Industrial Logistics", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE6405", + "title": "Advanced Inventory Systems", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE6499A", + "title": "Adv Topics in SE: Metaheuristic & Surrogate Optimization", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Civil & Environmental Engineering / Industrial & Systems Engineering PhD-student standing (and students with no statistics background will need to do some extra reading)", + "corequisite": "" + }, + { + "moduleCode": "IE6505", + "title": "Stochastic Processes II", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "BDC6306 Stochastic Processes II", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "BDC6112/IE6004 Stochastic Processes I.", + "corequisite": "At least one undergraduate course in Calculus." + }, + { + "moduleCode": "IE6507", + "title": "Queues and Stochastic Networks", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "BDC6303 Queues and Stochastic Networks", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "IE6505/ BDC6306 Stochastic Processes II", + "corequisite": "" + }, + { + "moduleCode": "IE6509", + "title": "Theory and Algorithms for Dynamic Programming", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "BDC6305 Theory and Algorithms for Dynamic Programming", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Suitable mathematical maturity", + "corequisite": "" + }, + { + "moduleCode": "IE6511", + "title": "Surrogate and Metaheuristic Global Optimization", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "IE6499A Adv Topics in SE: Metaheuristic & Surrogate Optimization", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Student should be in a PhD program in Engineering or Physical Science or Decision Science (in Business School) or in PhD program of Operations Research Analytics Cluster.", + "corequisite": "" + }, + { + "moduleCode": "IE6520", + "title": "Theory and Algorithms for Online Learning", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Basic knowledge on probability, particularly on conditional probability and martingales, is required. Students from ISEM, IORA or DAO at the businese school are required to have taken BDC6112/IE6004: Stochastic Processes I..\n\nStudents outside ISEM, IORA or DAO should have taken a basic class in probability (graduate level), and feel free to contact the lecturer if you are in doubt about the prerequisite on probability. Basic knowledge on optimization or machine learning is desirable, but not required.", + "corequisite": "" + }, + { + "moduleCode": "IE6880", + "title": "Topics in Operations Research 1", + "moduleCredit": 2, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE6881", + "title": "Topics in Data Science 1", + "moduleCredit": 2, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IE6999", + "title": "Doctoral Seminars", + "moduleCredit": 8, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IEM2201E", + "title": "Ethics in Outer Space", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [], + "preclusion": "Students who have already read an I&E II module.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "I&E I", + "corequisite": "" + }, + { + "moduleCode": "IEU3550", + "title": "Extended Internship", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Any other XX3550 internship modules (Note: Students who change major may not do a second internship in their new major).", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students should: have completed a minimum of 24 MC in European Studies; and have declared European Studies as their Major.", + "corequisite": "" + }, + { + "moduleCode": "IFS2200", + "title": "Information Security Immersion Programme", + "moduleCredit": 6, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed at least 40 MCs.", + "corequisite": "" + }, + { + "moduleCode": "IFS4101", + "title": "Legal Aspects of Information Security", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2107", + "corequisite": "" + }, + { + "moduleCode": "IFS4102", + "title": "Digital Forensics", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3235", + "corequisite": "" + }, + { + "moduleCode": "IFS4103", + "title": "Penetration Testing Practice", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3235 Computer Security", + "corequisite": "" + }, + { + "moduleCode": "IFS4201", + "title": "Information Security Industry Capstone Project", + "moduleCredit": 8, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "IFS4205 (InfoSec capstone project)\nCS3205 (old code) has been changed to IFS4205", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CP3880", + "corequisite": "" + }, + { + "moduleCode": "IFS4202", + "title": "Information Security Practicum Programme", + "moduleCredit": 6, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IFS4201", + "corequisite": "" + }, + { + "moduleCode": "IFS4205", + "title": "Information Security Capstone Project.", + "moduleCredit": 8, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "Students who have taken and passed CS3205 will not be allowed to take\nIFS4205.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS3235", + "corequisite": "" + }, + { + "moduleCode": "IGL3550", + "title": "Extended Global Studies Internship", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "Any other XX3550 internship modules\n(Note: Students who change major may not do a second internship in their new major)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students should have completed a minimum of 24 MC in Global Studies including GL1101E and one of the following Core Modules GL2101, GL2102, GL2103; and have declared Global Studies as their Major.", + "corequisite": "" + }, + { + "moduleCode": "IJS3550", + "title": "Extended Internship", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Any other XX3550 internship modules (Note: Students who change major may not do a second internship in their new major)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students should: have completed a minimum of 24 MC in JS; and have declared JS as their Major.", + "corequisite": "" + }, + { + "moduleCode": "IL5101", + "title": "Strategic Alignment of Business and IT", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IL5102", + "title": "IT Innovation Leadership", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IL5103", + "title": "Business and IT Financial Management", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IL5104", + "title": "Process and Operational Excellence", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IL5105", + "title": "Fundamentals of IT Leadership Transformation", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IL5106", + "title": "Leading Change for IT Leaders", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IL5107", + "title": "IT Leadership Capstone Project", + "moduleCredit": 8, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IL5105 Fundamentals of IT Leadership Transformation IL5101 Strategic Alignment of Business and IT", + "corequisite": "" + }, + { + "moduleCode": "IL5201", + "title": "Measuring and Demonstrating Value from IT Investments", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IL5202", + "title": "IT Governance and Risk Management", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IL5203", + "title": "IT Organisation Development and Talent Management", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IL5204", + "title": "Stakeholder Relationship Management in the IT Eco-System", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IL5801", + "title": "Practice of Digital Business", + "moduleCredit": 12, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IL5802", + "title": "Digital Transformation", + "moduleCredit": 12, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IL5803", + "title": "Digital Leadership and People", + "moduleCredit": 12, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IND5001", + "title": "Introduction to Industry 4.0 and Applications", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IND5002", + "title": "Digital-Physical Integration in Industry 4.0", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IND5003", + "title": "Data Analytics for Sense-making", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IND5004", + "title": "Digital Infrastructure and Transformation", + "moduleCredit": 4, + "department": "SoC Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "IS5002 Digital Transformation", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IND5005", + "title": "Industry Consulting and Application Project", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have passed at least 16 MCs or programme requirements including two core modules (One of which must be IND5001 Introduction to Industry 4.0 and Applications)", + "corequisite": "" + }, + { + "moduleCode": "IND5005A", + "title": "Professional Career Development", + "moduleCredit": null, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IND5005B", + "title": "Industry Consulting and Application Project", + "moduleCredit": 3, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Pass at least 16 MCs with two core modules including\nIND5001.", + "corequisite": "" + }, + { + "moduleCode": "IND5021", + "title": "Managing the Digital Supply Chain", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IND5022", + "title": "Data Analytics for Smart Manufacturing", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IND5023", + "title": "Managing the Financial Supply Chain", + "moduleCredit": 2, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "DSC5211A Supply Chain Coordination and Risk Management", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IND5024", + "title": "Strategic Procurement in a Digital World", + "moduleCredit": 2, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "INM3550", + "title": "Extended Internship", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Any other series-internship modules\n(Note: Students who change major may not do a second internship in their new major)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(1) For NM Major only,\n(2) Read and pass a minimum of 80 MCs AND\n(3) Must read NM3550 concurrently", + "corequisite": "" + }, + { + "moduleCode": "IPS3550", + "title": "Extended Political Science Internship", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "Any other XX3550 internship modules\n(Note: Students who change major may not do a second internship in their new major)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students should:\n- have completed a minimum of 24 MC in Political Science; and\n- have declared Political Science as their Major.", + "corequisite": "" + }, + { + "moduleCode": "IS1103", + "title": "Ethics in Computing", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IS2101", + "title": "Business and Technical Communication", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "ES2002, ES2007D, CS2101, CS2103T and ES1601.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students who are required to read ES1000 and/or ES1102/ES1103 must pass it/them before taking IS2101.", + "corequisite": "" + }, + { + "moduleCode": "IS2102", + "title": "Enterprise Systems Architecture and Design", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS1020 or its equivalent) or (CS2030 or its equivalent)", + "corequisite": "" + }, + { + "moduleCode": "IS2103", + "title": "Enterprise Systems Server-side Design and Development", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS1020 or its equivalent) or (CS2030 or its equivalent)", + "corequisite": "" + }, + { + "moduleCode": "IS2150", + "title": "E-Business Design and Implementation", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS1020 or CS1102 or CS1102S) and IS1112", + "corequisite": "" + }, + { + "moduleCode": "IS3101", + "title": "Management of Information Systems", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [], + "preclusion": "CS3253", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2250 or (IS1103 and IS1105)", + "corequisite": "" + }, + { + "moduleCode": "IS3102", + "title": "Enterprise Systems Development Project", + "moduleCredit": 8, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [], + "preclusion": "CS3214", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2261 or IS2103 (applicable to intakes from AY2005/06 to AY2007/08) or [(CS2261 or IS2103) and (CS2301 or IS2101)] (applicable to intakes from AY2008/09 onwards)", + "corequisite": "" + }, + { + "moduleCode": "IS3103", + "title": "Information Systems Leadership and Communication", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "IS3101", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(IS1103 or equivalent) and (CS2101 or IS2101)", + "corequisite": "" + }, + { + "moduleCode": "IS3106", + "title": "Enterprise Systems Interface Design and Development", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "CS3226", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IS2103", + "corequisite": "" + }, + { + "moduleCode": "IS3150", + "title": "Digital Media Marketing", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IS2101", + "corequisite": "" + }, + { + "moduleCode": "IS3221", + "title": "ERP Systems with Analytics Solutions", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "[(CS1010 or equivalent) and (IS1103 or IS1103FC or IS1103X)] or [(CS1010 or equivalent) and BT1101] or [DAO2702 and IT3010]", + "corequisite": "" + }, + { + "moduleCode": "IS3223", + "title": "IT and Supply Chain Management", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [], + "preclusion": "CS4267", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Pass 60 MCs and [CS2250 or (IS1103 and IS1105)]", + "corequisite": "" + }, + { + "moduleCode": "IS3240", + "title": "Digital Platform Strategy and Architecture", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IS1103/X and (IS2102 or BT2102)", + "corequisite": "" + }, + { + "moduleCode": "IS3251", + "title": "Principles of Technology Entrepreneurship", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IS1103 or equivalent", + "corequisite": "" + }, + { + "moduleCode": "IS3261", + "title": "Mobile Apps Development for Enterprise", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS1020 or equivalent) or CS2020 or (CS2030 or its equivalent) or (CS2040 or its equivalent)", + "corequisite": "" + }, + { + "moduleCode": "IS4010", + "title": "Industry Internship Programme", + "moduleCredit": 12, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "[IS2101 or CS2101] and [IS1105 or IS3101 or IS3103] and [IS2103 or CS2107 or (BT2101 and BT2102)]", + "corequisite": "" + }, + { + "moduleCode": "IS4100", + "title": "IT Project Management", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "IS5110 and CS5212(old code for IS5110)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IS2102 and IS2103 and [(IS1103 or equivalent) or EG2401]", + "corequisite": "" + }, + { + "moduleCode": "IS4102", + "title": "E-Business Capstone Project", + "moduleCredit": 8, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Pass 80 MCs and [CS3240, IS2150, IS3230 and IS3150]", + "corequisite": "" + }, + { + "moduleCode": "IS4103", + "title": "Information Systems Capstone Project", + "moduleCredit": 8, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "IS3102", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IS2101, IS2102, IS2103 and IS3106", + "corequisite": "" + }, + { + "moduleCode": "IS4150", + "title": "Mobile and Ubiquitous Commerce", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Pass 80 MCs and IS2150", + "corequisite": "" + }, + { + "moduleCode": "IS4151", + "title": "Pervasive Technology Solutions and Development", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "IS4150, IS5451, SMA5508, and SG5233", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IS2103 and IS3106", + "corequisite": "" + }, + { + "moduleCode": "IS4152", + "title": "Affective Computing", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IS4242 or IS4303 or CS3244 or BT4240", + "corequisite": "" + }, + { + "moduleCode": "IS4204", + "title": "IT Governance", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IS3101 or IS3103", + "corequisite": "" + }, + { + "moduleCode": "IS4228", + "title": "Information Technologies in Financial Services", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IS3101 or IS3103", + "corequisite": "" + }, + { + "moduleCode": "IS4231", + "title": "Information Security Management", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "CS3254", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2107", + "corequisite": "" + }, + { + "moduleCode": "IS4233", + "title": "Legal Aspects of Information Technology", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "CS4259", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IS3101 or IS3103", + "corequisite": "" + }, + { + "moduleCode": "IS4234", + "title": "Compliance and Regulation Technology", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(IS2102 and IS2103) or CS2103/T or CS2113/T", + "corequisite": "" + }, + { + "moduleCode": "IS4240", + "title": "Business Intelligence Systems", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(IS1103 or equivalent) and (ST2131 or ST2334)", + "corequisite": "" + }, + { + "moduleCode": "IS4241", + "title": "Social Media Network Analysis", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "[(CS1010 or equivalent) and (IS1103 or IS1103FC or IS1103X)] or [(CS1010 or equivalent) and BT1101] or [DAO2702 and IT3010]", + "corequisite": "" + }, + { + "moduleCode": "IS4242", + "title": "Intelligent Systems and Techniques", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "[MA1312 or MA1521 or MA1505 or (MA1511 and MA1512)] and [ST2334 or ST2131 or ST2132] and [IS3106 or BT3103]", + "corequisite": "" + }, + { + "moduleCode": "IS4243", + "title": "Information Systems Consulting", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IS3101 or IS3103", + "corequisite": "" + }, + { + "moduleCode": "IS4250", + "title": "IT-enabled Healthcare Solutioning", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IS1103 or equivalent", + "corequisite": "" + }, + { + "moduleCode": "IS4260", + "title": "E-Commerce Business Models", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [], + "preclusion": "CS4260", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Pass 80 MCs and [CS2250 or (IS1103 and IS1105)]", + "corequisite": "" + }, + { + "moduleCode": "IS4261", + "title": "Designing IT-enabled Business Innovations", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IS3103 or IS3101", + "corequisite": "" + }, + { + "moduleCode": "IS4301", + "title": "Agile IT with DevOps", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IS4100", + "corequisite": "" + }, + { + "moduleCode": "IS4302", + "title": "Blockchain and Distributed Ledger Technologies", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS2102 or BT2102) and ((CS1020 or its equivalent) or (CS2030 or its equivalent) or CS2103/T or CS2113/T)", + "corequisite": "" + }, + { + "moduleCode": "IS4303", + "title": "IT-mediated financial solutions and platforms", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IS2102", + "corequisite": "" + }, + { + "moduleCode": "IS5002", + "title": "Digital Transformation", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IS2102", + "corequisite": "" + }, + { + "moduleCode": "IS5003", + "title": "Platform Design and Economy", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [], + "preclusion": "IS3240", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IS2102", + "corequisite": "" + }, + { + "moduleCode": "IS5004", + "title": "Enterprise Architecture", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IS2102", + "corequisite": "" + }, + { + "moduleCode": "IS5005", + "title": "Digital Engagement", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IS3150", + "corequisite": "" + }, + { + "moduleCode": "IS5006", + "title": "Intelligent System Deployment", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IS4242 or BT4014", + "corequisite": "" + }, + { + "moduleCode": "IS5007", + "title": "Strategising for Global IT-enabled Business Success", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IS4204", + "corequisite": "" + }, + { + "moduleCode": "IS5008", + "title": "Technology Risk & Cyber Resilience", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IS5009", + "title": "Topics in Financial Technology Solutions", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "BT4013", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IS5110", + "title": "Software Project Management", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [], + "preclusion": "IS4100", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IS3103", + "corequisite": "" + }, + { + "moduleCode": "IS5111", + "title": "IT Strategy and Governance", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "IS4204", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IS3103", + "corequisite": "" + }, + { + "moduleCode": "IS5114", + "title": "Global IT Project and Vendor Management", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IS3103", + "corequisite": "" + }, + { + "moduleCode": "IS5116", + "title": "Digital Entrepreneurship", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "IS3251", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IS3103", + "corequisite": "" + }, + { + "moduleCode": "IS5117", + "title": "Digital Government", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IS3103", + "corequisite": "" + }, + { + "moduleCode": "IS5126", + "title": "Hands-on with Applied Analytics", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [], + "preclusion": "BT5126 Hands-on with Business Analytics", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IS5128", + "title": "Digital Innovation", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IS2102 and IS3103", + "corequisite": "" + }, + { + "moduleCode": "IS5151", + "title": "Information Security Policy and Management", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "IS4231", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS2107", + "corequisite": "" + }, + { + "moduleCode": "IS5152", + "title": "Data-Driven Decision Making", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST2334 or ST1131", + "corequisite": "" + }, + { + "moduleCode": "IS5451", + "title": "Pervasive Technology Solutions and Development", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "IS4151, IS4150, SMA5508, and SG5233", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IS6000", + "title": "Qualifying Examination in IS", + "moduleCredit": 6, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IS6001", + "title": "Qualitative Methods for IS Research", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IS6002", + "title": "Quantitative Methods for IS Research", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IS6003", + "title": "Contemporary Theories for IS Research", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IS6004", + "title": "Econometrics for IS Research", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IS6005", + "title": "Seminars in Information Systems I", + "moduleCredit": 2, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IS6100", + "title": "Information Systems Research", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IS6102", + "title": "Topics in Information Systems Ii", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IS6103", + "title": "Design Science Research in Information Systems", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IS6201", + "title": "Seminars in Information System Ii", + "moduleCredit": 2, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IS6202", + "title": "Seminars in Information System Iii", + "moduleCredit": 2, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ISC3550", + "title": "Extended Sociology Internship", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 3, + 4 + ], + "preclusion": "Any other XX3550 internship modules\n(Note: Students who change major may not do a second internship in their new major)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students should have:\n- Completed at least 60 MCs in total (about 3 semesters), including 24 MCs in Sociology (6 modules), and declared Sociology as their Major\n(including as Second Major).\n- Completed SC1101E Making Sense of Society and SC2101 Social Research Methods.", + "corequisite": "" + }, + { + "moduleCode": "ISD5101", + "title": "Integrated Studio Project 1", + "moduleCredit": 8, + "department": "SDE Dean's Office", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ISD5102", + "title": "Integrated Studio Project 2", + "moduleCredit": 8, + "department": "SDE Dean's Office", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ISD5103", + "title": "Green Buildings in the Tropics", + "moduleCredit": 4, + "department": "SDE Dean's Office", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ISD5104", + "title": "Energy and Ecology", + "moduleCredit": 4, + "department": "SDE Dean's Office", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ISD5105", + "title": "Principles of Sustainable Urbanism", + "moduleCredit": 4, + "department": "SDE Dean's Office", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ISD5106", + "title": "Sustainability Models and Blueprints", + "moduleCredit": 4, + "department": "SDE Dean's Office", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ISE3550", + "title": "Extended Internship", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "Any other XX3550 module. [Note: Students who change major may not do a second internship in their new major)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students should: have completed a minimum of 24 MC in Southeast Asian Studies; and have declared Southeast Asian Studies as their Major.", + "corequisite": "" + }, + { + "moduleCode": "ISN3550", + "title": "Extended South Asian Internship", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Any other XX3550 internship modules", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students should: have completed a minimum of 24 MC in South Asian Studies ; and\nhave declared South Asian Studies as their Major.", + "corequisite": "" + }, + { + "moduleCode": "ISY5001", + "title": "Intelligent Reasoning Systems", + "moduleCredit": 11, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ISY5002", + "title": "Pattern Recognition Systems", + "moduleCredit": 13, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ISY5003", + "title": "Intelligent Robotic Systems", + "moduleCredit": 13, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ISY5004", + "title": "Intelligent Sensing Systems", + "moduleCredit": 10, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ISY5005", + "title": "Intelligent Software Agents", + "moduleCredit": 10, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ISY5007", + "title": "Capstone Project in Intelligent Systems", + "moduleCredit": 6, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ISY5001: Intelligent Reasoning systems\nISY5002: Pattern Recognition Systems", + "corequisite": "" + }, + { + "moduleCode": "IT1001", + "title": "Introduction to Computing", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [], + "preclusion": "CS1010 or CS1010E, CS1010FC, CS1010S, CS1101, CS1101C, CS1101S, GEK1511. SoC students and engineering students. Science students requiring this module for their minor should not register it as ULR-Breadth. Arts and Social Science students reading CNM as a subject/concentration and matriculated before AY2001/02 are not allowed to read this module as URL-Breadth", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IT1007", + "title": "Introduction to Programming with Python and C", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "CS1010 or its equivalents, IT1005", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IT2001", + "title": "Network Technology and Applications", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "CS2105, EE3204/E, EE4210; SoC, EEE & CPE students are not allowed to take this module. Arts and social sciences students reading CNM as a subject/concentration are not allowed to read this module as CFM/URL-Breadth.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS1010 or its equivalent) or GEK1511 or IT1001", + "corequisite": "" + }, + { + "moduleCode": "IT2002", + "title": "Database Technology and Management", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "CS2102 or CS2102S. SoC students and Arts and social sciences students reading CNM as a subject/concentration are not allowed to \nread this module as CFM/ULR-Breadth.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS1010 or its equivalent)", + "corequisite": "" + }, + { + "moduleCode": "IT3010", + "title": "Data Management for Business Analytics", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "BT2102 and CS2102", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "DAO2702 or (CS1010S or its equivalent)", + "corequisite": "" + }, + { + "moduleCode": "IT3011", + "title": "Introduction to Machine Learning and Applications", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 2 + ], + "preclusion": "CS3244, BT4240", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS1010 or its equivalent) and (MA1101R or MA1311 or MA1508E or MA1513) and \n(MA1102R or MA1505 or MA1507 or (MA1511 and MA1512) or MA1521) and \n(EE2012/A or MA2216 or ST2131 or ST2334)", + "corequisite": "" + }, + { + "moduleCode": "IT5001", + "title": "Software Development Fundamentals", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "IT5002", + "title": "Computer Systems and Applications", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "IT5001" + }, + { + "moduleCode": "IT5003", + "title": "Data Structures and Algorithms", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "IT5001" + }, + { + "moduleCode": "IT5004", + "title": "Enterprise Systems Architecture Fundamentals", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [], + "preclusion": "IS2102", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "IT5001" + }, + { + "moduleCode": "IT5005", + "title": "Artificial Intelligence", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IT5001 Software Development Fundamentals", + "corequisite": "" + }, + { + "moduleCode": "IT5006", + "title": "Fundamentals of Data Analytics", + "moduleCredit": 4, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [], + "preclusion": "BT5126 Hands-on with business analytics\nIS5126 Hands-on with applied analytics", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IT5001 Software Development Fundamentals", + "corequisite": "" + }, + { + "moduleCode": "IY4000", + "title": "Independent Study Module", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS1101E", + "title": "Introduction to Japan", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "GEK1002", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS2101", + "title": "Approaches to Japanese Studies I", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "JS1101E", + "corequisite": "" + }, + { + "moduleCode": "JS2203", + "title": "Sound, Grammar and Meaning", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LAJ2201 or pass in JLPT level N5/level 4 or placement test", + "corequisite": "" + }, + { + "moduleCode": "JS2212", + "title": "Introduction to Japanese Literature", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS2213", + "title": "Popular Culture in Contemporary Japan", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS2214", + "title": "Ideas and Images in Japanese Culture", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS2216", + "title": "Postwar Japanese Film and Anime", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS2221", + "title": "Organisation of Japanese Business", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS2222", + "title": "Japanese Society and Social Institutions", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS2223", + "title": "Government and Politics of Japan", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS2225", + "title": "Marketing and Consumer Culture in Japan", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS2226", + "title": "Global City Tokyo", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS2227", + "title": "Japan and China: Rivals and Partners", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS2228", + "title": "Gender and Sexuality in Japan", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS2229", + "title": "The Japanese Experience", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS2230", + "title": "Itadakimasu - Food In Japan", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS2231", + "title": "Japan in Southeast Asia", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS2232", + "title": "Japan and Korea", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS2880", + "title": "Field Exposure Japan", + "moduleCredit": 2, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS2880A", + "title": "Field Exposure Japan: Fashion Business", + "moduleCredit": 2, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS3101", + "title": "Approaches to Japanese Studies II", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This module is for students who major in Japanese Studies. Students should have completed JS2101 Approaches to Japanese Studies I and at least LAJ2202 Japanese 3 (or equivalent Japanese language skills).", + "corequisite": "" + }, + { + "moduleCode": "JS3208", + "title": "Approaches to Japanese Linguistics", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LAJ2202 or pass in JLPT level 3 or placement test.", + "corequisite": "" + }, + { + "moduleCode": "JS3210", + "title": "Japan in the Twentieth Century", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS3211", + "title": "Modern Japanese Religion", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS3213", + "title": "Alternative Lives in Contemporary Japan", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS3214", + "title": "Japanese Philosophy and Thought", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS3216", + "title": "Japanese Film and Literature", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS3217", + "title": "Japanese Art and Aesthetics", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS3222", + "title": "Japanese Business Management", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS3223", + "title": "Japan and the Asia-Pacific Region", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS3225", + "title": "Japanese Mass Media", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS3226", + "title": "Japan: The Green Nation?", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS3227", + "title": "Entrepreneurship : Self-Made in Japan", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS3228", + "title": "Japan on the Move", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS3229", + "title": "Field Studies in Japan", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 3 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LAJ2202 or pass in JLPT level 3 or equivalent", + "corequisite": "" + }, + { + "moduleCode": "JS3230", + "title": "Men and Women in Modern Japanese Literature", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS3550", + "title": "Internship", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Any other XX3550 internship modules (Note: Students who change major may not do a second internship in their new major)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students should: have completed a minimum of 24 MC in JS; and have declared JS as their Major.", + "corequisite": "" + }, + { + "moduleCode": "JS4101", + "title": "Research and Writing in Japanese Studies", + "moduleCredit": 5, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "JS4221", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before:\nCompleted 80 MCs, including 28 MCs in JS, with a minimum CAP of 3.50 or be on the Honours track.\n\nCohort 2012 onwards:\nCompleted 80 MCs, including 28 MCs in JS or 28MCs in GL or GL recognised non-language modules with a minimum CAP of 3.20\nor be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "JS4207", + "title": "Readings in Modern Japanese", + "moduleCredit": 5, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LAJ3201 or LAJ3203 or pass in JLPT Levels 2 or 1 / GCE ‘AO’ or ‘A’ Level Japanese or placement test AND completed 80 MCs, including 28 MCs in JS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "JS4208", + "title": "Japanese Language and Society", + "moduleCredit": 5, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LAJ2202 or placement test AND completed 80 MCs, including 28 MCs in JS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "JS4209", + "title": "Selected Topics in Japanese Linguistics", + "moduleCredit": 5, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LAJ2202 or placement test AND completed 80 MCs, including 28 MCs in JS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "JS4211", + "title": "Japanese Culture and Communications", + "moduleCredit": 5, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in JS or 28 MCs in GL/GL recognised non- language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in JS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "JS4213", + "title": "Approaches to Modern Japanese History", + "moduleCredit": 5, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "HY4218", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in JS or 28 MCs in GL/GL recognised non- language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in JS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "JS4214", + "title": "Ideas, Values and Identity in Japan", + "moduleCredit": 5, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in JS or 28 MCs in GL/GL recognised non- language modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "JS4216", + "title": "Tales and Performance in Premodern Japan", + "moduleCredit": 5, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in JS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "JS4217", + "title": "Selected Topics in Japanese Studies", + "moduleCredit": 5, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in JS or 28 MCs in GL/GL recognised non- language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in JS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "JS4223", + "title": "Japanese Public Policy", + "moduleCredit": 5, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in JS or 28 MCs in GL/GL recognised non- language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in JS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "JS4224", + "title": "Japanese International Relations", + "moduleCredit": 5, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in JS or 28 MCs in PS or 28 MCs in GL/GL recognized non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in JS or 28 MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "JS4225", + "title": "Social Dynamics in Modern Japan", + "moduleCredit": 5, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in JS or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in JS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "JS4227", + "title": "Japanese Political Economy", + "moduleCredit": 5, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in JS or 28 MCs in PS or 28MCs in GL/GL recognized non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in JS or 28 MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "JS4229", + "title": "Japanese Translation - Theory & Practice", + "moduleCredit": 5, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LAJ3202 or pass in JLPT level 1 or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "JS4230", + "title": "Advanced Readings in Popular Culture", + "moduleCredit": 5, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in JS or 28 MCs in SC or 28 MCs in GL/GL recognized non-language modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "JS4231", + "title": "Technologies and Traditional Japanese Theatre", + "moduleCredit": 5, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in JS or 28MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in JS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "JS4232", + "title": "FDI and Local Development: Japanese Firms in Asia", + "moduleCredit": 5, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in JS or 28 MCs in SN or 28MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in JS or 28 MCs in SN, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "JS4233", + "title": "Japan’s Immigration Politics in Global Perspective", + "moduleCredit": 5, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in JS or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "JS4401", + "title": "Honours Thesis", + "moduleCredit": 15, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "JS4660", + "attributes": [ + false, + false, + false, + false, + true, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012-2015:\nCompleted 110 MCs including 60 MCs of JS major requirements with a minimum CAP of 3.50.\n\nCohort 2016 onwards:\nCompleted 110 MCs including 44 MCs of JS major requirements with a minimum CAP of 3.50.", + "corequisite": "" + }, + { + "moduleCode": "JS4660", + "title": "Independent Study", + "moduleCredit": 5, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "JS4401", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in JS, with a minimum CAP of 3.20.\n\nCohort 2016 onwards: \nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in JS, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "JS5201", + "title": "Readings in Japanese Studies I", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS5201R", + "title": "Readings in Japanese Studies", + "moduleCredit": 5, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS5202", + "title": "Reading in Japanese Studies Ii", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS5202R", + "title": "Reading in Japanese Studies Ii", + "moduleCredit": 5, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS5203", + "title": "Japanese Literary & Performance Studies", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS5203R", + "title": "Japanese Literary & Performance Studies", + "moduleCredit": 5, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS5204", + "title": "Contemporary Japanese Social Issues", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS5204R", + "title": "Contemporary Japanese Social Issues", + "moduleCredit": 5, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS5205", + "title": "Reading of Japanese Historical Sources", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS5660", + "title": "Independent Study", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS5660R", + "title": "Independent Study", + "moduleCredit": 5, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS6201", + "title": "Readings in Japanese History & Society", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS6202", + "title": "Readings in Japanese Politics & Economics", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS6203", + "title": "Readings in Japanese Literature & Culture", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS6204", + "title": "Readings in Japanese Linguistics", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS6660", + "title": "Independent Study", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "JS6770", + "title": "Graduate Research Seminar", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "KE4001", + "title": "Fundamentals of Knowledge Engineering", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "KE4002", + "title": "Case Based Reasoning", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "KE4003", + "title": "Fuzzy Systems", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "KE4004", + "title": "Business Analytics", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "KE4005", + "title": "Introduction to Knowledge Management", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "KE4101", + "title": "Fundamentals of Knowledge Engineering", + "moduleCredit": 8, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "KE4102", + "title": "Intelligent Systems and Techniques for Business Analytics", + "moduleCredit": 8, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "KE4202", + "title": "Case Based Reasoning", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "KE4203", + "title": "Fuzzy Systems", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "KE4204", + "title": "Business Analytics", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "KE4205", + "title": "Introduction to Knowledge Management", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "KE5001", + "title": "Kbs Development", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "KE5002", + "title": "Advanced Artificial Intelligence Techniques", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "KE5003", + "title": "Hybrid Ke Systems", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "KE5004", + "title": "Genetic Algorithms", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "KE5005", + "title": "Text Mining", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "KE5006", + "title": "Applied Research", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "KE5101", + "title": "Kbs Development", + "moduleCredit": 8, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "KE5102", + "title": "Advanced Techniques", + "moduleCredit": 8, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "KE5103", + "title": "Hybrid Ke Systems", + "moduleCredit": 8, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "KE5105", + "title": "Knowledge Engineering Project", + "moduleCredit": 12, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "KE5106", + "title": "Data Warehousing for Business Analytics", + "moduleCredit": 8, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "KE5107", + "title": "Data Mining Methodology and Methods", + "moduleCredit": 8, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "KE5108", + "title": "Developing Intelligent Systems for Performing Business Analytics", + "moduleCredit": 8, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "KE4102 Intelligent Systems and Techniques for Business Analytics \nKE5107 Data Mining Methodology and Methods", + "corequisite": "" + }, + { + "moduleCode": "KE5109", + "title": "Knowledge Engineering Overseas Practicum", + "moduleCredit": 12, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "Students that select KE5105 Knowledge Engineering Project cannot also select the Knowledge Engineering Overseas Practicum and vice versa.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Before commencing the Knowledge Engineering Overseas Practicum, the students must successfully complete the four MTech KE core courses:\n\nKE4102 Intelligent Systems and Techniques for Business Analytics\nKE5106 Data Warehousing for Business Analytics\nKE5107 Data Mining Methodology and Methods\nKE5108 Developing Intelligent Systems for Performing Business Analytics\n\nIn addition, they must demonstrate in the electives they have taken and/or in their work experience that they have the technical background for the project being offered by NOC.", + "corequisite": "" + }, + { + "moduleCode": "KE5204", + "title": "Genetic Algorithms", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "KE5205", + "title": "Text Mining", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "KE5206", + "title": "Computational Intelligence I", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "KE5207", + "title": "Computational Intelligence II", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "KE5208", + "title": "Sense Making and Insight Discovery", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "There are no hard prerequisites in terms of existing courses, but it would be desirable for students to have some interest in data mining.", + "corequisite": "" + }, + { + "moduleCode": "LA3201", + "title": "History and Theory of Landscape Architecture", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LA4202", + "title": "Planting Design", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LA4203", + "title": "History and Theory of Landscape Architecture", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "LA3201", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LA4212", + "title": "Topics in Tropical Forest Ecology", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LA4301", + "title": "Material and Design", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LA4701", + "title": "MLA Studio: Quarter", + "moduleCredit": 8, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + false, + false, + false, + false + ], + "prerequisite": "Min C in AR3101a and AR3102a", + "corequisite": "" + }, + { + "moduleCode": "LA4702", + "title": "MLA Studio: City", + "moduleCredit": 8, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + false, + false, + false, + false + ], + "prerequisite": "Min C in AR3101a and AR3102a", + "corequisite": "" + }, + { + "moduleCode": "LA5222", + "title": "Urban Ecology and Design", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LA5302", + "title": "Detail Design", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LA5303", + "title": "Urban Greening: Technologies and Techniques", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LA5402", + "title": "Professional Practice", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LA5702", + "title": "MLA Studio: Region", + "moduleCredit": 8, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LA5742", + "title": "Dissertation", + "moduleCredit": 8, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LAB1201", + "title": "Bahasa Indonesia 1", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2, + 4 + ], + "preclusion": "LAM1201 Malay 1", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This module is meant for students with no prior knowledge of the target language. Students with prior knowledge (including spoken proficiency) must contact CLS to take a placement test.", + "corequisite": "" + }, + { + "moduleCode": "LAB2201", + "title": "Bahasa Indonesia 2", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAB1201 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAB3201", + "title": "Bahasa Indonesia 3", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAB2201 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAB3202", + "title": "Bahasa Indonesia 4", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAB3201 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAB4201", + "title": "Bahasa Indonesia 5", + "moduleCredit": 5, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAB3201 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAB4202", + "title": "Bahasa Indonesia 6", + "moduleCredit": 5, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAB4201 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAC1201", + "title": "Chinese 1", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2, + 4 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This module is meant for students with no prior knowledge of the target language. Students with prior knowledge (including spoken proficiency) must contact CLS to take a placement test.", + "corequisite": "" + }, + { + "moduleCode": "LAC2201", + "title": "Chinese 2", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAC1201 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAC2202", + "title": "Chinese Characters Writing & Composition", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Passed ‘O’ and/or ‘A’ Level Chinese as a second language", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For students who have some proficiency in spoken and written Chinese, but are not able to speak and write in Chinese fluently and accurately. It will include those who have read mother-tongue Chinese language ‘B’ syllabus under the MOE system. A placement test and an oral interview are required for enrolment. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAC3201", + "title": "Chinese 3", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAC2201 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAC3202", + "title": "Chinese 4", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAC3201 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAC3203", + "title": "Chinese for Science and Technology", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed Chinese language at GCE 'O' Level or ‘A’ Level or equivalent. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAC3204", + "title": "Chinese for Business & Social Sciences", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed Chinese language at GCE 'O' Level or ‘A’ Level or equivalent. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAC4201", + "title": "Chinese 5", + "moduleCredit": 5, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAC3202 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAC4202", + "title": "Chinese 6", + "moduleCredit": 5, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAC4201 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAD1001", + "title": "Design 1", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LAD1002", + "title": "Design 2", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LAD1001 Design 1", + "corequisite": "" + }, + { + "moduleCode": "LAD1003", + "title": "Introduction to Landscape Architecture", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LAD1004", + "title": "History and Theory of Landscape Architecture", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "LA4203 History and Theory of Landscape Architecture", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LAD1003 Introduction to Landscape Architecture", + "corequisite": "" + }, + { + "moduleCode": "LAD2001", + "title": "Design 3", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Min C grade for LAD1001 Design 1 and LAD1002 Design 2", + "corequisite": "" + }, + { + "moduleCode": "LAD2002", + "title": "Design 4", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Min C grade for LAD1001 Design 1 and LAD1002 Design 2\nLAD2001 as pre-requisite", + "corequisite": "" + }, + { + "moduleCode": "LAD2003", + "title": "Landscape Construction I", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LAD2004", + "title": "Planting Design and Horticulture", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LAD2005", + "title": "Introductory GIS for Landscape Architecture", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LAD3001", + "title": "Design 5", + "moduleCredit": 8, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Min C grade for LAD2001 Design 3 and LAD2002 Design 4", + "corequisite": "" + }, + { + "moduleCode": "LAD3002", + "title": "Design 6", + "moduleCredit": 8, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Min C grade for LAD2001 Design 3 and LAD2002 Design 4\nLAD3001 as pre-requisite", + "corequisite": "" + }, + { + "moduleCode": "LAD3003", + "title": "Professional Practice", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LAD3004", + "title": "Landscape Representation Techniques", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LAD3005", + "title": "Landscape Architecture Internship Programme", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have taken LAD3001 and LAD3002", + "corequisite": "" + }, + { + "moduleCode": "LAD4003", + "title": "Landscape Construction II", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LAD2003 Landscape Construction I", + "corequisite": "" + }, + { + "moduleCode": "LAD4005", + "title": "Topics in Landscape Architecture", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LAF1201", + "title": "French 1", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2, + 3 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This module is meant for students with no prior knowledge of the target language. Students with prior knowledge (including spoken proficiency) must contact CLS to take a placement test.", + "corequisite": "" + }, + { + "moduleCode": "LAF2201", + "title": "French 2", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAF1201 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAF3201", + "title": "French 3", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAF2201or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAF3202", + "title": "French 4", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "LAF3203", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAF3201 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAF3203", + "title": "French for Academic Purposes", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "LAF3202", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAF3201 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAF4201", + "title": "French 5", + "moduleCredit": 5, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAF3202 or LAF3203 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAF4202", + "title": "French 6", + "moduleCredit": 5, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAF4201 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAF4203", + "title": "French Studies 1", + "moduleCredit": 5, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAF4202, or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAF4204", + "title": "French Studies 2", + "moduleCredit": 5, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAF4203 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAG1201", + "title": "German 1", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This module is meant for students with no prior knowledge of the target language. Students with prior knowledge (including spoken proficiency) must contact CLS to take a placement test.", + "corequisite": "" + }, + { + "moduleCode": "LAG2201", + "title": "German 2", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAG1201 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAG3201", + "title": "German 3", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAG2201 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAG3202", + "title": "German 4", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "LAG3203 German for Academic Purposes", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAG3201 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAG3203", + "title": "German for Academic Purposes", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "LAG3202 German 4", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAG3201 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAG4201", + "title": "German 5", + "moduleCredit": 5, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAG3202, LAG3203 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAG4202", + "title": "German 6", + "moduleCredit": 5, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAG4201 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAG4203", + "title": "German Studies 1", + "moduleCredit": 5, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAG4202 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAG4204", + "title": "German Studies 2", + "moduleCredit": 5, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAG4203 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAH1201", + "title": "Hindi 1", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "Hindi 1 is intended for students who are complete beginners. It is not suitable for students who are:  \n- native speakers of Hindi or Urdu  \n- students who have studied Hindi, Urdu, Gujarati, Marathi or Punjabi at 'O' or 'A' levels (or equivalents) or have previously undertaken any formal study of Hindi, Urdu, Gujarati or Punjabi for any duration of time  \n- Students who are from India have to provide a complete transcript of subjects studied to prove that they have not taken Hindi at any level.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This module is meant for students with no prior knowledge of the target language. Students with prior knowledge (including spoken proficiency) must contact CLS to take a placement test.", + "corequisite": "" + }, + { + "moduleCode": "LAH2201", + "title": "Hindi 2", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAH1201 Hindi 1, or its equivalence, or by placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAH3201", + "title": "Hindi 3", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAH2201 Hindi 2 or by placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAH3202", + "title": "Hindi 4", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAH3201 Hindi 3, or by placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAH4201", + "title": "Hindi 5", + "moduleCredit": 5, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAH3202 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAH4202", + "title": "Hindi 6", + "moduleCredit": 5, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAH4201 or a placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAI1732", + "title": "Italian for Singers II", + "moduleCredit": 3, + "department": "Centre for Language Studies", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LAI 1731", + "corequisite": "" + }, + { + "moduleCode": "LAJ1201", + "title": "Japanese 1", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2, + 4 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This module is meant for students with no prior knowledge of the target language. Students with prior knowledge (including spoken proficiency) must contact CLS to take a placement test.", + "corequisite": "" + }, + { + "moduleCode": "LAJ2201", + "title": "Japanese 2", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAJ1201 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAJ2202", + "title": "Japanese 3", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAJ2201 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAJ2203", + "title": "Japanese 4", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAJ2202 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAJ3201", + "title": "Japanese 5", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "LAJ3203 Business Japanese 1", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAJ2203 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAJ3202", + "title": "Japanese 6", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAJ3201, LAJ3203, or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAJ3203", + "title": "Business Japanese 1", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "LAJ3201 (Japanese 5), LAJ3202 (Japanese 6) & JLPT Level 1", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAJ2203 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAJ3204", + "title": "Business Japanese 2", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAJ3203 (Business Japanese 1), LAJ3201 (Japanese 5) or placement test Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAJ3205", + "title": "Media Japanese", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LAJ3201 Japanese 5, LAJ3203 Business Japanese 1 or placement test Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAJ4203", + "title": "Newspaper Reading", + "moduleCredit": 5, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAJ3202, LAJ3204, JLPT Level 2 or 1, GCE ‘AO' level Japanese or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAJ4205", + "title": "Expository Writing & Public Speaking", + "moduleCredit": 5, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAJ3202, LAJ3204, JLPT Level 2 or 1, GCE AO' level Japanese or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAK1201", + "title": "Korean 1", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2, + 4 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This module is meant for students with no prior knowledge of the target language. Students with prior knowledge (including spoken proficiency) must contact CLS to take a placement test.", + "corequisite": "" + }, + { + "moduleCode": "LAK2201", + "title": "Korean 2", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For students who passed LAK1201 (Korean 1) or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAK3201", + "title": "Korean 3", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAK2201 Korea 2 or by placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAK3202", + "title": "Korean 4", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "LAK3203 Korean for Academic Purpose", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAK3201 Korean 3 or by placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAK3203", + "title": "Korean for Academic Purposes", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "LAK3202 Korean 4", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAK3201 Korea 3 or by placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAK4201", + "title": "Korean 5", + "moduleCredit": 5, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LAK3202 Korean 4, LAK3203 Korean for Academic Purposes or by placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAK4202", + "title": "Korean 6", + "moduleCredit": 5, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LAK4201 Korean 5 or by placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAK4203", + "title": "Korean 7", + "moduleCredit": 5, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LAK4202 (Korea 6) or by placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAK4204", + "title": "Korean 8", + "moduleCredit": 5, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LAK4203 Korean 7 or by placement test.", + "corequisite": "" + }, + { + "moduleCode": "LAL1201", + "title": "Tamil 1", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This module is meant for students with no prior knowledge of the target language. Students with prior knowledge (including spoken proficiency) must contact CLS to take a placement test.", + "corequisite": "" + }, + { + "moduleCode": "LAL2201", + "title": "Tamil 2", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAL1201 or placement test", + "corequisite": "" + }, + { + "moduleCode": "LAM1201", + "title": "Malay 1", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "LAB1201 Bahasa Indonesia 1", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This module is meant for students with no prior knowledge of the target language. Students with prior knowledge (including spoken proficiency) must contact CLS to take a placement test.", + "corequisite": "" + }, + { + "moduleCode": "LAM2201", + "title": "Malay 2", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAM1201 Malay 1 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAM2731", + "title": "Department exchange module", + "moduleCredit": 3, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LAM3201", + "title": "Malay 3", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAM2201 Malay 2 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAM3202", + "title": "Malay 4", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAM3201 Malay 3 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAM4201", + "title": "Malay 5", + "moduleCredit": 5, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed LAM3202 Malay 4 or passed the placement test Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAM4202", + "title": "Malay 6", + "moduleCredit": 5, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed LAM4201 Malay 5 or passed the placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAR1201", + "title": "Arabic 1", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This module is meant for students with no prior knowledge of the target language. Students with prior knowledge (including spoken proficiency) must contact CLS to take a placement test.", + "corequisite": "" + }, + { + "moduleCode": "LAR2201", + "title": "Arabic 2", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LAR1201 Arabic 1, or by placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAR3201", + "title": "Arabic 3", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Successful completion of LAR2201 or exemption from it based on placement test results. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAR3202", + "title": "Arabic 4", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Successful completion of LAR3201 or exemption from it based on placement test results. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAR4201", + "title": "Arabic 5", + "moduleCredit": 5, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Successful completion of LAR3202 or by placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAR4202", + "title": "Arabic 6", + "moduleCredit": 5, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Successful completion of LAR4201 or by placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAS1201", + "title": "Spanish 1", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "YLS1201 Introductory Spanish I", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LAS2201", + "title": "Spanish 2", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "YLS1202 Introductory Spanish", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LAS1201 Spanish 1 or YLS1201 Introductory Spanish I, or placement test Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAS3201", + "title": "Spanish 3", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "YLS2201 Intermediate Spanish I", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LAS2201 Spanish 2 or YLS1202 Introductory Spanish II, or placement test Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAS3202", + "title": "Spanish 4", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "YS2202 Intermediate Spanish II", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LAS3201 Spanish 3 or YLS2201 Intermediate Spanish I, or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAS3732", + "title": "Department exchange module", + "moduleCredit": 3, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LAS4201", + "title": "Spanish 5", + "moduleCredit": 5, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "YLS3201 Advanced Spanish I", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LAS3202 Spanish 4 or YLS2202 Intermediate Spanish II, or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAS4202", + "title": "Spanish 6", + "moduleCredit": 5, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "YLS3202 Advanced Spanish II", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LAS4201 Spanish 5 or YLS3201 Advanced Spanish I, or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAS4203", + "title": "Spanish 7", + "moduleCredit": 5, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Level B2.1 according to the CEFR (students will have to take a placement test) or LAS4202 Spanish 6. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAS4204", + "title": "Spanish 8", + "moduleCredit": 5, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Level B2.2 according to the CEFR (students will have to take a placement test) or LAS4203 Spanish 7. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAT1201", + "title": "Thai 1", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This module is meant for students with no prior knowledge of the target language. Students with prior knowledge (including spoken proficiency) must contact CLS to take a placement test.", + "corequisite": "" + }, + { + "moduleCode": "LAT2201", + "title": "Thai 2", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LAT1201 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAT3201", + "title": "Thai 3", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LAT2201 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAT3202", + "title": "Thai 4", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAT3201 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAT4201", + "title": "Thai 5", + "moduleCredit": 5, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAT3202 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAT4202", + "title": "Thai 6", + "moduleCredit": 5, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAT4201 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAV1201", + "title": "Vietnamese 1", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This module is meant for students with no prior knowledge of the target language. Students with prior knowledge (including spoken proficiency) must contact CLS to take a placement test.", + "corequisite": "" + }, + { + "moduleCode": "LAV2201", + "title": "Vietnamese 2", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAV1201 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAV3201", + "title": "Vietnamese 3", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAV2201 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAV3202", + "title": "Vietnamese 4", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAV3201 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAV4201", + "title": "Vietnamese 5", + "moduleCredit": 5, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed LAV3202 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAV4202", + "title": "Vietnamese 6", + "moduleCredit": 5, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LAV4201 or placement test. Student must not have read a higher level module than this module.", + "corequisite": "" + }, + { + "moduleCode": "LAX2743", + "title": "Department exchange module", + "moduleCredit": 4, + "department": "Centre for Language Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC1001A", + "title": "Criminal Law (A)", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC1001B", + "title": "Criminal Law (B)", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC1001C", + "title": "Criminal Law (C)", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC1001D", + "title": "Criminal Law (D)", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC1001E", + "title": "Criminal Law (E)", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC1001F", + "title": "Criminal Law (F)", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC1001G", + "title": "Criminal Law (G)", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC1001H", + "title": "Criminal Law (H)", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC1001I", + "title": "Criminal Law (I)", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC1002A", + "title": "Introduction To Legal Theory (A)", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC1002B", + "title": "Introduction To Legal Theory (B)", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC1002C", + "title": "Introduction to Legal Theory (C)", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC1002D", + "title": "Introduction to Legal Theory (D)", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC1002E", + "title": "Introduction to Legal Theory (E)", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC1002F", + "title": "Introduction to Legal Theory (F)", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC1002G", + "title": "Introduction to Legal Theory (G)", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC1002H", + "title": "Introduction to Legal Theory (H)", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC1002I", + "title": "Introduction to Legal Theory (I)", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC1003", + "title": "Law Of Contract", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC1004", + "title": "Law Of Torts", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC1005", + "title": "Singapore Legal System", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC1006", + "title": "Legal Analysis, Writing And Research I", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC1007", + "title": "Legal Analysis, Writing And Research II", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC1015", + "title": "Singapore Law in Context", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC1016", + "title": "Legal Analysis, Research & Communication", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC1025", + "title": "Singapore Law in Context", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC2001A", + "title": "Comparative Legal Traditions (A)", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC2001B", + "title": "Comparative Legal Traditions (B)", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC2001C", + "title": "Comparative Legal Traditions (C)", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC2001D", + "title": "Comparative Legal Traditions (D)", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC2002", + "title": "Introduction To Trial Advocacy", + "moduleCredit": 0, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC2003", + "title": "Legal Case Studies", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC2004", + "title": "Principles Of Property Law", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC2006A", + "title": "Equity & Trusts (A)", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC2006B", + "title": "Equity & Trusts (B)", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC2006C", + "title": "Equity & Trusts (C)", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC2006D", + "title": "Equity & Trusts (D)", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC2006E", + "title": "Equity & Trusts (E)", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC2006F", + "title": "Equity & Trusts (F)", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC2006G", + "title": "Equity & Trusts (G)", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC2007", + "title": "Constitutional & Administrative Law", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC2008A", + "title": "Company Law (A)", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC2008B", + "title": "Company Law (B)", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC2008C", + "title": "Company Law (C)", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC2008D", + "title": "Company Law (D)", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC2008E", + "title": "Company Law (E)", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC2008F", + "title": "Company Law (F)", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC2008G", + "title": "Company Law (G)", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC2009", + "title": "Pro Bono Service", + "moduleCredit": 0, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC2010A", + "title": "Legal Systems of Asia (A)", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC2010B", + "title": "Legal Systems of Asia (B)", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC2010C", + "title": "Legal Systems of Asia (C)", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC2010D", + "title": "Legal Systems of Asia (D)", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC2010E", + "title": "Legal Systems of Asia (E)", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC2010F", + "title": "Legal Systems of Asia (F)", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC2010G", + "title": "Legal Systems of Asia (G)", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC2010H", + "title": "Legal Systems of Asia (H)", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC2012", + "title": "Trial Advocacy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LC2002 Introduction to Trial Advocacy\nLC2013 Corporate Deals\nLC2003 Legal Case Studies", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC2013", + "title": "Corporate Deals", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LC2002 Introduction to Trial Advocacy\nLC2012 Trial Advocacy \nLC2003 Legal Case Studies", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC3001A", + "title": "Evidence (A)", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC3001B", + "title": "Evidence (B)", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC5001", + "title": "Comparative Legal Traditions in Asia", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC5002", + "title": "Common Law Reasoning & Writing", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC5003", + "title": "Common Law Legal System of Singapore", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC5008A", + "title": "Company Law (a)", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC5010A", + "title": "Legal Systems of Asia (A)", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC5029", + "title": "International Commercial Arbitration", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC5035", + "title": "Taxation Issues in Cross-Border Transactions", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "(1) LL4035/LL5035/LL6035; LL4035V/LL5035V/LL6035V Taxation Issues in Cross-Border Transactions; (2) LL4342/LL5342/LL6342; LL4342V/LL5342V/LL6342V Taxation of Cross-Border Commercial Transactions", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC5035A", + "title": "Taxation Issues in Cross-Border Transactions", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "(1) LL4035/LL5035/LL6035; LL4035V/LL5035V/LL6035V Taxation Issues in Cross-Border Transactions; (2) LL4342/LL5342/LL6342; LL4342V/LL5342V/LL6342V Taxation of Cross-Border Commercial Transactions", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC5035B", + "title": "Taxation Issues in Cross-Border Transactions", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "(1) LL4035/LL5035/LL6035; LL4035V/LL5035V/LL6035V Taxation Issues in Cross-Border Transactions; (2) LL4342/LL5342/LL6342; LL4342V/LL5342V/LL6342V Taxation of Cross-Border Commercial Transactions", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC5035V", + "title": "Taxation Issues in Cross-Border Transactions", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "(1) LL4035/LL5035/LL6035; LL4035V/LL5035V/LL6035V Taxation Issues in Cross-Border Transactions; (2) LL4342/LL5342/LL6342; LL4342V/LL5342V/LL6342V Taxation of Cross-Border Commercial Transactions", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent. \nNote: Company Law or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LC5050", + "title": "Public International Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC5050V", + "title": "Public International Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LC5050.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LC5070", + "title": "Foundations of IP Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC5070V", + "title": "Foundations Of Intellectual Property Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "The Law of Intellectual Property. Students who are taking or have taken LC5070.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LC5074", + "title": "Mergers & Acquisitions", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS compulsory core curriculum or equivalent", + "corequisite": "" + }, + { + "moduleCode": "LC5089", + "title": "Chinese Corporate & Securities Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent", + "corequisite": "" + }, + { + "moduleCode": "LC5093", + "title": "Chinese Intellectual Property Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC5112", + "title": "Common Law of Obligations", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC5114", + "title": "Cross-Border Transactions & Transnational Commercial Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LC5115", + "title": "International Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC5118", + "title": "Foreign Direct Investment Law in Asia", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent", + "corequisite": "" + }, + { + "moduleCode": "LC5126", + "title": "International Corporate Finance", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC5127", + "title": "Common Law Reasoning & Writing", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC5168", + "title": "Banking and International Payments", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LC5186", + "title": "International & Commercial Trusts Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC5204A", + "title": "Carriage of Goods By Sea", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC5204AV", + "title": "Carriage of Goods By Sea", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Students who are taking or have taken Carriage of Goods by Sea.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LC5204B", + "title": "Charterparties", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC5204BV", + "title": "Charterparties", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LC5204B.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LC5225", + "title": "Carriage of Goods by Sea", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC5230", + "title": "Elements of Company Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Students who have studied company law or a similar subject in a commonwealth jurisdiction", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent", + "corequisite": "" + }, + { + "moduleCode": "LC5232", + "title": "Principles of Competition Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students should not have read any competition law or antitrust law module as part of their undergraduate degree programme.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent", + "corequisite": "" + }, + { + "moduleCode": "LC5262AV", + "title": "International Commercial Arbitration", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC5262BV", + "title": "International Commercial Arbitration", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC5262V", + "title": "International Commercial Arbitration", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4029", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LC5264", + "title": "WTO and Regional Integration", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4060B/LL5060B/LL6060B World Trade Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC5265", + "title": "Chinese Business Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4089/LL5089/LL6089 Chinese Corporate & Securities Law\nLL4089V/LL5089V/LL6089V Chinese Corporate & Securities Law\nLC5089 Chinese Corporate & Securities Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Civil law, Contract Law", + "corequisite": "" + }, + { + "moduleCode": "LC5266", + "title": "Trusts, Agency and Partnership Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC5285V", + "title": "International Dispute Settlement", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "LL4285/LL5285/LL6285/LC5285 International Dispute Settlement", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LC5336", + "title": "Topics in Int'l Arbitration & Dispute Resolution", + "moduleCredit": 1, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LC5337", + "title": "Singapore Common Law of Contract", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Sufficient coursework and/or work experience in the common law to be determined by Convenor and Vice Dean (Academic Affairs). Students who have read LC5337S Singapore Common Law of Contract are precluded.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LC5337S", + "title": "Singapore Common Law of Contract", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Sufficient coursework and/or work experience in the common law to be determined by Convenor and Vice Dean (Academic Affairs). Students who have read LC5337 Singapore Common Law of Contract are precluded.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LC5337", + "corequisite": "" + }, + { + "moduleCode": "LC5405A", + "title": "Law of Intellectual Property (a)", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "LL4405B/LL5405B/LL6405B Law of IP & LL4070/LL5070/LC5070/LL6070 Foundations of IP Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LC5405B", + "title": "Law of Intellectual Property (B)", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4405A/LL5405A/LL6405A Law of IP & LL4070/LL5070/LC5070/LL6070 Foundations of IP Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LC6001", + "title": "Comparative Legal Traditions in Asia", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC6002", + "title": "Common Law Reasoning & Writing", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC6003", + "title": "Common Law Legal System of Singapore", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC6008A", + "title": "Company Law (A)", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LC6009GRSII", + "title": "Graduate Research Seminar II (Research Methods)", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LC5009 / LC6009 Graduate Research Seminar", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LL5009GRSI / LL6009GRSI Graduate Research Seminar I (Legal Scholarship)", + "corequisite": "" + }, + { + "moduleCode": "LC6378", + "title": "Doctoral Workshop", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LCC5365", + "title": "Foundations of Common Law and Criminal Law & Procedure", + "moduleCredit": 6, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LCC5366", + "title": "Law of Evidence & Sentencing Law", + "moduleCredit": 3, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LCD5008A", + "title": "Company Law (a)", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LCD5204A", + "title": "Carriage of Goods By Sea", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LCD5204AV", + "title": "Carriage of Goods By Sea", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Students who are taking or have taken Carriage of Goods by Sea.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LCD5204B", + "title": "Charterparties", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LCD5204BV", + "title": "Charterparties", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LCD5204B.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LE1001", + "title": "Law Elective - Exchange", + "moduleCredit": 1, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LE1002", + "title": "Law Elective - Exchange", + "moduleCredit": 1, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LE2001", + "title": "Law Elective - Exchange", + "moduleCredit": 2, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LE3001", + "title": "Law Elective - Exchange", + "moduleCredit": 3, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LE4000", + "title": "Law Elective - Exchange", + "moduleCredit": 0, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LE4000A", + "title": "Law Elective - Exchange", + "moduleCredit": 0, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LE4000B", + "title": "Law Elective - Exchange", + "moduleCredit": 0, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LE4000C", + "title": "Law Elective - Exchange", + "moduleCredit": 0, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LE4000D", + "title": "Law Elective - Exchange", + "moduleCredit": 0, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LI5000", + "title": "Logistics Research Project", + "moduleCredit": 8, + "department": "Logistics Inst - Asia Pac", + "faculty": "Logistics Inst-Asia Pac", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LI5001", + "title": "Research Project", + "moduleCredit": 8, + "department": "Logistics Inst - Asia Pac", + "faculty": "Logistics Inst-Asia Pac", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LI5002", + "title": "Internship Project", + "moduleCredit": 8, + "department": "Logistics Inst - Asia Pac", + "faculty": "Logistics Inst-Asia Pac", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LI5101", + "title": "Supply Chain Mgt Thinking & Practice", + "moduleCredit": 4, + "department": "Logistics Inst - Asia Pac", + "faculty": "Logistics Inst-Asia Pac", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LI5101A", + "title": "Transformational Strategies for Supply Chains", + "moduleCredit": 2, + "department": "Logistics Inst - Asia Pac", + "faculty": "Engineering", + "semester": [], + "preclusion": "LI5101 Supply Chain Management Thinking and Practice", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LI5101B", + "title": "Supply Chain Management Practice", + "moduleCredit": 2, + "department": "Logistics Inst - Asia Pac", + "faculty": "Engineering", + "semester": [], + "preclusion": "LI5101 Supply Chain Management Thinking and Practice", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LI5201", + "title": "Special Topics in Logistics", + "moduleCredit": 4, + "department": "Logistics Inst - Asia Pac", + "faculty": "Logistics Inst-Asia Pac", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LI5202", + "title": "Supply Chain Management Strategies and Case Studies", + "moduleCredit": 4, + "department": "Logistics Inst - Asia Pac", + "faculty": "Logistics Inst-Asia Pac", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LI5203", + "title": "Global Logistics and Supply Chain Management", + "moduleCredit": 4, + "department": "Logistics Inst - Asia Pac", + "faculty": "Logistics Inst-Asia Pac", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LI5101 Supply Chain Management Thinking and Practice, or approval of Director (Degree Education), TLI-AP", + "corequisite": "" + }, + { + "moduleCode": "LI5204", + "title": "Supply Chain Simulation and Optimization", + "moduleCredit": 4, + "department": "Logistics Inst - Asia Pac", + "faculty": "Logistics Inst-Asia Pac", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LI5101 Supply Chain Management Thinking and\nPractice, or approval of course instructor.", + "corequisite": "" + }, + { + "moduleCode": "LI5204A", + "title": "Decision Support for Supply Chain", + "moduleCredit": 2, + "department": "Logistics Inst - Asia Pac", + "faculty": "Engineering", + "semester": [], + "preclusion": "LI5204 Supply Chain Simulation and Optimization", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LI5204B", + "title": "Modelling for Supply Chain Optimization", + "moduleCredit": 2, + "department": "Logistics Inst - Asia Pac", + "faculty": "Engineering", + "semester": [], + "preclusion": "LI5204 Supply Chain Simulation and Optimization", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LI5204A Decision Support for Supply Chain, or approval of course instructor.", + "corequisite": "" + }, + { + "moduleCode": "LL4001", + "title": "Administration Of Criminal Justice", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4002", + "title": "Admiralty Law & Practice", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4002V", + "title": "Admiralty Law & Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Students who are taking or have taken LL4002.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4003V", + "title": "China, India and International Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4003.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4004", + "title": "Aviation Law & Policy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4004V", + "title": "Aviation Law & Policy", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Students who are taking or have taken LL4004.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4005V", + "title": "Bank Documentation", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken Bank Documentation.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent. Note to students from civil law jurisdiction: this module adopts a common law approach.", + "corequisite": "" + }, + { + "moduleCode": "LL4006", + "title": "Banking Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Banking & Negotiable Instruments (LL4610C / LS5607).", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4006V", + "title": "Banking Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL4006.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4007", + "title": "Biotechnology Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Not open to students who have successfully completed Biotechnology Law (LL4309C/LS5382) (LLA4028/LSA4028/LMA4028)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4007V", + "title": "Biotechnology Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4007.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4008A", + "title": "Carriage of Goods By Sea", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4008/LL5008/LL6008 Carriage of Goods By Sea", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4008AV", + "title": "Carriage of Goods By Sea", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Students who are taking or have taken Carriage of Goods by Sea.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4008B", + "title": "Charterparties", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4008/LL5008/LL6008 Carriage of Goods By Sea", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent AND L4008A/LL5008A/LL6008A Carriage of Goods By Sea", + "corequisite": "" + }, + { + "moduleCode": "LL4008BV", + "title": "Charterparties", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL4008B.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4009", + "title": "Chinese Legal Tradition And Legal Chinese", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Not open to students from People's Republic of China. ♣ Subject not offered to Graduate Diploma in Singapore Law students.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent. (b) Students must have obtained a B4 and above in CL or CL2 (AO Level) or B4 and above in Higher Chinese (HCL or CL1)", + "corequisite": "" + }, + { + "moduleCode": "LL4009V", + "title": "Chinese Legal Tradition And Legal Chinese", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Exchange students from law schools in China and post-graduate students who are graduates of law schools in China are precluded from taking this course for credit.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent. (b) Students must have obtained a B4 and above in CL or CL2 (AO Level) or B4 and above in Higher Chinese (HCL or CL1)", + "corequisite": "" + }, + { + "moduleCode": "LL4010", + "title": "Civil Law Tradition", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4010A", + "title": "Topics in the Civil Law Tradition (A): EU Harmonisation", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4010AV", + "title": "Topics in the Civil Law Tradition (A): EU Harmonisation", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4010", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4011", + "title": "Civil Justice & Process", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4011V/LL5011V/LL6011V Civil Justice & Process;\nLL4413/LL5413/LL6413 Civil Justice and Procedure.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nFor Exchange/Graduate students: Students must have studied all the core subjects in a Common Law curriculum.\nNot open to students who are, or have been, legal practitioners or who have worked professionally in any legal field.", + "corequisite": "" + }, + { + "moduleCode": "LL4011V", + "title": "Civil Justice & Process", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4011/LL5011/LL6011 Civil Justice & Process;\nLL4413/LL5413/LL6413 Civil Justice and Procedure.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nFor Exchange/Graduate students: Students must have studied all the core subjects in a Common Law curriculum.\nNot open to students who are, or have been, legal practitioners or who have worked professionally in any legal field.", + "corequisite": "" + }, + { + "moduleCode": "LL4012V", + "title": "Comparative Constitutional Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL4012", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4013V", + "title": "Comparative Environmental Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4013", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4014", + "title": "Construction Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Construction Law (LL4357C / LS5370) or (LLA4036/LMA4036/LDA4036/LSA4036)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4014V", + "title": "Construction Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL4014", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4016A", + "title": "Topics in Int’l Criminal Law (A): Aggression", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4017", + "title": "Contract and Commercial Law in Civil-Law Asia", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Any student pursuing or having obtained a basic law degree in a civil law jurisdiction is precluded from taking this course. This course is for common law students who\nhave not studied the civil law.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent. \n\nContract Law (or the equivalent common law contract course for exchange and graduate students)", + "corequisite": "" + }, + { + "moduleCode": "LL4018", + "title": "Corporate Tax: Profits & Distributions", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4018V", + "title": "Corporate Tax: Profits & Distributions", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL4018", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4019", + "title": "Credit & Security", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent. (b) Company Law (LLB2008) or its equivalent in a common law jurisdiction (may be taken concurrently). (c) Personal Property Law (LLA4074/LMA4074", + "corequisite": "" + }, + { + "moduleCode": "LL4019V", + "title": "Credit & Security", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Students who are taking or have taken LL4019", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4021V", + "title": "Environmental Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4022V", + "title": "Globalization And International Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4022", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4024", + "title": "Indonesian Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4024V", + "title": "Indonesian Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL4024", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4025", + "title": "Rights", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For law students: NUS Compulsory Core Curriculum\nFor non‐law students: Open to Philosophy, Political Science, and USP students.", + "corequisite": "" + }, + { + "moduleCode": "LL4025V", + "title": "Rights", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4025", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4026V", + "title": "Infocoms Law: Competition & Convergence", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4026", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4027", + "title": "International & Comparative Law Of Sale", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4029", + "title": "International Commercial Arbitration", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4029AV", + "title": "International Commercial Arbitration", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4029BV", + "title": "International Commercial Arbitration", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4029V", + "title": "International Commercial Arbitration", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Students who are taking or have taken LL4029", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4030", + "title": "International Commercial Litigation", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Subject not offered to Graduate Diploma in Singapore Law students.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4030V", + "title": "International Commercial Litigation", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4030", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4031", + "title": "International Environmental Law & Policy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4031V", + "title": "International Environmental Law & Policy", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Students who are taking or have taken LL4031", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4032", + "title": "International Investment Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4032V", + "title": "International Investment Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4032", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4033", + "title": "International Legal Process", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "(a) Open only to students who haveobtained prior approval of the convenor. (b) Not open to exchange students.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4033V", + "title": "International Legal Process", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Students who are taking or have taken LL4033", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4034", + "title": "International Regulation of Shipping", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4034V", + "title": "International Regulation of Shipping", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4034.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Core Law Curriculum or its equivalent. Students who have completed a course in Law of the Sea or Ocean Law & Policy may have a slight advantage.", + "corequisite": "" + }, + { + "moduleCode": "LL4035", + "title": "Taxation Issues in Cross-Border Transactions", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "(1) LL4035V/LL5035V/LL6035V / LC5035 / LC5035V / LC5035A / LC5035B Taxation Issues in Cross-Border Transactions; (2) LL4342/LL5342/LL6342; LL4342V/LL5342V/LL6342V Taxation of Cross-Border Commercial Transactions", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent. \nNote: Company Law or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4035V", + "title": "Taxation Issues in Cross-Border Transactions", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "(1) LL4035/LL5035/LL6035/LC5035/LC5035V/LC5035A/ LC5035B Taxation Issues in Cross-Border Transactions; (2) LL4342/LL5342/LL6342; LL4342V/LL5342V/LL6342V Taxation of Cross-Border Commercial Transactions", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent. \nNote: Company Law or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4037", + "title": "Sociology of Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For Law Students: NUS Compulsory Core Law Curriculum or its equivalent; For Non-Law Students: Open to students from Arts and Social Sciences with at least 80 MCs.", + "corequisite": "" + }, + { + "moduleCode": "LL4037V", + "title": "Sociology of Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4037", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For Law Students: NUS Compulsory Core Law Curriculum or its equivalent; For Non-Law Students: Open to students from Arts and Social Sciences with at least 80 MCs.", + "corequisite": "" + }, + { + "moduleCode": "LL4042V", + "title": "Law and Religion", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4042.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For Law - NUS Compulsory Core Curriculum or its equivalent.\nFor Non-Law – At least 3rd year students from Arts and Social Sciences.", + "corequisite": "" + }, + { + "moduleCode": "LL4043", + "title": "Law Of Marine Insurance", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4043V", + "title": "Law Of Marine Insurance", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4043.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4044", + "title": "Mediation", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Not open to students who have successfully completed the Mediation Workshop (LN4301) or its equivalent elsewhere. ♣ Module not offered to Graduate Diploma in Singapore Law students.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4044V", + "title": "Mediation", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Not open to students who have successfully completed Mediation.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4045", + "title": "Negotiation", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Not open to students who have successfully completed Negotiation Workshop (LN4302) or its equivalent elsewhere.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4045V", + "title": "Negotiation", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Note: Not open to students who have successfully completed Negotiation Workshop or its equivalent elsewhere. Not open to incoming exchange students.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4049", + "title": "Principles Of Conflict Of Laws", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Commercial Law in Cross-Border Applications (LL4356C / LS5369) and Introduction to Private International Law (LM5308 /LC5308 / LD5308).", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4049V", + "title": "Principles Of Conflict Of Laws", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4049.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4050", + "title": "Public International Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4050V", + "title": "Public International Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL4050.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4051", + "title": "Principles Of Restitution", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Remedies in Contract, Tort & Restitution (LL4651D), (LLB4078/LMB4078/LDB4078/LSB4078). ♣ Subject not offered to Graduate Diploma in Singapore Law students.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent. (b) Property II (LL3601A) or an equivalent course on Equity & Trusts.", + "corequisite": "" + }, + { + "moduleCode": "LL4054", + "title": "Domestic and International Sale of Goods", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4054V", + "title": "Domestic and International Sale of Goods", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4055", + "title": "Securities Regulation", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4055V/LL5055V/LL6055V Securities Regulation;\nStudents doing or have done any of the following module(s) are precluded: (1) International Corporate Finance [8MC -LL4409/LL5409/LLD5409/LL6409; 4MC - LL4238/LL5238/LL6238; 5MC - LL4238V/LL5238V/LL6238V]; (2) Corporate Finance Law & Practice in Singapore - 4MC - LL4182/LL5182/LL6182; 5MC - LL4182V/LL5182V/LL6182V; (3) 8MC - Securities and Capital Markets Regulation - LL4412/LL5412/LL6412.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent. (b) Company Law (LC2008) or its equivalent in a developed common law jurisdiction (may be taken concurrently).", + "corequisite": "" + }, + { + "moduleCode": "LL4056A", + "title": "Tax Planning And Policy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4056.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent. (b) Company Law or its equivalent in a developed common law jurisdiction", + "corequisite": "" + }, + { + "moduleCode": "LL4056AV", + "title": "Tax Planning And Policy", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4056A", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent. (b) Company Law (LC2008) or its equivalent in a developed common law jurisdiction", + "corequisite": "" + }, + { + "moduleCode": "LL4056B", + "title": "Tax Planning And Policy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Not open to student who have successfully completed Revenue Law (LL4652C / LS5617). ♣ Subject not offered to Graduate Diploma in Singapore Law students.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent. (b) Company Law or its equivalent in a developed common law jurisdiction", + "corequisite": "" + }, + { + "moduleCode": "LL4056BV", + "title": "Tax Planning And Policy", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4056B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent. (b) Company Law (LC2008) or its equivalent in a developed common law jurisdiction", + "corequisite": "" + }, + { + "moduleCode": "LL4057V", + "title": "Theoretical Foundations Of Criminal Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4057.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: NUS Compulsory Core Law Curriculum or equivalent.\n\nFor Non-Law students: Open to students from FASS (Philosophy, Political Science) who have completed 120 MCs. \n\nOpen to students from FASS (Global Studies) who have completed 80 MCs with a minimum of 28 MCs in their major with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: NUS Compulsory Core Law Curriculum or equivalent. For Non-Law students: Open to students from FASS (Philosophy, Political Science) who have completed 120 MCs.", + "corequisite": "" + }, + { + "moduleCode": "LL4059V", + "title": "United Nations Law & Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4059.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4060", + "title": "World Trade Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4060B", + "title": "World Trade Law", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "LL4199A/LL4199B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4061", + "title": "Inquiry", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "For Non-Law Students: Open to students from University Scholars Programme who have read 80MCs or more." + }, + { + "moduleCode": "LL4061V", + "title": "Inquiry", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4061.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "For Non-Law Students: Open to students from University Scholars Programme who have read 80MCs or more." + }, + { + "moduleCode": "LL4062", + "title": "Legal Reasoning & Legal Theory", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For law students: NUS Compulsory Core Curriculum\n\nFor non‐law students: Open to Philosophy, Political Science, and USP students.", + "corequisite": "" + }, + { + "moduleCode": "LL4062V", + "title": "Legal Reasoning & Legal Theory", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4062.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For law students: NUS Compulsory Core Curriculum\n\nFor non‐law students: Open to Philosophy, Political Science, and USP students.", + "corequisite": "" + }, + { + "moduleCode": "LL4063", + "title": "Business & Finance For Lawyers", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent. (b) Company Law (LLB2008) or its equivalent in a common law jurisdiction (may be taken concurrently).", + "corequisite": "" + }, + { + "moduleCode": "LL4063V", + "title": "Business & Finance For Lawyers", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who are taking or have taken LL4063.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent. \n(b) Company Law or its equivalent in a common law jurisdiction (may be taken concurrently)", + "corequisite": "" + }, + { + "moduleCode": "LL4064", + "title": "Competition Law and Policy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Competition Law courses taught in European, American and Singapore law schools.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4064V", + "title": "Competition Law and Policy", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Competition Law courses taught in European, American and Singapore law schools.\nStudents who are taking or have taken LL4064.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4065", + "title": "Comparative Corporate Governance", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent. (b) Company Law (LLB2008) or its equivalent in a common law jurisdiction (may be taken concurrently).", + "corequisite": "" + }, + { + "moduleCode": "LL4067", + "title": "Comparative Criminal Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4069", + "title": "European Union Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4069V", + "title": "European Union Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4070", + "title": "Foundations Of Intellectual Property Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "The Law of Intellectual Property (LLB4067A, LLB4067B). ♣ Subject not offered to Graduate Diploma in Singapore Law students.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4070V", + "title": "Foundations Of Intellectual Property Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "The Law of Intellectual Property. Students who are taking or have taken LL4070.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4071", + "title": "International Patent Law, Policy and Practice", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "May vary from year to year depending on the modules offered by visitors to NUS Law in any given year.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent. \n(b) A foundation or basic knowledge in IP law would be useful.", + "corequisite": "" + }, + { + "moduleCode": "LL4071V", + "title": "International Patent Law, Policy and Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "May vary from year to year depending on the modules offered by visitors to NUS Law in any given year.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent. \n(b) A foundation or basic knowledge in IP law would be useful", + "corequisite": "" + }, + { + "moduleCode": "LL4072B", + "title": "Topics in IP Law B: IP Valuation:Law & Prc", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4073", + "title": "International Criminal Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4073V", + "title": "International Criminal Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4073.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent..", + "corequisite": "" + }, + { + "moduleCode": "LL4074", + "title": "Mergers & Acquisitions", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Company Law (LC2008) or its equivalent in a common law jurisdiction.", + "corequisite": "" + }, + { + "moduleCode": "LL4074V", + "title": "Mergers & Acquisitions", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Must not have taken a substantially similar course. Not open to students who have taken/taking LL4223/LL5223/LL6223 Cross Border Mergers. Not open to students who have taken Mergers and Acquisition (M&A).", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent..", + "corequisite": "" + }, + { + "moduleCode": "LL4075", + "title": "IP and Competition Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4075V", + "title": "IP and Competition Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4075.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent..", + "corequisite": "" + }, + { + "moduleCode": "LL4076", + "title": "IT Law I", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Legal Issues in Electronic Commerce (LLA4022) and Internet Law & Policy (LLA4056).", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4076V", + "title": "IT Law I", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Students who are taking or have taken LL4076.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent..", + "corequisite": "" + }, + { + "moduleCode": "LL4077V", + "title": "IT Law II", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4077.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent..", + "corequisite": "" + }, + { + "moduleCode": "LL4078", + "title": "Law & Practice of Investment Treaty Arbitration", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4079", + "title": "State and Company in Legal-Historical Perspective", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4081", + "title": "Comparative Advocacy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4082", + "title": "Law & Social Movements", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4085", + "title": "International Trusts", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4088", + "title": "Chinese Contract Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4088V", + "title": "Chinese Contract Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Exchange students from law schools in China and postgraduate students who are graduates of law schools in China are precluded from taking this course for credit.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent Note: This course is delivered bi-lingually, yet predominantly in English. It is a plus but not a must that students have learned Chinese Legal Tradition and Legal Chinese (LL4009), or have\nobtained a B4 and above in CL or CL2 ('AO' Level) or B4 and above in Higher Chinese (HCL or CL1).", + "corequisite": "" + }, + { + "moduleCode": "LL4089", + "title": "Chinese Corporate & Securities Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4089V", + "title": "Chinese Corporate & Securities Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL4089.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4093", + "title": "Chinese Intellectual Property Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4093V", + "title": "Chinese Intellectual Property Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4094", + "title": "Law & Practice - The Law Clinic", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who have been in practice as qualified lawyers in the local or other jurisdictions are precluded.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.\nNUS Legal Skills Programme or equivalent, in particular, Legal Analysis, Research and Communication or its equivalent. Singapore Legal System or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4094AV", + "title": "Law & Practice - The Law Clinic", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have been in practice as qualified lawyers in the local or other jurisdictions are precluded.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.\nNUS Legal Skills Programme or equivalent, in particular, Legal Analysis, Research and Communication or its equivalent. Singapore Legal System or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4094BV", + "title": "Law & Practice - The Law Clinic", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have been in practice as qualified lawyers in the local or other jurisdictions are precluded.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.\nNUS Legal Skills Programme or equivalent, in particular, Legal Analysis, Research and Communication or its equivalent. Singapore Legal System or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4094CV", + "title": "Law & Practice - The Law Clinic", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have been in practice as qualified lawyers in the local or other jurisdictions are precluded.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.\nNUS Legal Skills Programme or equivalent, in particular, Legal Analysis, Research and Communication or its equivalent. Singapore Legal System or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4094V", + "title": "Law & Practice - The Law Clinic", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have been in practice as qualified lawyers in the local or other jurisdictions are precluded.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.\nNUS Legal Skills Programme or equivalent, in particular, Legal Analysis, Research and Communication or its equivalent. Singapore Legal System or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4096", + "title": "International Trademark Law and Policy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "a) NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4096V", + "title": "International Trademark Law and Policy", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4096.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4097", + "title": "Islamic Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Year 1 & 2 Compulsory Law Curriculum or equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4097V", + "title": "Islamic Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4097.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4099", + "title": "Maritime Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4099V", + "title": "Maritime Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL4099.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4100", + "title": "Arbitration and Dispute Resolution in China", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4100V/LL5100V/LL6100V Arbitration and Dispute Resolution in China", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4100V", + "title": "Arbitration and Dispute Resolution in China", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4100/LL5100/LL6100 Arbitration and Dispute Resolution in China", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4102", + "title": "Advanced Torts", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Law of Torts", + "corequisite": "" + }, + { + "moduleCode": "LL4102V", + "title": "Advanced Torts", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4104", + "title": "Jurisprudence", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For law students: NUS Compulsory Core Curriculum or its equivalent\n\nFor non-law students: 3rd & 4th Year students from Arts & Social Sciences Faculty", + "corequisite": "" + }, + { + "moduleCode": "LL4104V", + "title": "Jurisprudence", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4104.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4107V", + "title": "Partnership and Alternative Business Vehicles", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4109", + "title": "International Law & Asia", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4109V", + "title": "International Law & Asia", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Students who are taking or have taken LL4109.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4111V", + "title": "International Copyright Law and Policy", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4111.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4122", + "title": "The Contemporary Indian Legal System", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4122V", + "title": "The Contemporary Indian Legal System", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4122", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4123", + "title": "International Insolvency Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4125", + "title": "Law And Development In China", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4125V", + "title": "Law And Development In China", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4125", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4128", + "title": "Chinese Maritime Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4129", + "title": "Indian Business Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For Law Students: NUS Compulsory Core Law Curriculum or its equivalent; For Non-Law Students: Open to 3rd & 4th year students from Business School who have read 80MCs or more.", + "corequisite": "" + }, + { + "moduleCode": "LL4129V", + "title": "Indian Business Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4129", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: NUS Compulsory Core Curriculum or its equivalent.\n\nA foundational course on constitutional and administrative law (from either a common law or some other jurisdiction). \n\nFor Non-Law students: Open to students from Business School who have completed 80MCs. \n\nOpen to students from FASS (Global Studies) who have completed 80 MCs with a minimum of 28 MCs in their major with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: NUS Compulsory Core Curriculum or its equivalent. \n\nA foundational course on constitutional and administrative law (from either a common law or some other jurisdiction).\n\nFor Non-Law students: Open to students from Business School who have completed 80MCs.", + "corequisite": "" + }, + { + "moduleCode": "LL4131", + "title": "Law, Governance & Development in Asia", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4131V", + "title": "Law, Governance & Development in Asia", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4131.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4133", + "title": "Human Rights in Asia", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4133V", + "title": "Human Rights in Asia", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4133.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4134", + "title": "Crossing Borders: Law, Migration & Citizenship", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For law students: NUS Compulsory Core Curriculum or its equivalent\nFor non‐law students: 3rd & 4th Year students from Arts & Social Sciences Faculty", + "corequisite": "" + }, + { + "moduleCode": "LL4134V", + "title": "Crossing Borders: Law, Migration & Citizenship", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4134.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4135", + "title": "Patent Law & Practice: Perspectives from the U.S", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "(1) LL4071/LL5071/LL6071; LL4071V/LL5071V/LL6017V International Patent Law, Policy and Practice; \n(2) LL4405B/LL5405B/LL6405B/LC5405B Law of Intellectual Property (B); \n(3) LL4007/LL5007/LL6007; LL4007V/LL5007V/LL6007V Biotechnology Law;\n(4) LL4076/LL5076/LL6076; LL4076V/LL5076V/LL6076V IT Law I\n(5) LL4135V/LL5135V/LL6135V Patent Law and Practice: Perspectives from the U.S.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4138", + "title": "Int'l & Comp Law of Sale in Asia", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4138V", + "title": "Int'l & Comp Law of Sale in Asia", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4138", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4140", + "title": "Law of the Sea: Theory and Practice", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4140V/LL5140V/LL6140V/LLD5140V Law of the Sea: Theory and Practice;\nLL4140V/LL5140V/LL6140V/LLD5140V Ocean Law & Policy in Asia; LL4046V/LL5046V/LL6046V Ocean Law & Policy", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4140V", + "title": "Law of the Sea: Theory and Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4140/LL5140/LL6140/LLD5140 Law of the Sea: Theory and Practice;\nLL4140/LL5140/LL6140/LLD5140 Ocean Law & Policy in Asia; LL4046/LL5046/LL6046 Ocean Law & Policy", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4146", + "title": "Law & Society", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4146V", + "title": "Law & Society", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL4146", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4148", + "title": "Secured Transactions Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Credit & Security (LL4019/LL5019/LL6019; LL4019V/LL5019V/LL6019V)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4150", + "title": "International Investment Law and Arbitration", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4150V/LL5150V/LL6150V International Investment Law and Arbitration", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4150V", + "title": "International Investment Law and Arbitration", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4150/LL5150/LL6150 International Investment Law and Arbitration", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4153", + "title": "Int'l Police Enforcement Cooperation", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4155", + "title": "Topics in Law and Economics", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4158", + "title": "Climate Change Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4158V/LL5158V/LL6158V Climate Change Law;\nLL4221/LL5221/LL6221; LL4221V/LL5221V/LL6221V Climate Change Law & Policy.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4158V", + "title": "Climate Change Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4158/LL5158/LL6158 Climate Change Law;\nLL4221/LL5221/LL6221; LL4221V/LL5221V/LL6221V Climate Change Law & Policy.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4159", + "title": "The Economic Analysis of Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who have done Economic Analysis of Law [Module code: L56.3020] under the NYU@NUS Summer Session are precluded. LL4159V/LL5159V/LL6159V The Economic Analysis of Law.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4159V", + "title": "The Economic Analysis of Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who have done Economic Analysis of Law [Module code: L56.3020] under the NYU@NUS Summer Session are precluded. LL4159/LL5159/LL6159 The Economic Analysis of Law.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4161", + "title": "Intelligence Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4161V", + "title": "Intelligence Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4161", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4162", + "title": "Singapore Corporate Governance", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent. Previously completed a course in Company Law.", + "corequisite": "" + }, + { + "moduleCode": "LL4162V", + "title": "Singapore Corporate Governance", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent. Previously completed a course in Company Law.", + "corequisite": "" + }, + { + "moduleCode": "LL4164", + "title": "International Projects Law & Practice", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4164V", + "title": "International Projects Law & Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Students who are taking or have taken LL4164.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4170", + "title": "Comparative Conflict of Laws", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4171", + "title": "ASEAN Environmental Law, Policy & Governance", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4171V", + "title": "ASEAN Environmental Law, Policy & Governance", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken 4171.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4172", + "title": "Japanese Corporate Law & Governance", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4173", + "title": "Comparative Corporate Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4173V", + "title": "Comparative Corporate Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL4173.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4175", + "title": "Global Legal Orders: Interdisciplinary Perspectives", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4175V", + "title": "Global Legal Orders: Interdisciplinary Perspectives", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4175.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4177", + "title": "Entertainment Law: Pop Iconography & Celebrity", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4177V", + "title": "Entertainment Law: Pop Iconography & Celebrity", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Students who are taking or have taken LL4177.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4178", + "title": "Law and Practice of Investment Treaties", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Must not have taken a substantially similar course. \nNot open to students who have taken/taking (1) LL4032/LL5032/LL6032; LL4032V/LL5032V/LL6032V International Investment Law; (2) LL4078/LL5078/LL6078; LL4078V/LL5078V/LL6078V Law & Practice of Investment Treaty Arbitration.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4178V", + "title": "Law and Practice of Investment Treaties", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Must not have taken a substantially similar course. \nNot open to students who have taken/taking (1) LL4032/LL5032/LL6032; LL4032V/LL5032V/LL6032V International Investment Law; (2) LL4078/LL5078/LL6078; LL4078V/LL5078V/LL6078V Law & Practice of Investment Treaty Arbitration.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4179", + "title": "International Alternative Dispute Resolution", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4180", + "title": "Choice of Law & Jurisdiction in Int’l Commercial Contracts in Asia", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4185", + "title": "Government Regulations: Law, Policy & Practice", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4185V", + "title": "Government Regulations: Law, Policy & Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4187", + "title": "Philosophical Foundations of Contract Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4188", + "title": "Corporate Law and Finance", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4409/LLD5409/LL6409 International\nCorporate Finance\n• LL4182/LLD5182/LL6182 Corporate Finance\nLaw and Practice in Singapore\nLL4055/LL5055/LL6055 Securities Regulation", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For Law students,\n• LC2008 Company Law\nFor Business students,\n• BSP1004 Legal Environment Of Business\n• FNA2004 Finance", + "corequisite": "" + }, + { + "moduleCode": "LL4189", + "title": "Corporate Social Responsibility", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4189V/LL5189V/LL6189V Corporate Social Responsibility", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4189V", + "title": "Corporate Social Responsibility", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4189/LL5189/LL6189 Corporate Social Responsibility", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4190", + "title": "Freedom of Speech: Critical & Comparative Perspectives", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4190V", + "title": "Freedom of Speech: Critical & Comparative Perspectives", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4190.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4191", + "title": "Wealth Management Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent (b) Principles of Conflict of Laws [LL4049] is recommended.", + "corequisite": "" + }, + { + "moduleCode": "LL4192", + "title": "Private International Law of IP", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4193", + "title": "An Introduction to Negotiating & Drafting Commercial Contracts", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4193V", + "title": "An Introduction to Negotiating & Drafting Commercial Contracts", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4193.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4194", + "title": "Partnership and LLP Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4195V", + "title": "International Economic Law & Relations", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4195.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4197", + "title": "Comparative State and Religion in Southeast Asia", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For law students: NUS Compulsory Core Curriculum or its equivalent\n\nFor non‐law students: 3rd & 4th Year students from Arts & Social Sciences Faculty who has completed PS1101E Introduction to Politics", + "corequisite": "" + }, + { + "moduleCode": "LL4197V", + "title": "Comparative State and Religion in Southeast Asia", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4197.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For law students: NUS Compulsory Core Curriculum or its equivalent..\n\nFor non‐law students: 3rd & 4th Year students from Faculty of Arts & Social Sciences who have completed PS1101E Introduction to Politics.", + "corequisite": "" + }, + { + "moduleCode": "LL4202", + "title": "ASEAN Economic Community Law and Policy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4202V", + "title": "ASEAN Economic Community Law and Policy", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL4202.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent..", + "corequisite": "" + }, + { + "moduleCode": "LL4203", + "title": "International Moots and Other Competitions", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4203A", + "title": "International Moots and Other Competitions", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4203B", + "title": "International Moots and Other Competitions", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4203C", + "title": "International Moots and Other Competitions", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4204", + "title": "Islamic Finance Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4205", + "title": "Maritime Conflict of Laws", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "LL4002 Admiralty Law and Practice (Co-requisite)" + }, + { + "moduleCode": "LL4205V", + "title": "Maritime Conflict of Laws", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL4205.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4208", + "title": "Advanced Criminal Legal Process", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4208V", + "title": "Advanced Criminal Legal Process", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL4208.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4209", + "title": "Legal Argument & Narrative", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4209V", + "title": "Legal Argument & Narrative", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL4209.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4210", + "title": "Intellectual Property And International Trade", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4210V", + "title": "Intellectual Property And International Trade", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4210.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4211", + "title": "International Public Monetary and Payment Systems Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4213", + "title": "Transnational Law in Theory and Practice", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS compulsory core curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4214", + "title": "International and Comparative Oil and Gas Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4216", + "title": "Cyber Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4217", + "title": "Comparative & International Anti-Corruption Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4218V", + "title": "Asian Legal Studies Colloquium", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4218.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4219", + "title": "The Trial of Jesus in Western Legal Thought", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4220", + "title": "International Business Transactions", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4221", + "title": "Climate Change Law & Policy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4222", + "title": "The Law & Politics of International Courts & Tribunals", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4223", + "title": "Cross Border Mergers", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent. Must have read Tax Module or Securities Regulation", + "corequisite": "" + }, + { + "moduleCode": "LL4224", + "title": "Cybercrime & Information Security Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4225", + "title": "Topics in the Law and Economics of Competition Policy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4226", + "title": "Multimodal Transport Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4226V", + "title": "Multimodal Transport Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4226.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4227", + "title": "Philanthropy, Non-profit Organizations, and the Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4228", + "title": "The Use of Force in International Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4228V", + "title": "The Use of Force in International Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4228.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4229", + "title": "Corporate Governance in the US and UK", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4065/LL5065/LL6065 Comparative Corporate \nGovernance & LL4162/LL5162/LL6162 Corporate \nGovernance in Singapore", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4231", + "title": "Transition and the Rule of Law in Myanmar", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4233", + "title": "European Company Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4233V", + "title": "European Company Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4233.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4234", + "title": "Property Theory", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For law students: NUS Compulsory Core Curriculum For non-law students: Open to Philosophy, Political Science, and USP students.", + "corequisite": "" + }, + { + "moduleCode": "LL4234V", + "title": "Property Theory", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4234.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4235", + "title": "International Contract Law: Principles and Practice", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4235V/LL5235V/LL6235V International Contract Law: Principles and Practice", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4235V", + "title": "International Contract Law: Principles and Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4235/LL5235/LL6235 International Contract Law: Principles and Practice", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4237V", + "title": "Law, Institutions, and Business in Greater China", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4238", + "title": "International Corporate Finance", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students should not have done a substantially similar subject. Students doing or have done any of the following module(s) are precluded: \n1) Securities Regulation [LL4055/LL5055/LL6055]; \n(2) Corporate Law & Finance [LL4188/LL5188/LLD5188/LL6188]; \n(3) Corporate Finance Law & Practice in Singapore [LL4182/LL5182/LLD5182/LL6182]; \n(4) International Corporate Finance [LL4409/LL5409/LL6409]", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent; Law of Contract [LC1003 or equivalent]; \nCompany Law [LC2008/LC5008/LCD5008/LC6008]", + "corequisite": "" + }, + { + "moduleCode": "LL4238V", + "title": "International Corporate Finance", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4238.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4239V", + "title": "Law & Politics in South Asia", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent For non law students from FASS (with at least 80MCs)", + "corequisite": "Open only to upper year students from FASS and allied departments (with at least 80 MCs)." + }, + { + "moduleCode": "LL4241", + "title": "Financial Stability and the Regulation of Banks", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4242V", + "title": "Financial Regulation and Central Banking", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have read the following module are precluded:\n(1) Financial Stability and the Regulation of Banks [LL4241/LL5241/LL6241;LL4241V/LL5241V/LL6241V]", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4243", + "title": "Law, Economics, Development, and Geography", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4243V/LL5243V/LL6243V Law, Economics, Development, and Geography", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent\n\nFor Non-Law students: \nOpen to students from FASS (Global Studies) who have completed 80 MCs with a minimum of 28 MCs in their major with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "LL4243V", + "title": "Law, Economics, Development, and Geography", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4243/LL5243/LL6243 Law, Economics, Development, and Geography", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: NUS Compulsory Core Curriculum or its equivalent \n\nFor Non-Law students: Open to students from FASS (Global Studies) who have completed 80 MCs with a minimum of 28 MCs in their major with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4244V", + "title": "Criminal Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Students taking this module will be precluded from LL4208/LL5208/LL6208 & LL4208V/LL5208V/LL6208V ACLP, and vice versa.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Core Law Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4245V", + "title": "Regulatory Foundations of Public Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "LL4245/LL5245/LL6245 Regulatory Foundations of Public Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: NUS Compulsory Core Curriculum or its equivalent. A foundational course on constitutional and administrative law (from either a common law or some other jurisdiction). \n\nFor Non Law students from FASS (Political Science - with at least 80 MCs).\n\nCohort 2020 onwards: NUS Compulsory Core Curriculum or its equivalent. A foundational course on constitutional and administrative law (from either a common law or some other jurisdiction).", + "corequisite": "" + }, + { + "moduleCode": "LL4246", + "title": "International Carriage of Passengers by Sea", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4247V", + "title": "International Economic Law & Globalisation", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4249", + "title": "Shareholders' Rights & Remedies", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4250", + "title": "Principles of Equity Financing", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4251", + "title": "International Humanitarian Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4251V", + "title": "International Humanitarian Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4252", + "title": "The EU and its Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4253V", + "title": "The Law of Treaties", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4254V", + "title": "Developing States in a Changing World Order", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4254/LL5254/LL6254 Developing States in a Changing World Order", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4255V", + "title": "Trade Remedy Law & Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4256", + "title": "Comparative Constitutional Government", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4257", + "title": "Law & Finance", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4258V", + "title": "Personal Property Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who have read: LL4047/LL5047/LL6047/ LL4047V/LL5047V/LL6047V Personal Property I – Tangible; LL4168/LL5168/LL6168/ LL4168V/LL5168V/LL6168V Personal Property Law II – Intangible & LL4411/LL5411/LL6411 Personal Property Law (8MC) are precluded.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4259AV", + "title": "Alternative Investments", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4314/LL5314/LL6314; LL4314V/LL5314V/LL6314 Private Equity and Venture Capital: Law and Practice", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4259V", + "title": "Alternative Investments", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4314/LL5314/LL6314; LL4314V/LL5314V/LL6314 Private Equity and Venture Capital: Law and Practice", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4260V", + "title": "Chinese Commercial Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students should not have had past practice experience in China and should not have taken a substantially similar course.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4261V", + "title": "Employment Law & Migrant Workers Clinic", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) Only Singapore Citizens for externships at the Ministry of\nManpower beginning in July; (b) NUS Compulsory Core Law\nCurriculum, NUS Legal Skills Programme or equivalent; (c)\nCrossing Borders: Law, Migration & Citizenship\n[LL4134/LL5134/LL6134; LL4134V/LL5134V/LL6134V] (may be\ntaken concurrently).", + "corequisite": "Crossing Borders: Law, Migration and Citizenship (LL4134; LL5134; LL6134 / LL4134V; LL5134; LL6134)" + }, + { + "moduleCode": "LL4263V", + "title": "Intellectual Property Rights and Competition Policy", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "IP and Competition Law (LL4075V/LL5075V/LL6075V;\nLL4075/LL5075/LL6075)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "Law of Intellectual Property A (LL4405A/LL5405A/LL6405A/LC5405A) Law of Intellectual Property B (LL4405B/LL5405B/LL6405B/LC5405B) Foundations of IP Law (LL4070V/LL5070V/LL6070V/LC5070V; LL4070/LL5070/LL6070/LC5070]" + }, + { + "moduleCode": "LL4267V", + "title": "Architecting Deals: A Framework of Private Orderings", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4268", + "title": "Remedies", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4269", + "title": "Privacy and Intellectual Property", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Privacy Law: Critical & Comparative Perspectives\nLL4169/LL5169/LL6169\nLL4169V / LL5169V / LL6169V", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4270", + "title": "International Human Rights of Women", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4271", + "title": "Law and Policy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4272", + "title": "International Financial System: Law and Practice", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Financial Stability & The Regulation of Banks\nLL4241; LL5241; LL6241 / LL4241V; LL5241V; LL6241V", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4273", + "title": "European & International Competition Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4274", + "title": "Comparative GST Law & Policy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4275", + "title": "International Institutional Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4276", + "title": "Advanced Contract Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Philosophical Foundations of Contract Law\nLL4187/LL5187/LL6187\nLL4187V/LL5187V/LL6187V", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent Contract Law", + "corequisite": "" + }, + { + "moduleCode": "LL4277V", + "title": "Medical Law and Ethics", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who have read LL4400/LL5400/LL6400 BIOMEDICAL LAW & ETHICS are precluded.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4278V", + "title": "Trade and Investment Law in the Asia-Pacific", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "Public International Law: LL4050; LL5050; LL6050; LC5050 / LL4050V; LL5050V; LL6050V; LC5050V" + }, + { + "moduleCode": "LL4279V", + "title": "Access to Justice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4280V", + "title": "Crime and Companies", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4281V", + "title": "Civil Procedure", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4011; LL5011; LL6011 Civil Justice and Process\nLL4011V; LL5011V; LL6011V Civil Justice and Process", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4282V", + "title": "Resolution of Transnational Commercial Disputes", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4283V", + "title": "Artificial Intelligence, Information Science & Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent\nInformation Technology Law I [LL4076/LL5076/LL6076;\nLL4076V/LL5076V/LL6076V] or Information Technology Law II\n[LL4077/LL5077/LL6077; LL4077V/LL5077V/LL6077V]\n\nGCE “A” Level Mathematics (at least), with basic understanding of\nprobability theory and linear algebra \nProgramming skills in e.g. MatLab/Octave/Java/Python/R is a bonus.", + "corequisite": "" + }, + { + "moduleCode": "LL4284", + "title": "Confucianism and Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4285V", + "title": "International Dispute Settlement", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "LL4285/LL5285/LL6285/LC5285 International Dispute Settlement", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4286V", + "title": "Transnational Terrorism and International Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4287V", + "title": "ASEAN Law and Policy", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4288V", + "title": "Business, International Commerce and the European Union", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4288/LL5288/LL6288 Business, International Commerce and the European Union", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4289V", + "title": "The Evolution of International Arbitration", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4289/LL5289/LL6289 The Evolution of International Arbitration", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent. At least one prior course in international law or international arbitration, or taken concurrently", + "corequisite": "" + }, + { + "moduleCode": "LL4290V", + "title": "Legal Research: Method & Design", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "LL4290/LL5290/LL6290 Legal Research: Method & Design", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4291", + "title": "Legal Pluralism and Global Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4291V/LL5291V/LL6291V Legal Pluralism and Global Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nOne prior course in either (i) law and the social sciences (anthropology, sociology, economics), or (ii) LL4050V/LL5050V/6050V/LC5050V; LL4050/LL5050/LL6050/LC5050 Public International Law or its equivalent..", + "corequisite": "" + }, + { + "moduleCode": "LL4291V", + "title": "Legal Pluralism and Global Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4291/LL5291/LL6291 Legal Pluralism and Global Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nOne prior course in either (i) law and the social sciences (anthropology, sociology, economics), or (ii) LL4050V/LL5050V/6050V/LC5050V; LL4050/LL5050/LL6050/LC5050 Public International Law or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4292V", + "title": "State Responsibility: Theory and Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "LL4292/LL5292/LL6292 State Responsibility: Theory and\nPractice", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4295", + "title": "Conflict of Laws in Int’l Commercial Arbitration", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4295V/LL5295V/LL6295V Conflict of Laws in Int’l Commercial Arbitration", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4296", + "title": "Imitation, Innovation and Intellectual Property", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4296V/LL5296V/LL6296V Imitation, Innovation and Intellectual Property", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nStudents should ideally have taken a module in intellectual property or concurrently enrolled in one.", + "corequisite": "" + }, + { + "moduleCode": "LL4297", + "title": "Practice of Corporate Finance and the Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4297V/LL5297V/LL6297V Practice of Corporate Finance and the Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4298", + "title": "International Finance", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4298V/LL5298V/LL6298V International Finance", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4299", + "title": "Advanced Issues in the Law & Practice of Int’l Arbitration", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4299V/LL5299V/LL6299V Advanced Issues in the Law & Practice of Int’l Arbitration", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4300", + "title": "Copyright in the Internet Age", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "(1) LL4076/LL5076/LL6076; LL4076V/LL5076V/LL5076V IT Law I\n(2) LL4300V/LL5300V/LL6300V Copyright in the Internet Age", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4301", + "title": "Topics in Constitutional Law: Socio-Economic Rights", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4301V/LL5301V/LL6301V Topics in Constitutional Law: Socio-Economic Rights", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4302", + "title": "Int'l Regulation of Finance & Investment Markets", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4302V/LL5302V/LL6302V Int’l Regulation of Finance & Investment Markets", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4302V", + "title": "Int'l Regulation of Finance & Investment Markets", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4302/LL5302/LL6302 Int’l Regulation of Finance & Investment Markets", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4303", + "title": "Law and Literature", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4303V/LL5303V/LL6303V Law and Literature", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4304", + "title": "Global Comparative Constitutional Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "(1) LL4012/LL5012/LL6012; LL4012V/LL5012V/LL6012V Comparative Constitutional Law\n(2) LL4304V/LL5304V/LL6304V Global Comparative Constitutional Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4305", + "title": "IP and Human Rights", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4305V/LL5305V/LL6305V IP and Human Rights", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nStudents should ideally have taken a module in intellectual property or concurrently enrolled in one.", + "corequisite": "" + }, + { + "moduleCode": "LL4306", + "title": "Chinese Banking Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4306V/LL5306V/LL6306V Banking Law and Financial Regulation in China OR Chinese Banking Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4306V", + "title": "Chinese Banking Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4306/LL5306/LL6306 Banking Law and Financial Regulation in China OR Chinese Banking Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4307", + "title": "EU Maritime Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4307V/LL5307V/LL6307V EU Maritime Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4308V", + "title": "Behavioural Economics, Law & Regulation", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4308/LL5308/LL6308 Behavioural Economics, Law & Regulation", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4309", + "title": "Strategies for Asian Disputes - A Comparative Analysis", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4309V/LL5309V/LL6309V Strategies for Asian Disputes; Strategies for Asian Disputes - A Comparative Analysis", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4309V", + "title": "Strategies for Asian Disputes - A Comparative Analysis", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4309/LL5309/LL6309 Strategies for Asian Disputes; Strategies for Asian Disputes - A Comparative Analysis", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4310V", + "title": "International Organisations in International Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4310/LL5310/LL6310 International Organisations in International Law;\nLL4275/LL5275/LL6275 International Institutional Law;\nLL4275V/LL5275V/LL6275V International Institutional Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4311", + "title": "Islamic Law and the Family", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4311V/LL5311V/LL6311V Islamic Law and the Family", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4312V", + "title": "The Law of Global Governance", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4312/LL5312/LL6312 The Law of Global Governance", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nBackground in Public International Law and/or Administrative Law is an asset.", + "corequisite": "" + }, + { + "moduleCode": "LL4313V", + "title": "Mediation/Conciliation of Inter- & Investor-State Disputes", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4313/LL5313/LL6313 Mediation/Conciliation of Inter- & Investor-State Disputes", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent. One prior course in international arbitration or public international law, or taken concurrently.", + "corequisite": "" + }, + { + "moduleCode": "LL4314V", + "title": "Private Equity and Venture Capital: Law and Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "(1) LL4314/LL5314/LL6314 Private Equity and Venture Capital: Law and Practice; (2) LL4259V/LL5259V/LL6259V; LL4259/LL5259/LL6259 Alternative Investments", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4316V", + "title": "Restitution of Unjust Enrichment", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4316/LL5316/LL6316 Restitution of Unjust Enrichment; LL4051/LL5051/LL6051; LL4051V/LL5051V/LL6051V Principles of Restitution", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4317V", + "title": "International Arbitration in Asian Centres", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "LL4317/LL5317/LL6317 International Arbitration in Asian Centres", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "LL4029/LL5029/LC5262/LL6029; LL4029V/LL5029V/LC5262V/ LL6029V International Commercial Arbitration; OR LL4285/LL5285/LC5285/LL6285; LL4285V/LL5285V/LC5285V/ LL6285V International Dispute Settlement ; OR their equivalent at another University" + }, + { + "moduleCode": "LL4318V", + "title": "Public Health Law and Regulation", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4318/LL5318/LL6318 Public Health Law and Regulation; \nA similar course in another faculty or law school anywhere else.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4319V", + "title": "Current Problems in International Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4319/LL5319/LL6319 Current Problems in International Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "Public International Law is recommended." + }, + { + "moduleCode": "LL4320", + "title": "International Space Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "LL4320V/LL5320V/LL6320V International Space Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4320V", + "title": "International Space Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4320/LL5320/LL6320 International Space Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4321", + "title": "Deals: The Economic Structure of Business Transactions", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4321V/LL5321V/LL6312V Deals: The Economic Structure of Business Transactions \nLL4267/LL5267/LL6267; LL4267V/LL5267V/LL6267V Architecting Deals: A Framework of Private Orderings", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4322", + "title": "Trade Finance Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4322V/LL5322V/LL6322V Trade Finance Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent. Students should have covered the core private law subjects of Contract, Tort and Trusts.", + "corequisite": "" + }, + { + "moduleCode": "LL4322V", + "title": "Trade Finance Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4323", + "title": "Law of Agency", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4323V/LL5323V/LL6323V Law of Agency", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4324", + "title": "Comparative Trade Mark Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4324V/LL5324V/LL6324V Comparative Trade Mark Law; \nLL4096/LL5096/LL6096; LL4096V/LL5096V/LL6096V International Trademark Law and Policy", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4325", + "title": "The Int'l Litigation & Procedure of State Disputes", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4325V/LL5325V/LL6325V - The Int’l Litigation & Procedure of State Disputes \n\nLL4285V/LL5285V/LC5285V/LL6285V; \nLL4285/LL5285/LC5285/LL6285 - International Dispute Settlement", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4326", + "title": "Administrative Justice: Perspectives from the U.S.", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4326V/LL5326V/LL6326V Administrative Justice: Perspectives from the U.S", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4327V", + "title": "Mergers and Acquisitions: A Practitioner’s Perspective", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "(1) LL4327/LL5327/LL6327 Mergers and Acquisitions: A Practitioner’s Perspective; \n(2) LL4074/LL5074/LL6074; LL4074V/LL5074V/LL6074V Mergers & Acquisitions (M&A); \n(3) LL4223/LL5223/LL6223; LL4233V/LL5223V/LL6223V Cross Border Mergers", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent. \nContracts, Property, Equity & Trusts and Company Law. \nAn ability to engage in discussion in English.", + "corequisite": "" + }, + { + "moduleCode": "LL4328", + "title": "Sports Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4328V/LL5328V/LL6328V Sports Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4329", + "title": "Cross-Border Litigation", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4329V/LL5329V/LL6329V Cross-Border Litigation;\nLL4030V/LL5030V/LL6030V; LL4030/LL5030/LL6030 International Commercial Litigation; \nLL4049V/LL5049V/LL6049V; LL4049/LL5049/LL6049 Principles of Conflict of Laws", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4330", + "title": "Advanced Trusts Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4330V/LL5330V/LL6330V Advanced Trusts Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4331", + "title": "The Rule of Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4331V/LL5331V/LL6331V The Rule of Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4332", + "title": "Fair Use in Theory and Practice", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4332V/LL5332V/LL6332V Fair Use in Theory and Practice", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4333", + "title": "International Criminal Law Clinic", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "If there is any other substantive international criminal law course offered by colleagues as there will be substantive overlap.\n\nLL4333V/LL5333V/LL6333V International Criminal Law Clinic", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nNo auditing", + "corequisite": "" + }, + { + "moduleCode": "LL4333V", + "title": "International Criminal Law Clinic", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "If there is any other substantive international criminal law course offered by colleagues as there will be substantive overlap.\n\nLL4333/LL5333/LL6333 International Criminal Law Clinic", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nNo auditing", + "corequisite": "" + }, + { + "moduleCode": "LL4334", + "title": "Law and Society in Southeast Asia", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4334V/LL5334V/LL6334V Law and Society in Southeast Asia (5MCs)\nSC4883 Selected Topics in Law and Justice", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4335V", + "title": "Multinational Enterprises and International Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4335/LL5335/LL6335 Multinational Enterprises and International Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4338V", + "title": "Advanced Practicum in International Arbitration", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4338/LL5338/LL6338 Advanced Practicum in International Arbitration", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent. \nLL4029/LL5029/LC5262/LL6029; \nLL4029V/LL5029V/LC5262V/LL6029V International \nCommercial Arbitration; OR \nLL4285/LL5285/LC5285/LL6285; \nLL4285V/LL5285V/LC5285V/LL6285V International \nDispute Settlement; OR their equivalent at another university", + "corequisite": "" + }, + { + "moduleCode": "LL4339", + "title": "Comparative Evidence in International Arbitration", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "LL4339V/LL5339V/LL6339V Comparative Evidence in International Arbitration", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4340", + "title": "International Refugee Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4340V/LL5340V/LL6340V International Refugee Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLL4050/LL5050/LL6050/LC5050; L4050V / LL5050V / LL6050V / LC5050V Public International Law (or as a co-requisite)", + "corequisite": "LL4050/LL5050/LL6050/LC5050; LL4050V / LL5050V / LL6050V / LC5050V Public International Law (or as a pre-requisite)" + }, + { + "moduleCode": "LL4340V", + "title": "International Refugee Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4340/LL5340/LL6340 International Refugee Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLL4050/LL5050/LL6050/LC5050; L4050V / LL5050V / LL6050V / LC5050V Public International Law (or as a co-requisite)", + "corequisite": "LL4050/LL5050/LL6050/LC5050; LL4050V / LL5050V / LL6050V / LC5050V Public International Law (or as a pre-requisite)" + }, + { + "moduleCode": "LL4341", + "title": "The Law and Politics of Forced Migration", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4341V/LL5341V/LL6341V The Law and Politics of Forced Migration", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLL4050/LL5050/LL6050/LC5050; L4050V / LL5050V / LL6050V / LC5050V Public International Law (or as a co-requisite)", + "corequisite": "LL4050/LL5050/LL6050/LC5050; LL4050V / LL5050V / LL6050V / LC5050V Public International Law (or as a pre-requisite)" + }, + { + "moduleCode": "LL4341V", + "title": "The Law and Politics of Forced Migration", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4341/LL5341/LL6341 The Law and Politics of Forced Migration", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLL4050/LL5050/LL6050/LC5050; L4050V / LL5050V / LL6050V / LC5050V Public International Law (or as a co-requisite)", + "corequisite": "LL4050/LL5050/LL6050/LC5050; LL4050V / LL5050V / LL6050V / LC5050V Public International Law (or as a pre-requisite)" + }, + { + "moduleCode": "LL4342", + "title": "Taxation of Cross-Border Commercial Transactions", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4035/LL5035/LL6035/LC5035/LC5035A/LC5035B/; LL4035V/LL5035V/LL6035V Taxation Issues in Cross-Border Transactions;\n\nLL4342V/LL5342V/LL6342V Taxation of Cross-Border Commercial Transactions", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4342V", + "title": "Taxation of Cross-Border Commercial Transactions", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4035/LL5035/LL6035/LC5035/LC5035A/LC5035B/; LL4035V/LL5035V/LL6035V\nTaxation Issues in Cross-Border Transactions;\n\nLL4342/LL5342/LL6342 Taxation of Cross-Border Commercial Transactions", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4343", + "title": "International Regulation of the Global Commons", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4343V/LL5343V/LL6343V International Regulation of the Global Commons", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4343V", + "title": "International Regulation of the Global Commons", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4343/LL5343/LL6343 International Regulation of the Global Commons", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4344", + "title": "Public and Private International Copyright Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4344V/LL5344V/LL6344V Public and Private International Copyright Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4344V", + "title": "Public and Private International Copyright Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4344/LL5344/LL6344 Public and Private International Copyright Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4345", + "title": "The Fulfilled Life and the Life of the Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4345V/LL5345V/LL6345V The Fulfilled Life and the Life\nof the Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4345V", + "title": "The Fulfilled Life and the Life of the Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4345/LL5345/LL6345 The Fulfilled Life and the Life of\nthe Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4346", + "title": "Interim Measures in International Arbitration", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.\nInternational Commercial Arbitration\nor\nInternational Dispute Settlement", + "corequisite": "International Commercial Arbitration or International Dispute Settlement" + }, + { + "moduleCode": "LL4346V", + "title": "Interim Measures in International Arbitration", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.\nInternational Commercial Arbitration\nor\nInternational Dispute Settlement", + "corequisite": "International Commercial Arbitration or International Dispute Settlement" + }, + { + "moduleCode": "LL4347", + "title": "Art & Cultural Heritage Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4347V/LL5347V/LL6347V Art & Cultural Heritage Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4347V", + "title": "Art & Cultural Heritage Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4347/LL5347/LL6347 Art & Cultural Heritage Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4348", + "title": "Monetary Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4348V/LL5348V/LL6348V Monetary Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLaw of Contract; Principles of Property Law; Equity and Trusts", + "corequisite": "" + }, + { + "moduleCode": "LL4348V", + "title": "Monetary Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4348/LL5348/LL6348 Monetary Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLaw of Contract; Principles of Property Law; Equity and Trusts", + "corequisite": "" + }, + { + "moduleCode": "LL4349", + "title": "Energy Arbitration", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4349V/LL5349V/LL6349V Energy Arbitration", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4349V", + "title": "Energy Arbitration", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4349/LL5349/LL6349 Energy Arbitration", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4350", + "title": "Privacy & Data Protection Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4350V/LL5350V/LL6350V Privacy & Data Protection Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4350V", + "title": "Privacy & Data Protection Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4350/LL5350/LL6350 Privacy & Data Protection Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4351", + "title": "Comparative Corporate Law in East Asia", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4351V/LL5351V/LL6351V Comparative Corporate Law in East Asia", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLC2008 Company Law or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4351V", + "title": "Comparative Corporate Law in East Asia", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4351/LL5351/LL6351 Comparative Corporate Law in East Asia", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLC2008 Company Law or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4352", + "title": "China and International Economic Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4352V/ LL5352V/LL6352V China and International Economic Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4352V", + "title": "China and International Economic Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4352V/ LL5352V/LL6352V China and International Economic Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4353", + "title": "Character Evidence in the Common Law World", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4353V/LL5353V/LL6353V Character Evidence in the Common Law World", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLC3001A Evidence (A) / LC3001B Evidence (B) or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4353V", + "title": "Character Evidence in the Common Law World", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4353V/LL5353V/LL6353V Character Evidence in the Common Law World", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLC3001A Evidence (A) / LC3001B Evidence (B) or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL4354", + "title": "Comparative Human Rights Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4354V/LL5354V/LL6353V Comparative Human Rights Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nConstitutional Law", + "corequisite": "" + }, + { + "moduleCode": "LL4354V", + "title": "Comparative Human Rights Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4354V/LL5354V/LL6353V Comparative Human Rights Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nConstitutional Law", + "corequisite": "" + }, + { + "moduleCode": "LL4355", + "title": "International Law and Development", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4355V/LL5355V/LL6355V International Law and Development", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4355V", + "title": "International Law and Development", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4355/LL5355/LL6355 International Law and Development", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4356", + "title": "International Economic Law Clinic", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4356V / LL5356V / LL6356V International Investment Law Clinic", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nInternational Investment Law course OR International Trade Law course OR taken concurrently OR relevant experience in lieu of.", + "corequisite": "" + }, + { + "moduleCode": "LL4356V", + "title": "International Economic Law Clinic", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4356 / LL5356 / LL6356 International Investment Law Clinic", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nInternational Investment Law course OR International Trade Law course OR taken concurrently OR relevant experience in lieu of.", + "corequisite": "" + }, + { + "moduleCode": "LL4357", + "title": "Regulation & Political Economy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4357V/LL5357V/LL6357V - Regulation & Political Economy", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4357V", + "title": "Regulation & Political Economy", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4357/LL5357/LL6357 Regulation & Political Economy", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4358Z", + "title": "ICC Arbitration", + "moduleCredit": 2, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "NUS Compulsory Core Law Curriculum or equivalent" + }, + { + "moduleCode": "LL4359Z", + "title": "SIAC and Institutional Arbitration", + "moduleCredit": 2, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nAt least one prior course in international arbitration.", + "corequisite": "" + }, + { + "moduleCode": "LL4360Z", + "title": "Current Challenges to Investment Arbitration", + "moduleCredit": 2, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4361Z", + "title": "Complex Arbitrations: Multiparty – Multicontract", + "moduleCredit": 2, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4362V", + "title": "Advanced Criminal Litigation - Forensics on Trial", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "FSC4206 Advanced Criminal Litigation - Forensics on Trial", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For LAW students:\nNUS Compulsory Core Law Curriculum or equivalent.\nLC1001% Criminal Law\n\nFor FoS students:\nLSM1306 Forensic Science", + "corequisite": "" + }, + { + "moduleCode": "LL4363", + "title": "Sentencing Law and Practice", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4363V/LL5363V/LL6363V", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4363V", + "title": "Sentencing Law and Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4363/LL5363/LL6363", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4364", + "title": "Principles of Civil Law: Law of Obligations & Property", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4364V/LL5364V/LL6364V Principles of Civil Law: Law of Obligations & Property\n\nStudents from civil law jurisdictions or students who have a previous law degree from a civil law jurisdiction", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4364V", + "title": "Principles of Civil Law: Law of Obligations & Property", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "LL4364/LL5364/LL6364 Principles of Civil Law: Law of Obligations & Property\n\nStudents from civil law jurisdictions or students who have a previous law degree from a civil law jurisdiction", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4367", + "title": "Singapore at the UN - A Clinical Externship", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4367V/LL5367V/LL6367V", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\n\nSingapore Law in Context or equivalent course focusing\non the Singapore legal system in the political and social\ncontext of Singapore.\n\nPublic International Law or equivalent courses, including\nUnited Nations Law.\n\nAs the class size is limited, students must undergo a\nselection process which may include an interview.", + "corequisite": "" + }, + { + "moduleCode": "LL4367V", + "title": "Singapore at the UN - A Clinical Externship", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "LL4367/LL5367/LL6367", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\n\nSingapore Law in Context or equivalent course focusing\non the Singapore legal system in the political and social\ncontext of Singapore.\n\nPublic International Law or equivalent courses, including\nUnited Nations Law.\n\nAs the class size is limited, students must undergo a\nselection process which may include an interview.", + "corequisite": "" + }, + { + "moduleCode": "LL4368", + "title": "Comparative Constitutionalism", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4368V/LL5368V/LL6368V", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4368V", + "title": "Comparative Constitutionalism", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4368/LL5368/LL6368", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4369", + "title": "Constitutionalism in Asia", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4369V/LL5369V/LL6369V Constitutionalism in Asia", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4369V", + "title": "Constitutionalism in Asia", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4369/LL5369/LL6369 Constitutionalism in Asia", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4370", + "title": "The Law of Cybersecurity, Privacy and Data Compliance", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "IFS4101 (for dual-track LLB and BSc (Comp. - IS) students; LL4370V/LL5370V/LL6370V The Law of Cybersecurity, Privacy and Data Compliance", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4370V", + "title": "The Law of Cybersecurity, Privacy and Data Compliance", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "IFS4101 (for dual-track LLB and BSc (Comp. - IS) students; LL4370/LL5370/LL6370 The Law of Cybersecurity, Privacy and Data Compliance", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4371", + "title": "Charity Law Today", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4371V/LL5371V/LL63871V Charity Law Today", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4371V", + "title": "Charity Law Today", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4371/LL5371/LL6371 Charity Law Today", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4372", + "title": "International Intellectual Property Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4372V/LL5372V/LL6372V", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "[LL4070/LL5070/LL6070; LL4070V/LL5070V/LL6070V] [LL4405A/LL5405A/LL6405A/LC5405A]" + }, + { + "moduleCode": "LL4372V", + "title": "International Intellectual Property Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4372/LL5372/LL6372", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "[LL4070/LL5070/LL6070; LL4070V/LL5070V/LL6070V] [LL4405A/LL5405A/LL6405A/LC5405A]" + }, + { + "moduleCode": "LL4373", + "title": "Advanced Copyright", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4373V/LL5373V/LL6373V Advanced Copyright", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4373V", + "title": "Advanced Copyright", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4373/LL5373/LL6373 Advanced Copyright", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4374", + "title": "Water Rights & Resources: Issues in Law & Development", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4374V/LL5374V/LL6374V Water Rights & Resources: Issues in Law & Development", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4374V", + "title": "Water Rights & Resources: Issues in Law & Development", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4374/LL5374/LL6374 Water Rights & Resources: Issues in Law & Development", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4375", + "title": "Traditional Chinese Legal Thought", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4375V/LL5375V/LL6375V", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4375V", + "title": "Traditional Chinese Legal Thought", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4375/LL5375/LL6375", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4376", + "title": "Regulation & Private Law in Banking & Financial Service", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4376V / LL5376V / LL6376V Regulation & Private Law in Banking & Financial Service", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4376V", + "title": "Regulation & Private Law in Banking & Financial Service", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4376 / LL5376 / LL6376 Regulation & Private Law in Banking & Financial Service", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4377", + "title": "Law in Action: Legal Policymaking Externship", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4377V/LL5377V/LL6377V Law in Action: Legal Policymaking Externship", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nSingaporean Citizens / PR\nAs the class size is limited, students must undergo a selection process which may include an interview.\nAll participants are subject to security screening and must obtain the requisite security clearance before they can be admitted to the course.", + "corequisite": "" + }, + { + "moduleCode": "LL4377V", + "title": "Law in Action: Legal Policymaking Externship", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4377/LL5377/LL6377 Law in Action: Legal Policymaking Externship", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nSingaporean Citizens / PR\nAs the class size is limited, students must undergo a selection process which may include an interview.\nAll participants are subject to security screening and must obtain the requisite security clearance before they can be admitted to the course.", + "corequisite": "" + }, + { + "moduleCode": "LL4379", + "title": "Future of Int'l Commercial Arbitration in APAC Region", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4379V/LL5379V/LL6379V Future of Int’l Commercial Arbitration in APAC Region", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nInternational Commercial Arbitration\nLL4029V,LL5029V,LL6029V,LC5262V;\nLL4029AV,LL5029AV,LL6029AV,LC5262AV", + "corequisite": "International Commercial Arbitration LL4029V,LL5029V,LL6029V,LC5262V; LL4029AV,LL5029AV,LL6029AV,LC5262AV" + }, + { + "moduleCode": "LL4379V", + "title": "Future of Int'l Commercial Arbitration in APAC Region", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4379/LL5379/LL6379 Future of Int’l Commercial Arbitration in APAC Region", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nInternational Commercial Arbitration\nLL4029V,LL5029V,LL6029V,LC5262V;\nLL4029AV,LL5029AV,LL6029AV,LC5262AV", + "corequisite": "International Commercial Arbitration LL4029V,LL5029V,LL6029V,LC5262V; LL4029AV,LL5029AV,LL6029AV,LC5262AV" + }, + { + "moduleCode": "LL4381", + "title": "Heritage Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4347/LL5347/LL6347;LL4347V/LL5347V/LL6347V Art & Cultural Heritage Law; LL4381V/LL5381V/LL6381V Heritage Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4381V", + "title": "Heritage Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4347/LL5347/LL6347;LL4347V/LL5347V/LL6347V Art & Cultural Heritage Law; LL4381/LL5381/LL6381 Heritage Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4382", + "title": "Core Aspects of Private International Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Not open to anyone who has done:\nLL4030V/LL5030V/LL6030V; LL4030/LL5030/LL6030 International Commercial Litigation;\nLL4049V/LL5049V/LL6049V; LL4049/LL5049/LL6049 Principles of Conflict of Laws;\nLL4205V/LL5205V/LL6205V/LLD5205V;\nLL4205/LL5205/LL6205/LLD5205V Maritime Conflict of Laws at NUS Law, or a substantially similar course elsewhere", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4382V", + "title": "Core Aspects of Private International Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Not open to anyone who has done:\nLL4030V/LL5030V/LL6030V; LL4030/LL5030/LL6030 International Commercial Litigation;\nLL4049V/LL5049V/LL6049V; LL4049/LL5049/LL6049 Principles of Conflict of Laws;\nLL4205V/LL5205V/LL6205V;LLD5205V;\nLL4205/LL5205/LL6205/LL5205V Maritime Conflict of Laws at NUS Law, or a substantially similar course elsewhere", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4383Z", + "title": "International Arbitration & the New York Convention", + "moduleCredit": 2, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4384", + "title": "Harms and Wrongs", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "LL4384V/LL5384V/LL6384V Harms and Wrongs", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4384V", + "title": "Harms and Wrongs", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4384/LL5384/LL6384 Harms and Wrongs", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4385", + "title": "Taxation Law & the Global Digital Economy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4385V/LL5385V/LL6385V Taxation Law & the Global Digital Economy", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4385V", + "title": "Taxation Law & the Global Digital Economy", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4385/LL5385/LL6385 Taxation Law & the Global Digital Economy", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4387", + "title": "Regulation of Digital Platform", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4387V/LL5387V/LL6387V Regulation of Digital Platforms", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4387V", + "title": "Regulation of Digital Platforms", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4387/LL5387/LL6387 Regulation of Digital Platforms", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4388", + "title": "Comparative Civil Law: Thai Contract Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4388V/LL5388V/LL6388V Comparative Civil Law: Thai Contract Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4388V", + "title": "Comparative Civil Law: Thai Contract Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4388/LL5388/LL6388 Comparative Civil Law: Thai Contract Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4389", + "title": "Asset-Based Financing: Quasi-Security Devices", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4389V/LL5389V/LL6389V Asset-Based Financing: Quasi-Security Devices", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4389V", + "title": "Asset-Based Financing: Quasi-Security Devices", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4389/LL5389/LL6389 Asset-Based Financing: Quasi-Security Devices", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4393", + "title": "Liability of Corporate Groups and Networks", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLC1004 Law of Torts", + "corequisite": "LC2008 Company Law" + }, + { + "moduleCode": "LL4393V", + "title": "Liability of Corporate Groups and Networks", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLC1004 Law of Torts", + "corequisite": "LC2008 Company Law" + }, + { + "moduleCode": "LL4395", + "title": "The Law & Practice of Modern Trust Structures", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4395V/LL5395V/LL6395V The Law & Practice of Modern Trust Structures", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLC2006 Equity & Trusts", + "corequisite": "" + }, + { + "moduleCode": "LL4395V", + "title": "The Law & Practice of Modern Trust Structures", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4395/LL5395/LL6395 The Law & Practice of Modern Trust Structures", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLC2006 Equity & Trusts", + "corequisite": "" + }, + { + "moduleCode": "LL4396", + "title": "University Research Opportunities Program", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "To refer to the guidelines on the UROP form.", + "corequisite": "" + }, + { + "moduleCode": "LL4397", + "title": "University Research Opportunities Program", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "To refer to the guidelines on the UROP form.", + "corequisite": "" + }, + { + "moduleCode": "LL4398", + "title": "University Research Opportunities Program", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "To refer to the guidelines on the UROP form.", + "corequisite": "" + }, + { + "moduleCode": "LL4399", + "title": "University Research Opportunities Program", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "To refer to the guidelines on the UROP form.", + "corequisite": "" + }, + { + "moduleCode": "LL4400", + "title": "Biomedical Law & Ethics", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4402", + "title": "Corporate Insolvency Law", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Corporate Insolvency & Rescues I (LLA4038); Corporate Insolvency & Resuces II (LLA4039)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent. (b) Company Law (LLB2008) or its equivalent in a common law jurisdiction (may be taken concurrently).", + "corequisite": "" + }, + { + "moduleCode": "LL4403", + "title": "Family Law", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4405A", + "title": "Law of Intellectual Property (a)", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "LL4405B/LL5405B/LL6405B Law of IP & LL4070/LL5070/LC5070/LL6070 Foundations\nof IP Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4405B", + "title": "Law of Intellectual Property (B)", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4405A/LL5405A/LL6405A Law of IP & LL4070/LL5070/LC5070/LL6070 Foundations\nof IP Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4407", + "title": "Law Of Insurance", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4409", + "title": "International Corporate Finance", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL4411", + "title": "Personal Property Law", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4047 Personal Property I - Tangible\nLL4168 Personal Property Law II - Intangible", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent Some parts of the syllabus require students to refresh learning in equity & trusts, the laws of company, economic torts and insolvency.", + "corequisite": "" + }, + { + "moduleCode": "LL4412", + "title": "Securities and Capital Markets Regulation", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students doing or have done any of the following module(s) are precluded: (1) International Corporate Finance [8MC - LL4409/LL5409/LLD5409/LL6409; 4MC - LL4238/LL5238/LL6238; 5MC – LL4238V/LL5238V/LL6238V]; (2) Corporate Finance Law & Practice in Singapore [4MC - LL4182/LL5182/LL6182; 5MC – LL4182V/LL5182V/LL6182V]; (3) Securities Regulation [4MC - L4055/LL5055/LL6055; 5MC – LL4055V/LL5055V/LL6055V]; (4) Securities Regulation [Module code: L53.3040 OR LW.10180] under the NYU@NUS Summer Session.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent. (b) Company Law [LC2008/LLB2008] or its equivalent in a developed common law jurisdiction (may be taken concurrently).", + "corequisite": "" + }, + { + "moduleCode": "LL4413", + "title": "Civil Justice and Procedure", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who have not studied the core subjects in a Common Law curriculum. \n\nNot open to students who are, or have been, legal practitioners or who have worked in any legal field. \n\nLL4011; LL5011; LL6011 / LL4011V; LL5011V; LL6011V Civil Justice & Process \n\nLL4281; LL5281; LL6281 / LL4281V; LL5281V; LL6281V Civil Procedure", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\n(It is impossible to study common law adversarial procedure without a background in these subjects.)", + "corequisite": "" + }, + { + "moduleCode": "LL4433", + "title": "Global Data Privacy Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4433V/LL5433V/LL6433V Global Data Privacy Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4433V", + "title": "Global Data Privacy Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "LL4433/LL5433/LL6433 Global Data Privacy Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4434", + "title": "International Commodity Trading Law Clinic", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4434V/LL5434V/LL6434V International Commodity Trading Law Clinic", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4434V", + "title": "International Commodity Trading Law Clinic", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4434/LL5434/LL6434 International Commodity Trading Law Clinic", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4435", + "title": "Foundations of Environmental Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4435V/LL5435V/LL6435V Foundations of Environmental Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL4435V", + "title": "Foundations of Environmental Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4435/LL5435/LL6435 Foundations of Environmental Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5001", + "title": "Administration of Criminal Justice", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5002", + "title": "Admiralty Law & Practice", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5002V", + "title": "Admiralty Law & Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Students who are taking or have taken LL5002.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5003V", + "title": "China, India and International Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5003.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5004", + "title": "Aviation Law & Policy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5004V", + "title": "Aviation Law & Policy", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Students who are taking or have taken LL5004.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5005V", + "title": "Bank Documentation", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken Bank Documentation", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent. Note to students from civil law jurisdiction: this module adopts a common law approach.", + "corequisite": "" + }, + { + "moduleCode": "LL5006", + "title": "Banking Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5006V", + "title": "Banking Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL5006.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5007", + "title": "Biotechnology Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5007V", + "title": "Biotechnology Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5007.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5008A", + "title": "Carriage of Goods By Sea", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5008AV", + "title": "Carriage of Goods By Sea", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Students who are taking or have taken Carriage of Goods By Sea.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5008B", + "title": "Charterparties", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5008BV", + "title": "Charterparties", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL5008B.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5009", + "title": "Chinese Legal Tradition & Legal Chinese", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5009GRSI", + "title": "Graduate Research Seminar I (Legal Scholarship)", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5009GRSII", + "title": "Graduate Research Seminar II (Research Methods)", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LC5009 / LC6009 Graduate Research Seminar", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LL5009GRSI / LL6009GRSI Graduate Research Seminar I (Legal Scholarship)", + "corequisite": "" + }, + { + "moduleCode": "LL5009V", + "title": "Chinese Legal Tradition And Legal Chinese", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Exchange students from law schools in China and post-graduate students who are graduates of law schools in China are precluded from taking this course for credit.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent. (b) Students must have obtained a B4 and above in CL or CL2 (AO Level) or B4 and above in Higher Chinese (HCL or CL1)", + "corequisite": "" + }, + { + "moduleCode": "LL5010", + "title": "Civil Law Tradition", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5010A", + "title": "Topics in the Civil Law Tradition (A): EU Harmonisation", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5010AV", + "title": "Topics in the Civil Law Tradition (A): EU Harmonisation", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5010A", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5011", + "title": "Civil Justice & Process", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4011V/LL5011V/LL6011V Civil Justice & Process;\nLL4413/LL5413/LL6413 Civil Justice and Procedure.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nFor Exchange/Graduate students: Students must have studied all the core subjects in a Common Law curriculum.\nNot open to students who are, or have been, legal practitioners or who have worked professionally in any legal field.", + "corequisite": "" + }, + { + "moduleCode": "LL5011V", + "title": "Civil Justice & Process", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4011/LL5011/LL6011 Civil Justice & Process;\nLL4413/LL5413/LL6413 Civil Justice and Procedure.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nFor Exchange/Graduate students: Students must have studied all the core subjects in a Common Law curriculum.\nNot open to students who are, or have been, legal practitioners or who have worked professionally in any legal field.", + "corequisite": "" + }, + { + "moduleCode": "LL5012V", + "title": "Comparative Constitutional Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL5012", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5013V", + "title": "Comparative Environmental Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5013", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5014", + "title": "Construction Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5014V", + "title": "Construction Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL5014", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5016A", + "title": "Topics in Int’l Criminal Law (A): Aggression", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5017", + "title": "Contract and Commercial Law in Civil-Law Asia", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Any student pursuing or having obtained a basic law degree in a civil law jurisdiction is precluded from taking this course. This course is for common law students who\nhave not studied the civil law.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent. \n\nContract Law (or the equivalent common law contract course for exchange and graduate students)", + "corequisite": "" + }, + { + "moduleCode": "LL5018", + "title": "Corporate Tax: Profits & Distributions", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5018V", + "title": "Corporate Tax: Profits & Distributions", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL5018", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5019", + "title": "Credit & Security", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5019V", + "title": "Credit & Security", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Students who are taking or have taken LL5019", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5021V", + "title": "Environmental Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5022V", + "title": "Globalization And International Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5022", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5024", + "title": "Indonesian Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5024V", + "title": "Indonesian Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL5024", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5025", + "title": "Rights", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For law students: NUS Compulsory Core Curriculum\nFor non‐law students: Open to Philosophy, Political Science, and USP students.", + "corequisite": "" + }, + { + "moduleCode": "LL5025V", + "title": "Rights", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5025", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5026V", + "title": "Infocoms Law: Competition & Convergence", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5026", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5027", + "title": "International & Comparative Law Of Sale", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5029", + "title": "International Commercial Arbitration", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5029AV", + "title": "International Commercial Arbitration", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5029BV", + "title": "International Commercial Arbitration", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5029V", + "title": "International Commercial Arbitration", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5029", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5030", + "title": "International Commercial Litigation", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5030V", + "title": "International Commercial Litigation", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5030", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5031", + "title": "International Environmental Law & Policy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5031V", + "title": "International Environmental Law & Policy", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Students who are taking or have taken LL5031", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5032", + "title": "International Investment Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5032V", + "title": "International Investment Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5032", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5033", + "title": "International Legal Process", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5033V", + "title": "International Legal Process", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Students who are taking or have taken LL5033", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5034", + "title": "International Regulation of Shipping", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5034V", + "title": "International Regulation of Shipping", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5034.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Core Law Curriculum or its equivalent. Students who have completed a course in Law of the Sea or Ocean Law & Policy may have a slight advantage.", + "corequisite": "" + }, + { + "moduleCode": "LL5035", + "title": "Taxation Issues in Cross-Border Transactions", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "(1) LL4035V/LL5035V/LL6035V / LC5035 / LC5035V / LC5035A / LC5035B Taxation Issues in Cross-Border Transactions; (2) LL4342/LL5342/LL6342; LL4342V/LL5342V/LL6342V Taxation of Cross-Border Commercial Transactions", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent. \nNote: Company Law or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5035V", + "title": "Taxation Issues in Cross-Border Transaction", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "(1) LL4035/LL5035/LL6035/LC5035/LC5035V/LC5035A/ LC5035B Taxation Issues in Cross-Border Transactions; (2) LL4342/LL5342/LL6342; LL4342V/LL5342V/LL6342V Taxation of Cross-Border Commercial Transactions", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent. \nNote: Company Law or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5037", + "title": "Sociology of Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5037V", + "title": "Sociology of Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5037", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For Law Students: NUS Compulsory Core Law Curriculum or its equivalent; For Non-Law Students: Open to students from Arts and Social Sciences with at least 80 MCs.", + "corequisite": "" + }, + { + "moduleCode": "LL5042V", + "title": "Law and Religion", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5042.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For Law - NUS Compulsory Core Curriculum or its equivalent.\nFor Non-Law – At least 3rd year students from Arts and Social Sciences.", + "corequisite": "" + }, + { + "moduleCode": "LL5043", + "title": "Law of Marine Insurance", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5043V", + "title": "Law Of Marine Insurance", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5043.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5044", + "title": "Mediation", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5044V", + "title": "Mediation", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Not open to students who have successfully completed Mediation.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5045", + "title": "Negotiation", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5045V", + "title": "Negotiation", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Note: Not open to students who have successfully completed Negotiation Workshop or its equivalent elsewhere. Not open to incoming exchange students.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5049", + "title": "Principles of Conflict of Laws", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5049V", + "title": "Principles Of Conflict Of Laws", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5049.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5050", + "title": "Public International Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5050V", + "title": "Public International Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL5050.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5051", + "title": "Principles of Restitution", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5054", + "title": "Domestic and International Sale of Goods", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5054V", + "title": "Domestic and International Sale of Goods", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5055", + "title": "Securities Regulation", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4055V/LL5055V/LL6055V Securities Regulation;\nStudents doing or have done any of the following module(s) are precluded: (1) International Corporate Finance [8MC -LL4409/LL5409/LLD5409/LL6409; 4MC - LL4238/LL5238/LL6238; 5MC - LL4238V/LL5238V/LL6238V]; (2) Corporate Finance Law & Practice in Singapore - 4MC - LL4182/LL5182/LL6182; 5MC - LL4182V/LL5182V/LL6182V; (3) 8MC - Securities and Capital Markets Regulation - LL4412/LL5412/LL6412.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent. (b) Company Law (LC2008) or its equivalent in a developed common law jurisdiction (may be taken concurrently).", + "corequisite": "" + }, + { + "moduleCode": "LL5056A", + "title": "Tax Planning And Policy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5056AV", + "title": "Tax Planning And Policy", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent. (b) Company Law (LC2008) or its equivalent in a developed common law jurisdiction", + "corequisite": "" + }, + { + "moduleCode": "LL5056B", + "title": "Tax Planning And Policy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5056BV", + "title": "Tax Planning And Policy", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent. (b) Company Law (LC2008) or its equivalent in a developed common law jurisdiction", + "corequisite": "" + }, + { + "moduleCode": "LL5057V", + "title": "Theoretical Foundations Of Criminal Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5057.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent. Module is also open to non-law students from FASS Philosophy or Political Science dept with at least 80 MCs.", + "corequisite": "" + }, + { + "moduleCode": "LL5059V", + "title": "United Nations Law & Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5059.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5060", + "title": "World Trade Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5060B", + "title": "World Trade Law", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "LL4199A/LL4199B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5061", + "title": "Inquiry", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "For Non-Law Students: Open to students from University Scholars Programme who have read 80MCs or more." + }, + { + "moduleCode": "LL5061V", + "title": "Inquiry", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5061.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "For Non-Law Students: Open to students from University Scholars Programme who have read 80MCs or more." + }, + { + "moduleCode": "LL5062", + "title": "Legal Reasoning & Legal Theory", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For law students: NUS Compulsory Core Curriculum\n\nFor non‐law students: Open to Philosophy, Political Science, and USP students.", + "corequisite": "" + }, + { + "moduleCode": "LL5062V", + "title": "Legal Reasoning & Legal Theory", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5062", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For law students: NUS Compulsory Core Curriculum\n\nFor non‐law students: Open to Philosophy, Political Science, and USP students.", + "corequisite": "" + }, + { + "moduleCode": "LL5063", + "title": "Business & Finance For Lawyers", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5063V", + "title": "Business & Finance For Lawyers", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who are taking or have taken LL5063.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent. \n(b) Company Law or its equivalent in a common law jurisdiction (may be taken concurrently)", + "corequisite": "" + }, + { + "moduleCode": "LL5064", + "title": "Competition Law and Policy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Competition Law courses taught in European, American and Singapore law schools.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5064V", + "title": "Competition Law and Policy", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Competition Law courses taught in European, American and Singapore law schools.\nStudents who are taking or have taken LL5064", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5065", + "title": "Comparative Corporate Governance", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5067", + "title": "Comparative Criminal Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5069", + "title": "European Union Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5069V", + "title": "European Union Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5070", + "title": "Foundations of IP Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5070V", + "title": "Foundations Of Intellectual Property Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "The Law of Intellectual Property. Students who are taking or have taken LL5070.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5071", + "title": "International Patent Law, Policy and Practice", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "May vary from year to year depending on the modules offered by visitors to NUS Law in any given year.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent. \n(b) A foundation or basic knowledge in IP law would be useful.", + "corequisite": "" + }, + { + "moduleCode": "LL5071V", + "title": "International Patent Law, Policy and Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "May vary from year to year depending on the modules offered by visitors to NUS Law in any given year.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent. \n(b) A foundation or basic knowledge in IP law would be useful.", + "corequisite": "" + }, + { + "moduleCode": "LL5072B", + "title": "Topics in IP Law (B): IP Valuation: Law & Practice", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5073", + "title": "International Criminal Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5073V", + "title": "International Criminal Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5073.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent..", + "corequisite": "" + }, + { + "moduleCode": "LL5074", + "title": "Mergers & Acquisitions", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Company Law (LC2008) or its equivalent in a common law jurisdiction.", + "corequisite": "" + }, + { + "moduleCode": "LL5074V", + "title": "Mergers & Acquisitions", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Must not have taken a substantially similar course. Not open to students who have taken/taking LL4223/LL5223/LL6223 Cross Border Mergers. Not open to students who have taken Mergers and Acquisition (M&A).", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent..", + "corequisite": "" + }, + { + "moduleCode": "LL5075", + "title": "IP and Competition Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5075V", + "title": "IP and Competition Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5075.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent..", + "corequisite": "" + }, + { + "moduleCode": "LL5076", + "title": "It Law I", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5076V", + "title": "IT Law I", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Students who are taking or have taken LL5076.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent..", + "corequisite": "" + }, + { + "moduleCode": "LL5077V", + "title": "IT Law II", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5077.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent..", + "corequisite": "" + }, + { + "moduleCode": "LL5078", + "title": "Law & Practice of Investment Treaty Arbitration", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5079", + "title": "State and Company in Legal-Historical Perspective", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5081", + "title": "Comparative Advocacy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5082", + "title": "Law & Social Movements", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5085", + "title": "International Trusts", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5088", + "title": "Chinese Contract Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5088V", + "title": "Chinese Contract Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Exchange students from law schools in China and postgraduate students who are graduates of law schools in China are precluded from taking this course for credit.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent Note: This course is delivered bi-lingually, yet predominantly in English. It is a plus but not a must that students have learned Chinese Legal Tradition and Legal Chinese (LL4009), or have\nobtained a B4 and above in CL or CL2 ('AO' Level) or B4 and above in Higher Chinese (HCL or CL1).", + "corequisite": "" + }, + { + "moduleCode": "LL5089", + "title": "Chinese Corporate and Securities Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5089V", + "title": "Chinese Corporate & Securities Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL4089.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5093", + "title": "Chinese Intellectual Property Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5093V", + "title": "Chinese Intellectual Property Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5094", + "title": "Law & Practice - The Law Clinic", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who have been in practice as qualified lawyers in the local or other jurisdictions are precluded.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.\nNUS Legal Skills Programme or equivalent, in particular, Legal Analysis, Research and Communication or its equivalent. Singapore Legal System or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5094AV", + "title": "Law & Practice - The Law Clinic", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have been in practice as qualified lawyers in the local or other jurisdictions are precluded.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.\nNUS Legal Skills Programme or equivalent, in particular, Legal Analysis, Research and Communication or its equivalent. Singapore Legal System or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5094BV", + "title": "Law & Practice - The Law Clinic", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have been in practice as qualified lawyers in the local or other jurisdictions are precluded.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.\nNUS Legal Skills Programme or equivalent, in particular, Legal Analysis, Research and Communication or its equivalent. Singapore Legal System or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5094CV", + "title": "Law & Practice - The Law Clinic", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have been in practice as qualified lawyers in the local or other jurisdictions are precluded.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.\nNUS Legal Skills Programme or equivalent, in particular, Legal Analysis, Research and Communication or its equivalent. Singapore Legal System or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5094V", + "title": "Law & Practice - The Law Clinic", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have been in practice as qualified lawyers in the local or other jurisdictions are precluded.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.\nNUS Legal Skills Programme or equivalent, in particular, Legal Analysis, Research and Communication or its equivalent. Singapore Legal System or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5096", + "title": "Int''l Trademark Law & Policy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5096V", + "title": "International Trademark Law and Policy", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5096.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5097", + "title": "Islamic Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5097V", + "title": "Islamic Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5097.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5099", + "title": "Maritime Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5099V", + "title": "Maritime Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL5099.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5100", + "title": "Arbitration and Dispute Resolution in China", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4100V/LL5100V/LL6100V Arbitration and Dispute Resolution in China", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5100V", + "title": "Arbitration and Dispute Resolution in China", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4100/LL5100/LL6100 Arbitration and Dispute Resolution in China", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5102", + "title": "Advanced Torts", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5102V", + "title": "Advanced Torts", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5104", + "title": "Jurisprudence", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For law students: NUS Compulsory Core Curriculum or its equivalent\n\nFor non-law students: 3rd & 4th Year students from Arts & Social Sciences Faculty", + "corequisite": "" + }, + { + "moduleCode": "LL5104V", + "title": "Jurisprudence", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5104.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5107V", + "title": "Partnership and Alternative Business Vehicles", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5109", + "title": "International Law & Asia", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5109V", + "title": "International Law & Asia", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Students who are taking or have taken LL5109.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5111V", + "title": "International Copyright Law and Policy", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5111.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5122", + "title": "The Contemporary Indian Legal System", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5122V", + "title": "The Contemporary Indian Legal System", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5122.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5123", + "title": "International Insolvency Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5125", + "title": "Law & Development in China", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5125V", + "title": "Law And Development In China", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5125.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5128", + "title": "Chinese Maritime Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5129", + "title": "Indian Business Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Currently, the course is precluded for Exchange students from law schools in India and post-graduate students who are graduates of law schools in India as well as students who have taken LL4104 Foreign Investment Law of India. It is proposed that these preclusions be removed and that the course will remain open for all interested students.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent (b) Company Law (LC2008) or its equivalent in a common law jurisdiction (may be taken concurrently)", + "corequisite": "" + }, + { + "moduleCode": "LL5129V", + "title": "Indian Business Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5129.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5131", + "title": "Law, Governance & Development in Asia", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5131V", + "title": "Law, Governance & Development in Asia", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5131.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5133", + "title": "Human Rights in Asia", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5133V", + "title": "Human Rights in Asia", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5133.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5134", + "title": "Crossing Borders: Law, Migration & Citizenship", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For law students: NUS Compulsory Core Curriculum or its equivalent\nFor non‐law students: 3rd & 4th Year students from Arts & Social Sciences Faculty", + "corequisite": "" + }, + { + "moduleCode": "LL5134V", + "title": "Crossing Borders: Law, Migration & Citizenship", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5134.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5135", + "title": "Patent Law & Practice: Perspectives from the U.S", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "(1) LL4071/LL5071/LL6071; LL4071V/LL5071V/LL6017V International Patent Law, Policy and Practice; \n(2) LL4405B/LL5405B/LL6405B/LC5405B Law of Intellectual Property (B); \n(3) LL4007/LL5007/LL6007; LL4007V/LL5007V/LL6007V Biotechnology Law;\n(4) LL4076/LL5076/LL6076; LL4076V/LL5076V/LL6076V IT Law I\n(5) LL4135V/LL5135V/LL6135V Patent Law and Practice: Perspectives from the U.S.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5138", + "title": "International & Comparative Law of Sale in Asia", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5138V", + "title": "Int'l&Comp Law of Sale in Asia", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5138", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5140", + "title": "Law of the Sea: Theory and Practice", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4140V/LL5140V/LL6140V/LLD5140V Law of the Sea: Theory and Practice;\nLL4140V/LL5140V/LL6140V/LLD5140V Ocean Law & Policy in Asia; LL4046V/LL5046V/LL6046V Ocean Law & Policy", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5140V", + "title": "Law of the Sea: Theory and Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4140/LL5140/LL6140/LLD5140 Law of the Sea: Theory and Practice;\nLL4140/LL5140/LL6140/LLD5140 Ocean Law & Policy in Asia; LL4046/LL5046/LL6046 Ocean Law & Policy", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5146", + "title": "Law & Society", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5146V", + "title": "Law & Society", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5146", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5148", + "title": "Secured Transactions Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Credit & Security (LL4019/LL5019/LL6019; LL4019V/LL5019V/LL6019V)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5150", + "title": "International Investment Law and Arbitration", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4150V/LL5150V/LL6150V International Investment Law and Arbitration", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5150V", + "title": "International Investment Law and Arbitration", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4150/LL5150/LL6150 International Investment Law and Arbitration", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5153", + "title": "International Police Enforcement Cooperation", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5155", + "title": "Topics in Law & Economics", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nTertiary-level module in Microeconomics.", + "corequisite": "" + }, + { + "moduleCode": "LL5158", + "title": "Climate Change Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4158V/LL5158V/LL6158V Climate Change Law;\nLL4221/LL5221/LL6221; LL4221V/LL5221V/LL6221V Climate Change Law & Policy.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5158V", + "title": "Climate Change Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4158/LL5158/LL6158 Climate Change Law;\nLL4221/LL5221/LL6221; LL4221V/LL5221V/LL6221V Climate Change Law & Policy.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5159", + "title": "The Economic Analysis of Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who have done Economic Analysis of Law [Module code: L56.3020] under the NYU@NUS Summer Session are precluded. LL4159V/LL5159V/LL6159V The Economic Analysis of Law.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5161", + "title": "Intelligence Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5161V", + "title": "Intelligence Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5161", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5162", + "title": "Singapore Corporate Governance", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent. Previously completed a course in Company Law.", + "corequisite": "" + }, + { + "moduleCode": "LL5162V", + "title": "Singapore Corporate Governance", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent. Previously completed a course in Company Law.", + "corequisite": "" + }, + { + "moduleCode": "LL5164", + "title": "International Projects Law & Practice", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5164V", + "title": "International Projects Law & Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Students who are taking or have taken LL5164.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5170", + "title": "Comparative Conflict of Laws", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5171", + "title": "Asean Environmental Law, Policy and Governance", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5171V", + "title": "ASEAN Environmental Law, Policy & Governance", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5171.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Core Law Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5172", + "title": "Japanese Corporate Law & Governance", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5173", + "title": "Comparative Corporate Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5173V", + "title": "Comparative Corporate Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL5173.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5175", + "title": "Global Legal Orders: Interdisciplinary Perspectives", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5175V", + "title": "Global Legal Orders: Interdisciplinary Perspectives", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5175.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5177", + "title": "Entertainment Law: Pop Iconography & Celebrity", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5177V", + "title": "Entertainment Law: Pop Iconography & Celebrity", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Students who are taking or have taken LL5177.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5178", + "title": "Law and Practice of Investment Treaties", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Must not have taken a substantially similar course. \nNot open to students who have taken/taking (1) LL4032/LL5032/LL6032; LL4032V/LL5032V/LL6032V International Investment Law; (2) LL4078/LL5078/LL6078; LL4078V/LL5078V/LL6078V Law & Practice of Investment Treaty Arbitration.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5178V", + "title": "Law and Practice of Investment Treaties", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Must not have taken a substantially similar course. \nNot open to students who have taken/taking (1) LL4032/LL5032/LL6032; LL4032V/LL5032V/LL6032V International Investment Law; (2) LL4078/LL5078/LL6078; LL4078V/LL5078V/LL6078V Law & Practice of Investment Treaty Arbitration.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5179", + "title": "International Alternative Dispute Resolution", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5180", + "title": "Choice of Law & Jurisdiction in Int’l Commercial Contracts in Asia", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5185", + "title": "Government Regulations: Law, Policy & Practice", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5185V", + "title": "Government Regulations: Law, Policy & Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5187", + "title": "Philosophical Foundations of Contract Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5188", + "title": "Corporate Law and Finance", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5189", + "title": "Corporate Social Responsibility", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4189V/LL5189V/LL6189V Corporate Social Responsibility", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5189V", + "title": "Corporate Social Responsibility", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4189/LL5189/LL6189 Corporate Social Responsibility", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5190", + "title": "Freedom of Speech: Critical & Comparative Perspectives", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.\nSingapore Legal System (LC1005); Public law (LC2007).", + "corequisite": "" + }, + { + "moduleCode": "LL5190V", + "title": "Freedom of Speech: Critical & Comparative Perspectives", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5190.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5191", + "title": "Wealth Management Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent (b) Principles of Conflict of Laws [LL4049] is recommended.", + "corequisite": "" + }, + { + "moduleCode": "LL5192", + "title": "Private International Law of IP", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5193", + "title": "An Introduction to Negotiating & Drafting Commercial Contracts", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5193V", + "title": "An Introduction to Negotiating & Drafting Commercial Contracts", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5193.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5194", + "title": "Partnership and LLP Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5195V", + "title": "International Economic Law & Relations", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5195.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5197", + "title": "Comparative State and Religion in Southeast Asia", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For law students: NUS Compulsory Core Curriculum or its equivalent\n\nFor non‐law students: 3rd & 4th Year students from Arts & Social Sciences Faculty who has completed PS1101E Introduction to Politics", + "corequisite": "" + }, + { + "moduleCode": "LL5197V", + "title": "Comparative State and Religion in Southeast Asia", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5197.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent..", + "corequisite": "" + }, + { + "moduleCode": "LL5202", + "title": "ASEAN Economic Community Law and Policy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5202V", + "title": "ASEAN Economic Community Law and Policy", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL5202.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent..", + "corequisite": "" + }, + { + "moduleCode": "LL5203", + "title": "International Moots and Other Competitions", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5203A", + "title": "International Moots and Other Competitions", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5203B", + "title": "International Moots and Other Competitions", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5203C", + "title": "International Moots and Other Competitions", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5204", + "title": "Islamic Finance Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5205", + "title": "Maritime Conflict of Laws", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "LL4002 Admiralty Law and Practice (Co-requisite)" + }, + { + "moduleCode": "LL5205V", + "title": "Maritime Conflict of Laws", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL5205.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5208", + "title": "Advanced Criminal Legal Process", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5208V", + "title": "Advanced Criminal Legal Process", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL5208.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5209", + "title": "Legal Argument & Narrative", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5209V", + "title": "Legal Argument & Narrative", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL5209.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5210", + "title": "Intellectual Property And International Trade", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5210V", + "title": "Intellectual Property And International Trade", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5210.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5211", + "title": "International Public Monetary and Payment Systems Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5213", + "title": "Transnational Law in Theory and Practice", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS compulsory core curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5214", + "title": "International and Comparative Oil and Gas Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5216", + "title": "Cyber Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5217", + "title": "Comparative & International Anti-Corruption Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5218V", + "title": "Asian Legal Studies Colloquium", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5218.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5219", + "title": "The Trial of Jesus in Western Legal Thought", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5220", + "title": "International Business Transactions", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5221", + "title": "Climate Change Law & Policy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5222", + "title": "The Law & Politics of International Courts & Tribunals", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5223", + "title": "Cross Border Mergers", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent. Must have read Tax Module or Securities Regulation", + "corequisite": "" + }, + { + "moduleCode": "LL5224", + "title": "Cybercrime & Information Security Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5225", + "title": "Topics in the Law and Economics of Competition Policy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5226", + "title": "Multimodal Transport Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5226V", + "title": "Multimodal Transport Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5226.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5227", + "title": "Philanthropy, Non-profit Organizations, and the Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5228", + "title": "The Use of Force in International Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5228V", + "title": "The Use of Force in International Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5228.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5229", + "title": "Corporate Governance in the US and UK", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4065/LL5065/LL6065 Comparative Corporate \nGovernance & LL4162/LL5162/LL6162 Corporate \nGovernance in Singapore", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5231", + "title": "Transition and the Rule of Law in Myanmar", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5233", + "title": "European Company Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5233V", + "title": "European Company Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5233.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5234", + "title": "Property Theory", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For law students: NUS Compulsory Core Curriculum For non-law students: Open to Philosophy, Political Science, and USP students.", + "corequisite": "" + }, + { + "moduleCode": "LL5234V", + "title": "Property Theory", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5234.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5235", + "title": "International Contract Law: Principles and Practice", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4235V/LL5235V/LL6235V International Contract Law: Principles and Practice", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5235V", + "title": "International Contract Law: Principles and Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4235/LL5235/LL6235 International Contract Law: Principles and Practice", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5237V", + "title": "Law, Institutions, and Business in Greater China", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5238", + "title": "International Corporate Finance", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students should not have done a substantially similar subject. Students doing or have done any of the following module(s) are precluded: \n1) Securities Regulation [LL4055/LL5055/LL6055]; \n(2) Corporate Law & Finance [LL4188/LL5188/LLD5188/LL6188]; \n(3) Corporate Finance Law & Practice in Singapore [LL4182/LL5182/LLD5182/LL6182]; \n(4) International Corporate Finance [LL4409/LL5409/LL6409]", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent; Law of Contract [LC1003 or equivalent]; \nCompany Law [LC2008/LC5008/LCD5008/LC6008]", + "corequisite": "" + }, + { + "moduleCode": "LL5238V", + "title": "International Corporate Finance", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5238.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5239V", + "title": "Law & Politics in South Asia", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent For non law students from FASS (with at least 80MCs)", + "corequisite": "Open only to upper year students from FASS and allied departments (with at least 80 MCs)." + }, + { + "moduleCode": "LL5241", + "title": "Financial Stability and the Regulation of Banks", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5242S", + "title": "Financial Regulation and Central Banking", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who have taken or are taking the modules\n- Banking Law [LL4006/LL5006/LL6006; LL4006V/LL5006V/LL6006V]\n- Law of Central Banking [LL4242V/LL5242V/LL6242V]", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5242V", + "title": "Financial Regulation and Central Banking", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have read the following module are precluded:\n(1) Financial Stability and the Regulation of Banks [LL4241/LL5241/LL6241;LL4241V/LL5241V/LL6241V]", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5243", + "title": "Law, Economics, Development, and Geography", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4243V/LL5243V/LL6243V Law, Economics, Development, and Geography", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent\n\nFor Non-Law students: \nOpen to students from FASS (Global Studies) who have completed 80 MCs with a minimum of 28 MCs in their major with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "LL5243V", + "title": "Law, Economics, Development, and Geography", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4243/LL5243/LL6243 Law, Economics, Development, and Geography", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent\n\nFor Non-Law students: \nOpen to students from FASS (Global Studies) who have completed 80 MCs with a minimum of 28 MCs in their major with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "LL5244V", + "title": "Criminal Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Students taking this module will be precluded from LL4208/LL5208/LL6208 & LL4208V/LL5208V/LL6208V ACLP, and vice versa.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Core Law Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5245V", + "title": "Regulatory Foundations of Public Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "LL4245/LL5245/LL6245 Regulatory Foundations of Public Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent. A foundational course on constitutional and administrative law (from either a common law or some other jurisdiction).\n\nFor Non Law students from FASS (Political Science - with at least 80 MCs).", + "corequisite": "" + }, + { + "moduleCode": "LL5246", + "title": "International Carriage of Passengers by Sea", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5247V", + "title": "International Economic Law & Globalisation", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5249", + "title": "Shareholders' Rights & Remedies", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5250", + "title": "Principles of Equity Financing", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5251", + "title": "International Humanitarian Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5251V", + "title": "International Humanitarian Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5252", + "title": "The EU and its Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5253V", + "title": "The Law of Treaties", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5254V", + "title": "Developing States in a Changing World Order", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4254/LL5254/LL6254 Developing States in a Changing World Order", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5255V", + "title": "Trade Remedy Law & Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5256", + "title": "Comparative Constitutional Government", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5257", + "title": "Law & Finance", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5258V", + "title": "Personal Property Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who have read: LL4047/LL5047/LL6047/ LL4047V/LL5047V/LL6047V Personal Property I – Tangible; LL4168/LL5168/LL6168/ LL4168V/LL5168V/LL6168V Personal Property Law II – Intangible & LL4411/LL5411/LL6411 Personal Property Law (8MC) are precluded.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5259AV", + "title": "Alternative Investments", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4314/LL5314/LL6314; LL4314V/LL5314V/LL6314 Private Equity and Venture Capital: Law and Practice", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5259V", + "title": "Alternative Investments", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4314/LL5314/LL6314; LL4314V/LL5314V/LL6314 Private Equity and Venture Capital: Law and Practice", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5260V", + "title": "Chinese Commercial Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students should not have had past practice experience in China and should not have taken a substantially similar course.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5261V", + "title": "Employment Law & Migrant Workers Clinic", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) Only Singapore Citizens for externships at the Ministry of\nManpower beginning in July; (b) NUS Compulsory Core Law\nCurriculum, NUS Legal Skills Programme or equivalent; (c)\nCrossing Borders: Law, Migration & Citizenship\n[LL4134/LL5134/LL6134; LL4134V/LL5134V/LL6134V] (may be\ntaken concurrently).", + "corequisite": "Crossing Borders: Law, Migration and Citizenship (LL4134; LL5134; LL6134 / LL4134V; LL5134; LL6134)" + }, + { + "moduleCode": "LL5263V", + "title": "Intellectual Property Rights and Competition Policy", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "IP and Competition Law (LL4075V/LL5075V/LL6075V;\nLL4075/LL5075/LL6075)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "Law of Intellectual Property A (LL4405A/LL5405A/LL6405A/LC5405A) Law of Intellectual Property B (LL4405B/LL5405B/LL6405B/LC5405B) Foundations of IP Law (LL4070V/LL5070V/LL6070V/LC5070V; LL4070/LL5070/LL6070/LC5070]" + }, + { + "moduleCode": "LL5267V", + "title": "Architecting Deals: A Framework of Private Orderings", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5268", + "title": "Remedies", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5269", + "title": "Privacy and Intellectual Property", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Privacy Law: Critical & Comparative Perspectives\nLL4169/LL5169/LL6169\nLL4169V / LL5169V / LL6169V", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5270", + "title": "International Human Rights of Women", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5271", + "title": "Law and Policy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5272", + "title": "International Financial System: Law and Practice", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Financial Stability & The Regulation of Banks\nLL4241; LL5241; LL6241 / LL4241V; LL5241V; LL6241V", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5273", + "title": "European & International Competition Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5274", + "title": "Comparative GST Law & Policy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5275", + "title": "International Institutional Law:", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5276", + "title": "Advanced Contract Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Philosophical Foundations of Contract Law\nLL4187/LL5187/LL6187\nLL4187V/LL5187V/LL6187V", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent Contract Law", + "corequisite": "" + }, + { + "moduleCode": "LL5277V", + "title": "Medical Law and Ethics", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who have read LL4400/LL5400/LL6400 BIOMEDICAL LAW & ETHICS are precluded.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5278V", + "title": "Trade and Investment Law in the Asia-Pacific", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "Public International Law: LL4050; LL5050; LL6050; LC5050 / LL4050V; LL5050V; LL6050V; LC5050V" + }, + { + "moduleCode": "LL5279V", + "title": "Access to Justice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5280V", + "title": "Crime and Companies", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5281V", + "title": "Civil Procedure", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4011; LL5011; LL6011 Civil Justice and Process\nLL4011V; LL5011V; LL6011V Civil Justice and Process", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5282V", + "title": "Resolution of Transnational Commercial Disputes", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5283V", + "title": "Artificial Intelligence, Information Science & Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent\nInformation Technology Law I [LL4076/LL5076/LL6076;\nLL4076V/LL5076V/LL6076V] or Information Technology Law II\n[LL4077/LL5077/LL6077; LL4077V/LL5077V/LL6077V]\n\nGCE “A” Level Mathematics (at least), with basic understanding of\nprobability theory and linear algebra \nProgramming skills in e.g. MatLab/Octave/Java/Python/R is a bonus.", + "corequisite": "" + }, + { + "moduleCode": "LL5284", + "title": "Confucianism and Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5285V", + "title": "International Dispute Settlement", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "LL4285/LL5285/LL6285/LC5285 International Dispute Settlement", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5286V", + "title": "Transnational Terrorism and International Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5287V", + "title": "ASEAN Law and Policy", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5288V", + "title": "Business, International Commerce and the European Union", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4288/LL5288/LL6288 Business, International Commerce and the European Union", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5289V", + "title": "The Evolution of International Arbitration", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4289/LL5289/LL6289 The Evolution of International Arbitration", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent. At least one prior course in international law or international arbitration, or taken concurrently", + "corequisite": "" + }, + { + "moduleCode": "LL5290V", + "title": "Legal Research: Method & Design", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4290/LL5290/LL6290 Legal Research: Method & Design", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5291", + "title": "Legal Pluralism and Global Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4291V/LL5291V/LL6291V Legal Pluralism and Global Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nOne prior course in either (i) law and the social sciences (anthropology, sociology, economics), or (ii) LL4050V/LL5050V/6050V/LC5050V; LL4050/LL5050/LL6050/LC5050 Public International Law or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5291V", + "title": "Legal Pluralism and Global Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4291/LL5291/LL6291 Legal Pluralism and Global Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nOne prior course in either (i) law and the social sciences (anthropology, sociology, economics), or (ii) LL4050V/LL5050V/6050V/LC5050V; LL4050/LL5050/LL6050/LC5050 Public International Law or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5292V", + "title": "State Responsibility: Theory and Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "LL4292/LL5292/LL6292 State Responsibility: Theory and\nPractice", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5293S", + "title": "Business Torts", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "No", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "No", + "corequisite": "No" + }, + { + "moduleCode": "LL5294S", + "title": "Security and Insolvency Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Credit and Security (LL4019V/LL5019V/LL6019V)\nStudents who have studied credit and security or\ninsolvency law or similar subjects in a commonwealth\njurisdiction", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LC5230 Elements of Company Law or its equivalent in a common law jurisdiction", + "corequisite": "" + }, + { + "moduleCode": "LL5295", + "title": "Conflict of Laws in Int’l Commercial Arbitration", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4295V/LL5295V/LL6295V Conflict of Laws in Int’l Commercial Arbitration", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5296", + "title": "Imitation, Innovation and Intellectual Property", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4296V/LL5296V/LL6296V Imitation, Innovation and Intellectual Property", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nStudents should ideally have taken a module in intellectual property or concurrently enrolled in one.", + "corequisite": "" + }, + { + "moduleCode": "LL5297", + "title": "Practice of Corporate Finance and the Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4297V/LL5297V/LL6297V Practice of Corporate Finance and the Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5298", + "title": "International Finance", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4298V/LL5298V/LL6298V International Finance", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5299", + "title": "Advanced Issues in the Law & Practice of Int’l Arbitration", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4299V/LL5299V/LL6299V Advanced Issues in the Law & Practice of Int’l Arbitration", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5300", + "title": "Copyright in the Internet Age", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "(1) LL4076/LL5076/LL6076; LL4076V/LL5076V/LL5076V IT Law I\n(2) LL4300V/LL5300V/LL6300V Copyright in the Internet Age", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5301", + "title": "Topics in Constitutional Law: Socio-Economic Rights", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4301V/LL5301V/LL6301V Topics in Constitutional Law: Socio-Economic Rights", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5302", + "title": "Int'l Regulation of Finance & Investment Markets", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4302V/LL5302V/LL6302V Int’l Regulation of Finance & Investment Markets", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5302V", + "title": "Int'l Regulation of Finance & Investment Markets", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4302/LL5302/LL6302 Int’l Regulation of Finance & Investment Markets", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5303", + "title": "Law and Literature", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4303V/LL5303V/LL6303V Law and Literature", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5304", + "title": "Global Comparative Constitutional Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "(1) LL4012/LL5012/LL6012; LL4012V/LL5012V/LL6012V Comparative Constitutional Law\n(2) LL4304V/LL5304V/LL6304V Global Comparative Constitutional Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5305", + "title": "IP and Human Rights", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4305V/LL5305V/LL6305V IP and Human Rights", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nStudents should ideally have taken a module in intellectual\nproperty or concurrently enrolled in one.", + "corequisite": "" + }, + { + "moduleCode": "LL5306", + "title": "Chinese Banking Law Chinese Banking Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4306V/LL5306V/LL6306V Banking Law and Financial Regulation in China OR Chinese Banking Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5306V", + "title": "Chinese Banking Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4306/LL5306/LL6306 Banking Law and Financial Regulation in China OR Chinese Banking Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5307", + "title": "EU Maritime Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4307V/LL5307V/LL6307V EU Maritime Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5308V", + "title": "Behavioural Economics, Law & Regulation", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4308/LL5308/LL6308 Behavioural Economics, Law & Regulation", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5309", + "title": "Strategies for Asian Disputes - A Comparative Analysis", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4309V/LL5309V/LL6309V Strategies for Asian Disputes; Strategies for Asian Disputes - A Comparative Analysis", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5309V", + "title": "Strategies for Asian Disputes - A Comparative Analysis", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4309/LL5309/LL6309 Strategies for Asian Disputes; Strategies for Asian Disputes - A Comparative Analysis", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5310V", + "title": "International Organisations in International Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4310/LL5310/LL6310 International Organisations in International Law;\nLL4275/LL5275/LL6275 International Institutional Law;\nLL4275V/LL5275V/LL6275V International Institutional Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5311", + "title": "Islamic Law and the Family", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4311V/LL5311V/LL6311V Islamic Law and the Family", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5312V", + "title": "The Law of Global Governance", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4312/LL5312/LL6312 The Law of Global Governance", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nBackground in Public International Law and/or Administrative\nLaw is an asset.", + "corequisite": "" + }, + { + "moduleCode": "LL5313V", + "title": "Mediation/Conciliation of Inter- & Investor-State Disputes", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4313/LL5313/LL6313 Mediation/Conciliation of Inter- & Investor-State Disputes", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent. One prior course in international arbitration or public international law, or taken concurrently.", + "corequisite": "" + }, + { + "moduleCode": "LL5314S", + "title": "Private Equity and Venture Capital: Law and Practice", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4259V/LL5259V/LL6259V Alternative Investment Vehicles", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5314V", + "title": "Private Equity and Venture Capital: Law and Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "(1) LL4314/LL5314/LL6314 Private Equity and Venture Capital: Law and Practice; (2) LL4259V/LL5259V/LL6259V; LL4259/LL5259/LL6259 Alternative Investments (3) LL5314S Private Equity and Venture Capital: Law and Practice", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5315S", + "title": "China's Tax Law and International Tax Policy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5316V", + "title": "Restitution of Unjust Enrichment", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4316/LL5316/LL6316 Restitution of Unjust Enrichment; LL4051/LL5051/LL6051; LL4051V/LL5051V/LL6051V Principles of Restitution", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5317V", + "title": "International Arbitration in Asian Centres", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "LL4317/LL5317/LL6317 International Arbitration in Asian Centres", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "LL4029/LL5029/LC5262/LL6029; LL4029V/LL5029V/LC5262V/ LL6029V International Commercial Arbitration; OR LL4285/LL5285/LC5285/LL6285; LL4285V/LL5285V/LC5285V/ LL6285V International Dispute Settlement ; OR their equivalent at another University" + }, + { + "moduleCode": "LL5318V", + "title": "Public Health Law and Regulation", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4318/LL5318/LL6318 Public Health Law and Regulation; \nA similar course in another faculty or law school anywhere else.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5319V", + "title": "Current Problems in International Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4319/LL5319/LL6319 Current Problems in International Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "Public International Law is recommended." + }, + { + "moduleCode": "LL5320", + "title": "International Space Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "LL4320V/LL5320V/LL6320V International Space Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5320V", + "title": "International Space Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4320/LL5320/LL6320 International Space Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5321", + "title": "Deals: The Economic Structure of Business Transactions", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4321V/LL5321V/LL6312V Deals: The Economic Structure of Business Transactions \nLL4267/LL5267/LL6267; LL4267V/LL5267V/LL6267V Architecting Deals: A Framework of Private Orderings", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5322", + "title": "Trade Finance Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4322V/LL5322V/LL6322V Trade Finance Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent. Students should have covered the core private law subjects of Contract, Tort and Trusts.", + "corequisite": "" + }, + { + "moduleCode": "LL5322V", + "title": "Trade Finance Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5323", + "title": "Law of Agency", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4323V/LL5323V/LL6323V Law of Agency", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5324", + "title": "Comparative Trade Mark Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4324V/LL5324V/LL6324V Comparative Trade Mark Law; \nLL4096/LL5096/LL6096; LL4096V/LL5096V/LL6096V International Trademark Law and Policy", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5325", + "title": "The Int'l Litigation & Procedure of State Disputes", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4325V/LL5325V/LL6325V - The Int’l Litigation & Procedure of State Disputes \n\nLL4285V/LL5285V/LC5285V/LL6285V; \nLL4285/LL5285/LC5285/LL6285 - International Dispute Settlement", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5326", + "title": "Administrative Justice: Perspectives from the U.S.", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4326V/LL5326V/LL6326V Administrative Justice: Perspectives from the U.S", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5327V", + "title": "Mergers and Acquisitions: A Practitioner’s Perspective", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "(1) LL4327/LL5327/LL6327 Mergers and Acquisitions: A Practitioner’s Perspective; \n(2) LL4074/LL5074/LL6074; LL4074V/LL5074V/LL6074V Mergers & Acquisitions (M&A); \n(3) LL4223/LL5223/LL6223; LL4233V/LL5223V/LL6223V Cross Border Mergers", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent. \nContracts, Property, Equity & Trusts and Company Law. \nAn ability to engage in discussion in English.", + "corequisite": "" + }, + { + "moduleCode": "LL5328", + "title": "Sports Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4328V/LL5328V/LL6328V Sports Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5329", + "title": "Cross-Border Litigation", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4329V/LL5329V/LL6329V Cross-Border Litigation;\nLL4030V/LL5030V/LL6030V; LL4030/LL5030/LL6030 International Commercial Litigation; \nLL4049V/LL5049V/LL6049V; LL4049/LL5049/LL6049 Principles of Conflict of Laws", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5330", + "title": "Advanced Trusts Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4330V/LL5330V/LL6330V Advanced Trusts Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5331", + "title": "The Rule of Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4331V/LL5331V/LL6331V The Rule of Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5332", + "title": "Fair Use in Theory and Practice", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4332V/LL5332V/LL6332V Fair Use in Theory and Practice", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5333", + "title": "International Criminal Law Clinic", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "If there is any other substantive international criminal law course offered by colleagues as there will be substantive overlap.\n\nLL4333V/LL5333V/LL6333V International Criminal Law Clinic", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nNo auditing", + "corequisite": "" + }, + { + "moduleCode": "LL5333V", + "title": "International Criminal Law Clinic", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "If there is any other substantive international criminal law course offered by colleagues as there will be substantive overlap.\n\nLL4333/LL5333/LL6333 International Criminal Law Clinic", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nNo auditing", + "corequisite": "" + }, + { + "moduleCode": "LL5334", + "title": "Law and Society in Southeast Asia", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4334V/LL5334V/LL6334V Law and Society in Southeast Asia (5MCs)\nSC4883 Selected Topics in Law and Justice", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5335V", + "title": "Multinational Enterprises and International Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4335/LL5335/LL6335 Multinational Enterprises and International Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5338V", + "title": "Advanced Practicum in International Arbitration", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4338/LL5338/LL6338 Advanced Practicum in International Arbitration", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent. \nLL4029/LL5029/LC5262/LL6029; \nLL4029V/LL5029V/LC5262V/LL6029V International \nCommercial Arbitration; OR \nLL4285/LL5285/LC5285/LL6285; \nLL4285V/LL5285V/LC5285V/LL6285V International \nDispute Settlement; OR their equivalent at another university", + "corequisite": "" + }, + { + "moduleCode": "LL5339", + "title": "Comparative Evidence in International Arbitration", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "LL4339V/LL5339V/LL6339V Comparative Evidence in International Arbitration", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5340", + "title": "International Refugee Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4340V/LL5340V/LL6340V International Refugee Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLL4050/LL5050/LL6050/LC5050; L4050V / LL5050V / LL6050V / LC5050V Public International Law (or as a co-requisite)", + "corequisite": "LL4050/LL5050/LL6050/LC5050; LL4050V / LL5050V / LL6050V / LC5050V Public International Law (or as a pre-requisite)" + }, + { + "moduleCode": "LL5340V", + "title": "International Refugee Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4340/LL5340/LL6340 International Refugee Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLL4050/LL5050/LL6050/LC5050; L4050V / LL5050V / LL6050V / LC5050V Public International Law (or as a co-requisite)", + "corequisite": "LL4050/LL5050/LL6050/LC5050; LL4050V / LL5050V / LL6050V / LC5050V Public International Law (or as a pre-requisite)" + }, + { + "moduleCode": "LL5341", + "title": "The Law and Politics of Forced Migration", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4341V/LL5341V/LL6341V The Law and Politics of Forced Migration", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLL4050/LL5050/LL6050/LC5050; L4050V / LL5050V / LL6050V / LC5050V Public International Law (or as a co-requisite)", + "corequisite": "LL4050/LL5050/LL6050/LC5050; LL4050V / LL5050V / LL6050V / LC5050V Public International Law (or as a pre-requisite)" + }, + { + "moduleCode": "LL5341V", + "title": "The Law and Politics of Forced Migration", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4341/LL5341/LL6341 The Law and Politics of Forced Migration", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLL4050/LL5050/LL6050/LC5050; L4050V / LL5050V / LL6050V / LC5050V Public International Law (or as a co-requisite)", + "corequisite": "LL4050/LL5050/LL6050/LC5050; LL4050V / LL5050V / LL6050V / LC5050V Public International Law (or as a pre-requisite)" + }, + { + "moduleCode": "LL5342", + "title": "Taxation of Cross-Border Commercial Transactions", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4035/LL5035/LL6035/LC5035/LC5035A/LC5035B/; LL4035V/LL5035V/LL6035V Taxation Issues in Cross-Border Transactions;\n\nLL4342V/LL5342V/LL6342V Taxation of Cross-Border Commercial Transactions", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5342V", + "title": "Taxation of Cross-Border Commercial Transactions", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4035/LL5035/LL6035/LC5035/LC5035A/LC5035B/; LL4035V/LL5035V/LL6035V\nTaxation Issues in Cross-Border Transactions;\n\nLL4342/LL5342/LL6342 Taxation of Cross-Border Commercial Transactions", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5343", + "title": "International Regulation of the Global Commons", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4343V/LL5343V/LL6343V International Regulation of the Global Commons", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5343V", + "title": "International Regulation of the Global Commons", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4343/LL5343/LL6343 International Regulation of the Global Commons", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5344", + "title": "Public and Private International Copyright Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4344V/LL5344V/LL6344V Public and Private International Copyright Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5344V", + "title": "Public and Private International Copyright Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4344/LL5344/LL6344 Public and Private International Copyright Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5345", + "title": "The Fulfilled Life and the Life of the Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4345V/LL5345V/LL6345V The Fulfilled Life and the Life\nof the Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5345V", + "title": "The Fulfilled Life and the Life of the Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4345/LL5345/LL6345 The Fulfilled Life and the Life of\nthe Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5346", + "title": "Interim Measures in International Arbitration", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.\nInternational Commercial Arbitration\nor\nInternational Dispute Settlement", + "corequisite": "International Commercial Arbitration or International Dispute Settlement" + }, + { + "moduleCode": "LL5346V", + "title": "Interim Measures in International Arbitration", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.\nInternational Commercial Arbitration\nor\nInternational Dispute Settlement", + "corequisite": "International Commercial Arbitration or International Dispute Settlement" + }, + { + "moduleCode": "LL5347", + "title": "Art & Cultural Heritage Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4347V/LL5347V/LL6347V Art & Cultural Heritage Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5347V", + "title": "Art & Cultural Heritage Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4347/LL5347/LL6347 Art & Cultural Heritage Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5348", + "title": "Monetary Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4348V/LL5348V/LL6348V Monetary Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLaw of Contract; Principles of Property Law; Equity and Trusts", + "corequisite": "" + }, + { + "moduleCode": "LL5348V", + "title": "Monetary Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4348/LL5348/LL6348 Monetary Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLaw of Contract; Principles of Property Law; Equity and Trusts", + "corequisite": "" + }, + { + "moduleCode": "LL5349", + "title": "Energy Arbitration", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4349V/LL5349V/LL6349V Energy Arbitration", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5349V", + "title": "Energy Arbitration", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4349/LL5349/LL6349 Energy Arbitration", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5350", + "title": "Privacy & Data Protection Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4350V/LL5350V/LL6350V Privacy & Data Protection Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5350V", + "title": "Privacy & Data Protection Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4350/LL5350/LL6350 Privacy & Data Protection Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5351", + "title": "Comparative Corporate Law in East Asia", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4351V/LL5351V/LL6351V Comparative Corporate Law in East Asia", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLC2008 Company Law or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5351V", + "title": "Comparative Corporate Law in East Asia", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4351/LL5351/LL6351 Comparative Corporate Law in East Asia", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLC2008 Company Law or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5352", + "title": "China and International Economic Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4352V/ LL5352V/LL6352V China and International Economic Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5352V", + "title": "China and International Economic Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4352V/ LL5352V/LL6352V China and International Economic Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5353", + "title": "Character Evidence in the Common Law World", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4353V/LL5353V/LL6353V Character Evidence in the Common Law World", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLC3001A Evidence (A) / LC3001B Evidence (B) or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5353V", + "title": "Character Evidence in the Common Law World", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4353V/LL5353V/LL6353V Character Evidence in the Common Law World", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLC3001A Evidence (A) / LC3001B Evidence (B) or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL5354", + "title": "Comparative Human Rights Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4354V/LL5354V/LL6353V Comparative Human Rights Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nConstitutional Law", + "corequisite": "" + }, + { + "moduleCode": "LL5354V", + "title": "Comparative Human Rights Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4354V/LL5354V/LL6353V Comparative Human Rights Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nConstitutional Law", + "corequisite": "" + }, + { + "moduleCode": "LL5355", + "title": "International Law and Development", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4355V/LL5355V/LL6355V International Law and Development", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5355V", + "title": "International Law and Development", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4355/LL5355/LL6355 International Law and Development", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5356", + "title": "International Economic Law Clinic", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4356V / LL5356V / LL6356V International Investment Law Clinic", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nInternational Investment Law course OR International Trade Law course OR taken concurrently OR relevant experience in lieu of.", + "corequisite": "" + }, + { + "moduleCode": "LL5356V", + "title": "International Economic Law Clinic", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4356 / LL5356 / LL6356 International Investment Law Clinic", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nInternational Investment Law course OR International Trade Law course OR taken concurrently OR relevant experience in lieu of.", + "corequisite": "" + }, + { + "moduleCode": "LL5357", + "title": "Regulation & Political Economy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4357V/LL5357V/LL6357V - Regulation & Political Economy", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5357V", + "title": "Regulation & Political Economy", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4357/LL5357/LL6357 Regulation & Political Economy", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5358Z", + "title": "ICC Arbitration", + "moduleCredit": 2, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "NUS Compulsory Core Law Curriculum or equivalent" + }, + { + "moduleCode": "LL5359Z", + "title": "SIAC and Institutional Arbitration", + "moduleCredit": 2, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nAt least one prior course in international arbitration.", + "corequisite": "" + }, + { + "moduleCode": "LL5360Z", + "title": "Current Challenges to Investment Arbitration", + "moduleCredit": 2, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5361Z", + "title": "Complex Arbitrations: Multiparty – Multicontract", + "moduleCredit": 2, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5362V", + "title": "Advanced Criminal Litigation - Forensics on Trial", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "FSC4206 Advanced Criminal Litigation - Forensics on Trial", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For LAW students:\nNUS Compulsory Core Law Curriculum or equivalent.\nLC1001% Criminal Law\n\nFor FoS students:\nLSM1306 Forensic Science", + "corequisite": "" + }, + { + "moduleCode": "LL5363", + "title": "Sentencing Law and Practice", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4363V/LL5363V/LL6363V", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5363V", + "title": "Sentencing Law and Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4363/LL5363/LL6363", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5364", + "title": "Principles of Civil Law: Law of Obligations & Property", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4364V/LL5364V/LL6364V Principles of Civil Law: Law of Obligations & Property\n\nStudents from civil law jurisdictions or students who have a previous law degree from a civil law jurisdiction", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5364V", + "title": "Principles of Civil Law: Law of Obligations & Property", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "LL4364/LL5364/LL6364 Principles of Civil Law: Law of Obligations & Property\n\nStudents from civil law jurisdictions or students who have a previous law degree from a civil law jurisdiction", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5367", + "title": "Singapore at the UN - A Clinical Externship", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4367V/LL5367V/LL6367V", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\n\nSingapore Law in Context or equivalent course focusing\non the Singapore legal system in the political and social\ncontext of Singapore.\n\nPublic International Law or equivalent courses, including\nUnited Nations Law.\n\nAs the class size is limited, students must undergo a\nselection process which may include an interview.", + "corequisite": "" + }, + { + "moduleCode": "LL5367V", + "title": "Singapore at the UN - A Clinical Externship", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4367/LL5367/LL6367", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\n\nSingapore Law in Context or equivalent course focusing\non the Singapore legal system in the political and social\ncontext of Singapore.\n\nPublic International Law or equivalent courses, including\nUnited Nations Law.\n\nAs the class size is limited, students must undergo a\nselection process which may include an interview.", + "corequisite": "" + }, + { + "moduleCode": "LL5368", + "title": "Comparative Constitutionalism", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4368V/LL5368V/LL6368V", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5368V", + "title": "Comparative Constitutionalism", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4368/LL5368/LL6368", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5369", + "title": "Constitutionalism in Asia", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4369V/LL5369V/LL6369V Constitutionalism in Asia", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5369V", + "title": "Constitutionalism in Asia", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4369/LL5369/LL6369 Constitutionalism in Asia", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5370", + "title": "The Law of Cybersecurity, Privacy and Data Compliance", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "IFS4101 (for dual-track LLB and BSc (Comp. - IS) students; LL4370V/LL5370V/LL6370V The Law of Cybersecurity, Privacy and Data Compliance", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5370V", + "title": "The Law of Cybersecurity, Privacy and Data Compliance", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "IFS4101 (for dual-track LLB and BSc (Comp. - IS) students; LL4370/LL5370/LL6370 The Law of Cybersecurity, Privacy and Data Compliance", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5371", + "title": "Charity Law Today", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4371V/LL5371V/LL63871V Charity Law Today", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5371V", + "title": "Charity Law Today", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4371/LL5371/LL6371 Charity Law Today", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5372", + "title": "International Intellectual Property Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4372V/LL5372V/LL6372V", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "[LL4070/LL5070/LL6070; LL4070V/LL5070V/LL6070V] [LL4405A/LL5405A/LL6405A/LC5405A]" + }, + { + "moduleCode": "LL5372V", + "title": "International Intellectual Property Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4372/LL5372/LL6372", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "[LL4070/LL5070/LL6070; LL4070V/LL5070V/LL6070V] [LL4405A/LL5405A/LL6405A/LC5405A]" + }, + { + "moduleCode": "LL5373", + "title": "Advanced Copyright", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4373V/LL5373V/LL6373V Advanced Copyright", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5373V", + "title": "Advanced Copyright", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4373/LL5373/LL6373 Advanced Copyright", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5374", + "title": "Water Rights & Resources: Issues in Law & Development", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4374V/LL5374V/LL6374V Water Rights & Resources: Issues in Law & Development", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5374V", + "title": "Water Rights & Resources: Issues in Law & Development", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4374/LL5374/LL6374 Water Rights & Resources: Issues in Law & Development", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5375", + "title": "Traditional Chinese Legal Thought", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4375V/LL5375V/LL6375V", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5375V", + "title": "Traditional Chinese Legal Thought", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4375/LL5375/LL6375", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5376", + "title": "Regulation & Private Law in Banking & Financial Service", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4376V / LL5376V / LL6376V Regulation & Private Law in Banking & Financial Service", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5376V", + "title": "Regulation & Private Law in Banking & Financial Service", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4376 / LL5376 / LL6376 Regulation & Private Law in Banking & Financial Service", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5377", + "title": "Law in Action: Legal Policymaking Externship", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4377V/LL5377V/LL6377V Law in Action: Legal Policymaking Externship", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nSingaporean Citizens / PR\nAs the class size is limited, students must undergo a selection process which may include an interview.\nAll participants are subject to security screening and must obtain the requisite security clearance before they can be admitted to the course.", + "corequisite": "" + }, + { + "moduleCode": "LL5377V", + "title": "Law in Action: Legal Policymaking Externship", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4377/LL5377/LL6377 Law in Action: Legal Policymaking Externship", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nSingaporean Citizens / PR\nAs the class size is limited, students must undergo a selection process which may include an interview.\nAll participants are subject to security screening and must obtain the requisite security clearance before they can be admitted to the course.", + "corequisite": "" + }, + { + "moduleCode": "LL5379", + "title": "Future of Int'l Commercial Arbitration in APAC Region", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4379V/LL5379V/LL6379V Future of Int’l Commercial Arbitration in APAC Region", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nInternational Commercial Arbitration\nLL4029V,LL5029V,LL6029V,LC5262V;\nLL4029AV,LL5029AV,LL6029AV,LC5262AV", + "corequisite": "International Commercial Arbitration LL4029V,LL5029V,LL6029V,LC5262V; LL4029AV,LL5029AV,LL6029AV,LC5262AV" + }, + { + "moduleCode": "LL5379V", + "title": "Future of Int'l Commercial Arbitration in APAC Region", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4379/LL5379/LL6379 Future of Int’l Commercial Arbitration in APAC Region", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nInternational Commercial Arbitration\nLL4029V,LL5029V,LL6029V,LC5262V;\nLL4029AV,LL5029AV,LL6029AV,LC5262AV", + "corequisite": "International Commercial Arbitration LL4029V,LL5029V,LL6029V,LC5262V; LL4029AV,LL5029AV,LL6029AV,LC5262AV" + }, + { + "moduleCode": "LL5381", + "title": "Heritage Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4347/LL5347/LL6347;LL4347V/LL5347V/LL6347V Art & Cultural Heritage Law; LL4381V/LL5381V/LL6381V Heritage Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5381V", + "title": "Heritage Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4347/LL5347/LL6347;LL4347V/LL5347V/LL6347V Art & Cultural Heritage Law; LL4381/LL5381/LL6381 Heritage Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5382", + "title": "Core Aspects of Private International Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Not open to anyone who has done:\nLL4030V/LL5030V/LL6030V; LL4030/LL5030/LL6030 International Commercial Litigation;\nLL4049V/LL5049V/LL6049V; LL4049/LL5049/LL6049 Principles of Conflict of Laws;\nLL4205V/LL5205V/LL6205V/LLD5205V;\nLL4205/LL5205/LL6205/LLD5205V Maritime Conflict of Laws at NUS Law, or a substantially similar course elsewhere", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5382V", + "title": "Core Aspects of Private International Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Not open to anyone who has done:\nLL4030V/LL5030V/LL6030V; LL4030/LL5030/LL6030 International Commercial Litigation;\nLL4049V/LL5049V/LL6049V; LL4049/LL5049/LL6049 Principles of Conflict of Laws;\nLL4205V/LL5205V/LL6205V;LLD5205V;\nLL4205/LL5205/LL6205/LL5205V Maritime Conflict of Laws at NUS Law, or a substantially similar course elsewhere", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5383Z", + "title": "International Arbitration & the New York Convention", + "moduleCredit": 2, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5384", + "title": "Harms and Wrongs", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "LL4384V/LL5384V/LL6384V Harms and Wrongs", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5384V", + "title": "Harms and Wrongs", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4384/LL5384/LL6384 Harms and Wrongs", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5385", + "title": "Taxation Law & the Global Digital Economy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4385V/LL5385V/LL6385V Taxation Law & the Global Digital Economy", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5385V", + "title": "Taxation Law & the Global Digital Economy", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4385/LL5385/LL6385 Taxation Law & the Global Digital Economy", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5387", + "title": "Regulation of Digital Platform", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4387V/LL5387V/LL6387V Regulation of Digital Platforms", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5387V", + "title": "Regulation of Digital Platforms", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4387/LL5387/LL6387 Regulation of Digital Platforms", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5388", + "title": "Comparative Civil Law: Thai Contract Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4388V/LL5388V/LL6388V Comparative Civil Law: Thai Contract Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5388V", + "title": "Comparative Civil Law: Thai Contract Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4388/LL5388/LL6388 Comparative Civil Law: Thai Contract Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5389", + "title": "Asset-Based Financing: Quasi-Security Devices", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4389V/LL5389V/LL6389V Asset-Based Financing: Quasi-Security Devices", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5389V", + "title": "Asset-Based Financing: Quasi-Security Devices", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4389/LL5389/LL6389 Asset-Based Financing: Quasi-Security Devices", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5393", + "title": "Liability of Corporate Groups and Networks", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLC1004 Law of Torts", + "corequisite": "LC2008 Company Law" + }, + { + "moduleCode": "LL5393V", + "title": "Liability of Corporate Groups and Networks", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLC1004 Law of Torts", + "corequisite": "LC2008 Company Law" + }, + { + "moduleCode": "LL5395", + "title": "The Law & Practice of Modern Trust Structures", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4395V/LL5395V/LL6395V The Law & Practice of Modern Trust Structures", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLC2006 Equity & Trusts", + "corequisite": "" + }, + { + "moduleCode": "LL5395V", + "title": "The Law & Practice of Modern Trust Structures", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4395/LL5395/LL6395 The Law & Practice of Modern Trust Structures", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLC2006 Equity & Trusts", + "corequisite": "" + }, + { + "moduleCode": "LL5396", + "title": "University Research Opportunities Programme", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5396V", + "title": "International Arbitration & Dispute Resolution Research", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "LC5262V/LL4029V/LL5029V/LL6029V & LC5285V/LL4285V/LL5285V/LL6285V" + }, + { + "moduleCode": "LL5397", + "title": "University Research Opportunities Programme", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5397V", + "title": "International Arbitration & Dispute Resolution Research", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "LC5262V/LL4029V/LL5029V/LL6029V & LC5285V/LL4285V/LL5285V/LL6285V" + }, + { + "moduleCode": "LL5398", + "title": "University Research Opportunities Programme", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5399", + "title": "University Research Opportunities Programme", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5400", + "title": "Biomedical Law & Ethics", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5402", + "title": "Corporate Insolvency Law", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5403", + "title": "Family Law", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5405A", + "title": "Law of Intellectual Property (a)", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5405B", + "title": "Law of Intellectual Property (B)", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5407", + "title": "Law of Insurance", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5409", + "title": "International Corporate Finance", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL5411", + "title": "Personal Property Law", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4047 Personal Property I - Tangible\nLL4168 Personal Property Law II - Intangible", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent Some parts of the syllabus require students to refresh learning in equity & trusts, the laws of company, economic\ntorts and insolvency.", + "corequisite": "" + }, + { + "moduleCode": "LL5412", + "title": "Securities and Capital Markets Regulation", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students doing or have done any of the following module(s) are precluded: (1) International Corporate Finance [8MC - LL4409/LL5409/LLD5409/LL6409; 4MC - LL4238/LL5238/LL6238; 5MC – LL4238V/LL5238V/LL6238V]; (2) Corporate Finance Law & Practice in Singapore [4MC - LL4182/LL5182/LL6182; 5MC – LL4182V/LL5182V/LL6182V]; (3) Securities Regulation [4MC - L4055/LL5055/LL6055; 5MC – LL4055V/LL5055V/LL6055V]; (4) Securities Regulation [Module code: L53.3040 OR LW.10180] under the NYU@NUS Summer Session.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent. (b) Company Law [LC2008/LLB2008] or its equivalent in a developed common law jurisdiction (may be taken concurrently).", + "corequisite": "" + }, + { + "moduleCode": "LL5413", + "title": "Civil Justice and Procedure", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who have not studied the core subjects in a Common Law curriculum. \n\nNot open to students who are, or have been, legal practitioners or who have worked in any legal field. \n\nLL4011; LL5011; LL6011 / LL4011V; LL5011V; LL6011V Civil Justice & Process \n\nLL4281; LL5281; LL6281 / LL4281V; LL5281V; LL6281V Civil Procedure", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\n(It is impossible to study common law adversarial procedure without a background in these subjects.)", + "corequisite": "" + }, + { + "moduleCode": "LL5433", + "title": "Global Data Privacy Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4433V/LL5433V/LL6433V Global Data Privacy Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5433V", + "title": "Global Data Privacy Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "LL4433/LL5433/LL6433 Global Data Privacy Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5434", + "title": "International Commodity Trading Law Clinic", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4434V/LL5434V/LL6434V International Commodity Trading Law Clinic", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5434V", + "title": "International Commodity Trading Law Clinic", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4434/LL5434/LL6434 International Commodity Trading Law Clinic", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5435", + "title": "Foundations of Environmental Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4435V/LL5435V/LL6435V Foundations of Environmental Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL5435V", + "title": "Foundations of Environmental Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4435/LL5435/LL6435 Foundations of Environmental Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6001", + "title": "Administration Of Criminal Justice", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6002", + "title": "Admiralty Law & Practice", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6002V", + "title": "Admiralty Law & Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Students who are taking or have taken LL6002.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6003V", + "title": "China, India and International Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6003.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6004", + "title": "Aviation Law & Policy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6004V", + "title": "Aviation Law & Policy", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Students who are taking or have taken LL6004.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6005V", + "title": "Bank Documentation", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken Bank Documentation.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent. Note to students from civil law jurisdiction: this module adopts a common law approach.", + "corequisite": "" + }, + { + "moduleCode": "LL6006", + "title": "Banking Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6006V", + "title": "Banking Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL6006.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6007", + "title": "Biotechnology Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6007V", + "title": "Biotechnology Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6007.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6008A", + "title": "Carriage of Goods by Sea", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6008AV", + "title": "Carriage of Goods By Sea", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Students who are taking or have taken Carriage of Goods by Sea.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6008B", + "title": "Carriage of Goods by Sea", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6008BV", + "title": "Charterparties", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL6008B.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6009", + "title": "Chinese Legal Tradition And Legal Chinese", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6009GRSI", + "title": "Graduate Research Seminar I (Legal Scholarship)", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6009V", + "title": "Chinese Legal Tradition And Legal Chinese", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Exchange students from law schools in China and post-graduate students who are graduates of law schools in China are precluded from taking this course for credit.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent. (b) Students must have obtained a B4 and above in CL or CL2 (AO Level) or B4 and above in Higher Chinese (HCL or CL1)", + "corequisite": "" + }, + { + "moduleCode": "LL6010", + "title": "Civil Law Tradition", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6010A", + "title": "Topics in the Civil Law Tradition (A): EU Harmonisation", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6010AV", + "title": "Topics in the Civil Law Tradition (A): EU Harmonisation", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6010A", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6011", + "title": "Civil Justice & Process", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "NUS Compulsory Core Law Curriculum or equivalent.\nFor Exchange/Graduate students: Students must have studied all the core subjects in a Common Law curriculum.\nNot open to students who are, or have been, legal practitioners or who have worked professionally in any legal field.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nFor Exchange/Graduate students: Students must have studied all the core subjects in a Common Law curriculum.\nNot open to students who are, or have been, legal practitioners or who have worked professionally in any legal field.", + "corequisite": "" + }, + { + "moduleCode": "LL6011V", + "title": "Civil Justice & Process", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4011/LL5011/LL6011 Civil Justice & Process;\nLL4413/LL5413/LL6413 Civil Justice and Procedure.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nFor Exchange/Graduate students: Students must have studied all the core subjects in a Common Law curriculum.\nNot open to students who are, or have been, legal practitioners or who have worked professionally in any legal field.", + "corequisite": "" + }, + { + "moduleCode": "LL6012V", + "title": "Comparative Constitutional Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL6012", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6013V", + "title": "Comparative Environmental Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6013", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6014", + "title": "Construction Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6014V", + "title": "Construction Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL6014", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6016A", + "title": "Topics in Int’l Criminal Law (A): Aggression", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6017", + "title": "Contract and Commercial Law in Civil-Law Asia", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Any student pursuing or having obtained a basic law degree in a civil law jurisdiction is precluded from taking this course. This course is for common law students who\nhave not studied the civil law.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent. \n\nContract Law (or the equivalent common law contract course for exchange and graduate students)", + "corequisite": "" + }, + { + "moduleCode": "LL6018", + "title": "Corporate Tax: Profits & Distributions", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6018V", + "title": "Corporate Tax: Profits & Distributions", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL6018", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6019", + "title": "Credit & Security", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6019V", + "title": "Credit & Security", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Students who are taking or have taken LL6019", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6021V", + "title": "Environmental Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6022V", + "title": "Globalization And International Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6022", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6024", + "title": "Indonesian Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6024V", + "title": "Indonesian Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL6024", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6025", + "title": "Rights", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For law students: NUS Compulsory Core Curriculum\nFor non‐law students: Open to Philosophy, Political Science, and USP students.", + "corequisite": "" + }, + { + "moduleCode": "LL6025V", + "title": "Rights", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6025", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6026V", + "title": "Infocoms Law: Competition & Convergence", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6026", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6027", + "title": "International & Comparative Law Of Sale", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6029", + "title": "International Commercial Arbitration", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6029AV", + "title": "International Commercial Arbitration", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6029BV", + "title": "International Commercial Arbitration", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6029V", + "title": "International Commercial Arbitration", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6029", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6030", + "title": "International Commercial Litigation", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Subject not offered to Graduate Diploma in Singapore Law students.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6030V", + "title": "International Commercial Litigation", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6030", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6031", + "title": "International Environmental Law & Policy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6031V", + "title": "International Environmental Law & Policy", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Students who are taking or have taken LL6031", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6032", + "title": "International Investment Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6032V", + "title": "International Investment Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6032", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6033", + "title": "International Legal Process", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6033V", + "title": "International Legal Process", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Students who are taking or have taken LL6033", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6034", + "title": "International Regulation Of Shipping", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6034V", + "title": "International Regulation of Shipping", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6034.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Core Law Curriculum or its equivalent. Students who have completed a course in Law of the Sea or Ocean Law & Policy may have a slight advantage", + "corequisite": "" + }, + { + "moduleCode": "LL6035", + "title": "Taxation Issues in Cross-Border Transactions", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "(1) LL4035V/LL5035V/LL6035V / LC5035 / LC5035V / LC5035A / LC5035B Taxation Issues in Cross-Border Transactions; (2) LL4342/LL5342/LL6342; LL4342V/LL5342V/LL6342V Taxation of Cross-Border Commercial Transactions", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent. \nNote: Company Law or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6035V", + "title": "Taxation Issues in Cross-Border Transactions", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "(1) LL4035/LL5035/LL6035/LC5035/LC5035V/LC5035A/ LC5035B Taxation Issues in Cross-Border Transactions; (2) LL4342/LL5342/LL6342; LL4342V/LL5342V/LL6342V Taxation of Cross-Border Commercial Transactions", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent. \nNote: Company Law or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6037", + "title": "Sociology of Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6037V", + "title": "Sociology of Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4037", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For Law Students: NUS Compulsory Core Law Curriculum or its equivalent; For Non-Law Students: Open to students from Arts and Social Sciences with at least 80 MCs.", + "corequisite": "" + }, + { + "moduleCode": "LL6042V", + "title": "Law and Religion", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6042.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For Law - NUS Compulsory Core Curriculum or its equivalent.\nFor Non-Law – At least 3rd year students from Arts and Social Sciences.", + "corequisite": "" + }, + { + "moduleCode": "LL6043", + "title": "Law Of Marine Insurance", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6043V", + "title": "Law Of Marine Insurance", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6043.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6044", + "title": "Mediation", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6044V", + "title": "Mediation", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Not open to students who have successfully completed Mediation.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6045", + "title": "Negotiation", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6045V", + "title": "Negotiation", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Note: Not open to students who have successfully completed Negotiation Workshop or its equivalent elsewhere. Not open to incoming exchange students.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6049", + "title": "Principles Of Conflict Of Laws", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6049V", + "title": "Principles Of Conflict Of Laws", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6049.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6050", + "title": "Public International Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6050V", + "title": "Public International Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL6050.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6051", + "title": "Principles Of Restitution", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Remedies in Contract, Tort & Restitution (LL4651D), (LLB4078/LMB4078/LDB4078/LSB4078). ♣ Subject not offered to Graduate Diploma in Singapore Law students.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent. (b) Property II (LL3601A) or an equivalent course on Equity & Trusts.", + "corequisite": "" + }, + { + "moduleCode": "LL6054", + "title": "Domestic and International Sale of Goods", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6054V", + "title": "Domestic and International Sale of Goods", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6055", + "title": "Securities Regulation", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4055V/LL5055V/LL6055V Securities Regulation;\nStudents doing or have done any of the following module(s) are precluded: (1) International Corporate Finance [8MC -LL4409/LL5409/LLD5409/LL6409; 4MC - LL4238/LL5238/LL6238; 5MC - LL4238V/LL5238V/LL6238V]; (2) Corporate Finance Law & Practice in Singapore - 4MC - LL4182/LL5182/LL6182; 5MC - LL4182V/LL5182V/LL6182V; (3) 8MC - Securities and Capital Markets Regulation - LL4412/LL5412/LL6412.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent. (b) Company Law (LC2008) or its equivalent in a developed common law jurisdiction (may be taken concurrently).", + "corequisite": "" + }, + { + "moduleCode": "LL6056A", + "title": "Tax Planning And Policy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6056AV", + "title": "Tax Planning And Policy", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent. (b) Company Law (LC2008) or its equivalent in a developed common law jurisdiction", + "corequisite": "" + }, + { + "moduleCode": "LL6056B", + "title": "Tax Planning And Policy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6056BV", + "title": "Tax Planning And Policy", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent. (b) Company Law (LC2008) or its equivalent in a developed common law jurisdiction", + "corequisite": "" + }, + { + "moduleCode": "LL6057V", + "title": "Theoretical Foundations Of Criminal Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6057.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent. Module is also open to non-law students from FASS Philosophy or Political Science dept with at least 80 MCs.", + "corequisite": "" + }, + { + "moduleCode": "LL6059V", + "title": "United Nations Law & Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6059.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6060", + "title": "World Trade Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6060B", + "title": "World Trade Law", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "LL4199A/LL4199B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6061", + "title": "Inquiry", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "For Non-Law Students: Open to students from University Scholars Programme who have read 80MCs or more." + }, + { + "moduleCode": "LL6061V", + "title": "Inquiry", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6061.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "For Non-Law Students: Open to students from University Scholars Programme who have read 80MCs or more." + }, + { + "moduleCode": "LL6062", + "title": "Legal Reasoning & Legal Theory", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For law students: NUS Compulsory Core Curriculum\n\nFor non‐law students: Open to Philosophy, Political Science, and USP students.", + "corequisite": "" + }, + { + "moduleCode": "LL6062V", + "title": "Legal Reasoning & Legal Theory", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6062.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For law students: NUS Compulsory Core Curriculum\n\nFor non‐law students: Open to Philosophy, Political Science, and USP students.", + "corequisite": "" + }, + { + "moduleCode": "LL6063", + "title": "Business & Finance For Lawyers", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6063V", + "title": "Business & Finance For Lawyers", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who are taking or have taken LL6063.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent. \n(b) Company Law or its equivalent in a common law jurisdiction (may be taken concurrently)", + "corequisite": "" + }, + { + "moduleCode": "LL6064", + "title": "Competition Law and Policy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Competition Law courses taught in European, American and Singapore law schools.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6064V", + "title": "Competition Law and Policy", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Competition Law courses taught in European, American and Singapore law schools.\nStudents who are taking or have taken LL6064.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6065", + "title": "Comparative Corporate Governance", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6067", + "title": "Comparative Criminal Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6069", + "title": "European Union Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6069V", + "title": "European Union Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6070", + "title": "Foundations of IP Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6070V", + "title": "Foundations Of Intellectual Property Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "The Law of Intellectual Property. Students who are taking or have taken LL6070.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6071", + "title": "International Patent Law, Policy and Practice", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "May vary from year to year depending on the modules offered by visitors to NUS Law in any given year.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent. \n(b) A foundation or basic knowledge in IP law would be useful.", + "corequisite": "" + }, + { + "moduleCode": "LL6071V", + "title": "International Patent Law, Policy and Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "May vary from year to year depending on the modules offered by visitors to NUS Law in any given year.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent. \n(b) A foundation or basic knowledge in IP law would be useful.", + "corequisite": "" + }, + { + "moduleCode": "LL6072B", + "title": "Topics in IP Law B: IP Valuation:Law & Prc", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6073", + "title": "International Criminal Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6073V", + "title": "International Criminal Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6073.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent..", + "corequisite": "" + }, + { + "moduleCode": "LL6074", + "title": "Mergers & Acquisitions", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6074V", + "title": "Mergers & Acquisitions", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Must not have taken a substantially similar course. Not open to students who have taken/taking LL4223/LL5223/LL6223 Cross Border Mergers. Not open to students who have taken Mergers and Acquisition (M&A).", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent..", + "corequisite": "" + }, + { + "moduleCode": "LL6075", + "title": "IP and Competition Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6075V", + "title": "IP and Competition Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6075.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent..", + "corequisite": "" + }, + { + "moduleCode": "LL6076", + "title": "IT Law I", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6076V", + "title": "IT Law I", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Students who are taking or have taken LL6076.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent..", + "corequisite": "" + }, + { + "moduleCode": "LL6077V", + "title": "IT Law II", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6077.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent..", + "corequisite": "" + }, + { + "moduleCode": "LL6078", + "title": "Law & Practice of Investment Treaty Arbitration", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6079", + "title": "State and Company in Legal-Historical Perspective", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6081", + "title": "Comparative Advocacy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6082", + "title": "Law & Social Movements", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6085", + "title": "International Trusts", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6088", + "title": "Chinese Contract Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6088V", + "title": "Chinese Contract Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Exchange students from law schools in China and postgraduate students who are graduates of law schools in China are precluded from taking this course for credit.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent Note: This course is delivered bi-lingually, yet predominantly in English. It is a plus but not a must that students have learned Chinese Legal Tradition and Legal Chinese (LL4009), or have\nobtained a B4 and above in CL or CL2 ('AO' Level) or B4 and above in Higher Chinese (HCL or CL1).", + "corequisite": "" + }, + { + "moduleCode": "LL6089", + "title": "Chinese Corporate and Securities Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6089V", + "title": "Chinese Corporate & Securities Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL4089.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6093", + "title": "Chinese Intellectual Property Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6093V", + "title": "Chinese Intellectual Property Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6094", + "title": "Law & Practice - The Law Clinic", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who have been in practice as qualified lawyers in the local or other jurisdictions are precluded.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.\nNUS Legal Skills Programme or equivalent, in particular, Legal Analysis, Research and Communication or its equivalent. Singapore Legal System or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6094AV", + "title": "Law & Practice - The Law Clinic", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have been in practice as qualified lawyers in the local or other jurisdictions are precluded.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.\nNUS Legal Skills Programme or equivalent, in particular, Legal Analysis, Research and Communication or its equivalent. Singapore Legal System or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6094BV", + "title": "Law & Practice - The Law Clinic", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have been in practice as qualified lawyers in the local or other jurisdictions are precluded.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.\nNUS Legal Skills Programme or equivalent, in particular, Legal Analysis, Research and Communication or its equivalent. Singapore Legal System or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6094CV", + "title": "Law & Practice - The Law Clinic", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have been in practice as qualified lawyers in the local or other jurisdictions are precluded.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.\nNUS Legal Skills Programme or equivalent, in particular, Legal Analysis, Research and Communication or its equivalent. Singapore Legal System or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6094V", + "title": "Law & Practice - The Law Clinic", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have been in practice as qualified lawyers in the local or other jurisdictions are precluded.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.\nNUS Legal Skills Programme or equivalent, in particular, Legal Analysis, Research and Communication or its equivalent. Singapore Legal System or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6096", + "title": "International Trademark Law and Policy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6096V", + "title": "International Trademark Law and Policy", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6096.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6097", + "title": "Islamic Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6097V", + "title": "Islamic Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6097.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6099", + "title": "Maritime Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6099V", + "title": "Maritime Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL6099.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6100", + "title": "Arbitration and Dispute Resolution in China", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4100V/LL5100V/LL6100V Arbitration and Dispute Resolution in China", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6100V", + "title": "Arbitration and Dispute Resolution in China", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL4100/LL5100/LL6100 Arbitration and Dispute Resolution in China", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6102", + "title": "Advanced Torts", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6102V", + "title": "Advanced Torts", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6104", + "title": "Jurisprudence", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For law students: NUS Compulsory Core Curriculum or its equivalent\n\nFor non-law students: 3rd & 4th Year students from Arts & Social Sciences Faculty", + "corequisite": "" + }, + { + "moduleCode": "LL6104V", + "title": "Jurisprudence", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6104.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6107V", + "title": "Partnership and Alternative Business Vehicles", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6109", + "title": "International Law & Asia", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6109V", + "title": "International Law & Asia", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Students who are taking or have taken LL6109.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6111V", + "title": "International Copyright Law and Policy", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6111.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6122", + "title": "The Contemporary Indian Legal System", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6122V", + "title": "The Contemporary Indian Legal System", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6122.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6123", + "title": "International Insolvency Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6125", + "title": "Law And Development In China", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6125V", + "title": "Law And Development In China", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6125.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6128", + "title": "Chinese Maritime Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6129", + "title": "Indian Business Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Currently, the course is precluded for Exchange students from law schools in India and postgraduate\nstudents who are graduates of law schools in India as well as students who have taken LL4104\nForeign Investment Law of India. It is proposed that these preclusions be removed and that the course will\nremain open for all interested students.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent (b) Company Law (LC2008) or its\nequivalent in a common law jurisdiction (may be taken concurrently)", + "corequisite": "" + }, + { + "moduleCode": "LL6129V", + "title": "Indian Business Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6129.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6131", + "title": "Law, Governance & Development in Asia", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6131V", + "title": "Law, Governance & Development in Asia", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6131.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6133", + "title": "Human Rights in Asia", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6133V", + "title": "Human Rights in Asia", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6133.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6134", + "title": "Crossing Borders: Law, Migration & Citizenship", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For law students: NUS Compulsory Core Curriculum or its equivalent\nFor non‐law students: 3rd & 4th Year students from Arts & Social Sciences Faculty", + "corequisite": "" + }, + { + "moduleCode": "LL6134V", + "title": "Crossing Borders: Law, Migration & Citizenship", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6134", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6135", + "title": "Patent Law & Practice: Perspectives from the U.S", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "(1) LL4071/LL5071/LL6071; LL4071V/LL5071V/LL6017V International Patent Law, Policy and Practice; \n(2) LL4405B/LL5405B/LL6405B/LC5405B Law of Intellectual Property (B); \n(3) LL4007/LL5007/LL6007; LL4007V/LL5007V/LL6007V Biotechnology Law;\n(4) LL4076/LL5076/LL6076; LL4076V/LL5076V/LL6076V IT Law I\n(5) LL4135V/LL5135V/LL6135V Patent Law and Practice: Perspectives from the U.S.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6138", + "title": "International & Comparative Law of Sale in Asia", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6138V", + "title": "Int'l&Comp Law of Sale in Asia", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6138", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6140", + "title": "Law of the Sea: Theory and Practice", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4140V/LL5140V/LL6140V/LLD5140V Law of the Sea: Theory and Practice;\nLL4140V/LL5140V/LL6140V/LLD5140V Ocean Law & Policy in Asia; LL4046V/LL5046V/LL6046V Ocean Law & Policy", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6140V", + "title": "Law of the Sea: Theory and Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4140/LL5140/LL6140/LLD5140 Law of the Sea: Theory and Practice;\nLL4140/LL5140/LL6140/LLD5140 Ocean Law & Policy in Asia; LL4046/LL5046/LL6046 Ocean Law & Policy", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6146", + "title": "Law & Society", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6146V", + "title": "Law & Society", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6146", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6148", + "title": "Secured Transactions Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Credit & Security (LL4019/LL5019/LL6019; LL4019V/LL5019V/LL6019V)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6150", + "title": "International Investment Law and Arbitration", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4150V/LL5150V/LL6150V International Investment Law and Arbitration", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6150V", + "title": "International Investment Law and Arbitration", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4150/LL5150/LL6150 International Investment Law and Arbitration", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6153", + "title": "International Police Enforcement Cooperation", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6155", + "title": "Topics in Law & Economics", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nTertiary-level module in Microeconomics.", + "corequisite": "" + }, + { + "moduleCode": "LL6158", + "title": "Climate Change Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4158V/LL5158V/LL6158V Climate Change Law;\nLL4221/LL5221/LL6221; LL4221V/LL5221V/LL6221V Climate Change Law & Policy.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6158V", + "title": "Climate Change Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4158/LL5158/LL6158 Climate Change Law;\nLL4221/LL5221/LL6221; LL4221V/LL5221V/LL6221V Climate Change Law & Policy.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6159", + "title": "The Economic Analysis of Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who have done Economic Analysis of Law [Module code: L56.3020] under the NYU@NUS Summer Session are precluded. LL4159V/LL5159V/LL6159V The Economic Analysis of Law.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6159V", + "title": "The Economic Analysis of Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who have done Economic Analysis of Law [Module code: L56.3020] under the NYU@NUS Summer Session are precluded. LL4159/LL5159/LL6159 The Economic Analysis of Law.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6161", + "title": "Intelligence Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6161V", + "title": "Intelligence Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6161", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6162", + "title": "Singapore Corporate Governance", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent. Previously completed a course in Company Law.", + "corequisite": "" + }, + { + "moduleCode": "LL6162V", + "title": "Singapore Corporate Governance", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent. Previously completed a course in Company Law.", + "corequisite": "" + }, + { + "moduleCode": "LL6164", + "title": "International Projects Law & Practice", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6164V", + "title": "International Projects Law & Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Students who are taking or have taken LL6164.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6170", + "title": "Comparative Conflict of Laws", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6171", + "title": "ASEAN Environmental Law, Policy and Governance", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6171V", + "title": "ASEAN Environmental Law, Policy & Governance", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6171.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6172", + "title": "Japanese Corporate Law & Governance", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6173", + "title": "Comparative Corporate Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6173V", + "title": "Comparative Corporate Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL6173.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6175", + "title": "Global Legal Orders: Interdisciplinary Perspectives", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6175V", + "title": "Global Legal Orders: Interdisciplinary Perspectives", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6175.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6177", + "title": "Entertainment Law: Pop Iconography & Celebrity", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6177V", + "title": "Entertainment Law: Pop Iconography & Celebrity", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Students who are taking or have taken LL6177.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6178", + "title": "Law and Practice of Investment Treaties", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Must not have taken a substantially similar course. \nNot open to students who have taken/taking (1) LL4032/LL5032/LL6032; LL4032V/LL5032V/LL6032V International Investment Law; (2) LL4078/LL5078/LL6078; LL4078V/LL5078V/LL6078V Law & Practice of Investment Treaty Arbitration.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6178V", + "title": "Law and Practice of Investment Treaties", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Must not have taken a substantially similar course. \nNot open to students who have taken/taking (1) LL4032/LL5032/LL6032; LL4032V/LL5032V/LL6032V International Investment Law; (2) LL4078/LL5078/LL6078; LL4078V/LL5078V/LL6078V Law & Practice of Investment Treaty Arbitration.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6179", + "title": "International Alternative Dispute Resolution", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6180", + "title": "Choice of Law & Jurisdiction in Int’l Commercial Contracts in Asia", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6185", + "title": "Government Regulations: Law, Policy & Practice", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6185V", + "title": "Government Regulations: Law, Policy & Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6187", + "title": "Philosophical Foundations of Contract Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6188", + "title": "Corporate Law and Finance", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6189", + "title": "Corporate Social Responsibility", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4189V/LL5189V/LL6189V Corporate Social Responsibility", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6189V", + "title": "Corporate Social Responsibility", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4189/LL5189/LL6189 Corporate Social Responsibility", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6190", + "title": "Freedom of Speech: Critical & Comparative Perspectives", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.\nSingapore Legal System (LC1005); Public law (LC2007).", + "corequisite": "" + }, + { + "moduleCode": "LL6190V", + "title": "Freedom of Speech: Critical & Comparative Perspectives", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6190.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6191", + "title": "Wealth Management Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent (b) Principles of Conflict of Laws [LL4049] is recommended.", + "corequisite": "" + }, + { + "moduleCode": "LL6192", + "title": "Private International Law of IP", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6193", + "title": "Negotiating & Drafting Int'l Commercial Transactions", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6193V", + "title": "An Introduction to Negotiating & Drafting Commercial Contracts", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6193.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6194", + "title": "Partnership and LLP Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6195V", + "title": "International Economic Law & Relations", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6195.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6197", + "title": "Comparative State and Religion in Southeast Asia", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For law students: NUS Compulsory Core Curriculum or its equivalent\n\nFor non‐law students: 3rd & 4th Year students from Arts & Social Sciences Faculty who has completed PS1101E Introduction to Politics", + "corequisite": "" + }, + { + "moduleCode": "LL6197V", + "title": "Comparative State and Religion in Southeast Asia", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6197.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent..", + "corequisite": "" + }, + { + "moduleCode": "LL6202", + "title": "ASEAN Economic Community Law and Policy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6202V", + "title": "ASEAN Economic Community Law and Policy", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL6202.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent..", + "corequisite": "" + }, + { + "moduleCode": "LL6203", + "title": "International Moots and Other Competitions", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6203A", + "title": "International Moots and Other Competitions", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6203B", + "title": "International Moots and Other Competitions", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6203C", + "title": "International Moots and Other Competitions", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6204", + "title": "Islamic Finance Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6205", + "title": "Maritime Conflict of Laws", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "LL4002 Admiralty Law and Practice (Co-requisite)" + }, + { + "moduleCode": "LL6205V", + "title": "Maritime Conflict of Laws", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL6205.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6208", + "title": "Advanced Criminal Legal Process", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6208V", + "title": "Advanced Criminal Legal Process", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL6208.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6209", + "title": "Legal Argument & Narrative", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6209V", + "title": "Legal Argument & Narrative", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LL6209.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6210", + "title": "Intellectual Property and International Trade", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6210V", + "title": "Intellectual Property And International Trade", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6210.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6211", + "title": "International Public Monetary and Payment Systems Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6213", + "title": "Transnational Law in Theory and Practice", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS compulsory core curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6214", + "title": "International and Comparative Oil and Gas Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6216", + "title": "Cyber Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6217", + "title": "Comparative & International Anti-Corruption Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6218V", + "title": "Asian Legal Studies Colloquium", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6218.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6219", + "title": "The Trial of Jesus in Western Legal Thought", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6220", + "title": "International Business Transactions", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6221", + "title": "Climate Change Law & Policy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6222", + "title": "The Law & Politics of International Courts & Tribunals", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6223", + "title": "Cross Border Mergers", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent. Must have read Tax Module or Securities Regulation", + "corequisite": "" + }, + { + "moduleCode": "LL6224", + "title": "Cybercrime & Information Security Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6225", + "title": "Topics in the Law and Economics of Competition Policy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6226", + "title": "Multimodal Transport Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6226V", + "title": "Multimodal Transport Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6226.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6227", + "title": "Philanthropy, Non-profit Organizations, and the Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6228", + "title": "The Use of Force in International Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6228V", + "title": "The Use of Force in International Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6228.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6229", + "title": "Corporate Governance in the US and UK", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4065/LL5065/LL6065 Comparative Corporate \nGovernance & LL4162/LL5162/LL6162 Corporate \nGovernance in Singapore", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6231", + "title": "Transition and the Rule of Law in Myanmar", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6233", + "title": "European Company Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6233V", + "title": "European Company Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6233.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6234", + "title": "Property Theory", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For law students: NUS Compulsory Core Curriculum For non-law students: Open to Philosophy, Political Science, and USP students.", + "corequisite": "" + }, + { + "moduleCode": "LL6234V", + "title": "Property Theory", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6234.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6235", + "title": "International Contract Law: Principles and Practice", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4235V/LL5235V/LL6235V International Contract Law: Principles and Practice", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6235V", + "title": "International Contract Law: Principles and Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4235/LL5235/LL6235 International Contract Law: Principles and Practice", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6237V", + "title": "Law, Institutions, and Business in Greater China", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6238", + "title": "International Corporate Finance", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students should not have done a substantially similar subject. Students doing or have done any of the following module(s) are precluded: \n1) Securities Regulation [LL4055/LL5055/LL6055]; \n(2) Corporate Law & Finance [LL4188/LL5188/LLD5188/LL6188]; \n(3) Corporate Finance Law & Practice in Singapore [LL4182/LL5182/LLD5182/LL6182]; \n(4) International Corporate Finance [LL4409/LL5409/LL6409]", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent; Law of Contract [LC1003 or equivalent]; \nCompany Law [LC2008/LC5008/LCD5008/LC6008]", + "corequisite": "" + }, + { + "moduleCode": "LL6238V", + "title": "International Corporate Finance", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL6238.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6239V", + "title": "Law & Politics in South Asia", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent For non law students from FASS (with at least 80MCs)", + "corequisite": "Open only to upper year students from FASS and allied departments (with at least 80 MCs)." + }, + { + "moduleCode": "LL6241", + "title": "Financial Stability and the Regulation of Banks", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6242V", + "title": "Financial Regulation and Central Banking", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have read the following module are precluded:\n(1) Financial Stability and the Regulation of Banks [LL4241/LL5241/LL6241;LL4241V/LL5241V/LL6241V]", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6243", + "title": "Law, Economics, Development, and Geography", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4243V/LL5243V/LL6243V Law, Economics, Development, and Geography", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent\n\nFor Non-Law students: \nOpen to students from FASS (Global Studies) who have completed 80 MCs with a minimum of 28 MCs in their major with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "LL6243V", + "title": "Law, Economics, Development, and Geography", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4243/LL5243/LL6243 Law, Economics, Development, and Geography", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent\n\nFor Non-Law students: \nOpen to students from FASS (Global Studies) who have completed 80 MCs with a minimum of 28 MCs in their major with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "LL6244V", + "title": "Criminal Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Students taking this module will be precluded from LL4208/LL5208/LL6208 & LL4208V/LL5208V/LL6208V ACLP, and vice versa.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Core Law Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6245V", + "title": "Regulatory Foundations of Public Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "LL4245/LL5245/LL6245 Regulatory Foundations of Public Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent. A foundational course on constitutional and administrative law (from either a common law or some other jurisdiction).\n\nFor Non Law students from FASS (Political Science - with at least 80 MCs).", + "corequisite": "" + }, + { + "moduleCode": "LL6246", + "title": "International Carriage of Passengers by Sea", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6247V", + "title": "International Economic Law & Globalisation", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6249", + "title": "Shareholders' Rights & Remedies", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6250", + "title": "Principles of Equity Financing", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6251", + "title": "International Humanitarian Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6251V", + "title": "International Humanitarian Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6252", + "title": "The EU and its Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6253V", + "title": "The Law of Treaties", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6254V", + "title": "Developing States in a Changing World Order", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4254/LL5254/LL6254 Developing States in a Changing World Order", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6255V", + "title": "Trade Remedy Law & Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6256", + "title": "Comparative Constitutional Government", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6257", + "title": "Law & Finance", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6258V", + "title": "Personal Property Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who have read: LL4047/LL5047/LL6047/ LL4047V/LL5047V/LL6047V Personal Property I – Tangible; LL4168/LL5168/LL6168/ LL4168V/LL5168V/LL6168V Personal Property Law II – Intangible & LL4411/LL5411/LL6411 Personal Property Law (8MC) are precluded.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6259AV", + "title": "Alternative Investments", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4314/LL5314/LL6314; LL4314V/LL5314V/LL6314 Private Equity and Venture Capital: Law and Practice", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6259V", + "title": "Alternative Investments", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4314/LL5314/LL6314; LL4314V/LL5314V/LL6314 Private Equity and Venture Capital: Law and Practice", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6260V", + "title": "Chinese Commercial Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students should not have had past practice experience in China and should not have taken a substantially similar course.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6261V", + "title": "Employment Law & Migrant Workers Clinic", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) Only Singapore Citizens for externships at the Ministry of\nManpower beginning in July; (b) NUS Compulsory Core Law\nCurriculum, NUS Legal Skills Programme or equivalent; (c)\nCrossing Borders: Law, Migration & Citizenship\n[LL4134/LL5134/LL6134; LL4134V/LL5134V/LL6134V] (may be\ntaken concurrently).", + "corequisite": "Crossing Borders: Law, Migration and Citizenship (LL4134; LL5134; LL6134 / LL4134V; LL5134; LL6134)" + }, + { + "moduleCode": "LL6263V", + "title": "Intellectual Property Rights and Competition Policy", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "IP and Competition Law (LL4075V/LL5075V/LL6075V;\nLL4075/LL5075/LL6075)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "Law of Intellectual Property A (LL4405A/LL5405A/LL6405A/LC5405A) Law of Intellectual Property B (LL4405B/LL5405B/LL6405B/LC5405B) Foundations of IP Law (LL4070V/LL5070V/LL6070V/LC5070V; LL4070/LL5070/LL6070/LC5070]" + }, + { + "moduleCode": "LL6267V", + "title": "Architecting Deals: A Framework of Private Orderings", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6268", + "title": "Remedies", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6269", + "title": "Privacy and Intellectual Property", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Privacy Law: Critical & Comparative Perspectives\nLL4169/LL5169/LL6169\nLL4169V / LL5169V / LL6169V", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6270", + "title": "International Human Rights of Women", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6271", + "title": "Law and Policy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6272", + "title": "International Financial System: Law and Practice", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Financial Stability & The Regulation of Banks\nLL4241; LL5241; LL6241 / LL4241V; LL5241V; LL6241V", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6273", + "title": "European & International Competition Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6274", + "title": "Comparative GST Law & Policy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6275", + "title": "International Institutional Law:", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6276", + "title": "Advanced Contract Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Philosophical Foundations of Contract Law\nLL4187/LL5187/LL6187\nLL4187V/LL5187V/LL6187V", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent Contract Law", + "corequisite": "" + }, + { + "moduleCode": "LL6277V", + "title": "Medical Law and Ethics", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who have read LL4400/LL5400/LL6400 BIOMEDICAL LAW & ETHICS are precluded.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6278V", + "title": "Trade and Investment Law in the Asia-Pacific", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "Public International Law: LL4050; LL5050; LL6050; LC5050 / LL4050V; LL5050V; LL6050V; LC5050V" + }, + { + "moduleCode": "LL6279V", + "title": "Access to Justice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6280V", + "title": "Crime and Companies", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6281V", + "title": "Civil Procedure", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4011; LL5011; LL6011 Civil Justice and Process\nLL4011V; LL5011V; LL6011V Civil Justice and Process", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6282V", + "title": "Resolution of Transnational Commercial Disputes", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6283V", + "title": "Artificial Intelligence, Information Science & Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent\nInformation Technology Law I [LL4076/LL5076/LL6076;\nLL4076V/LL5076V/LL6076V] or Information Technology Law II\n[LL4077/LL5077/LL6077; LL4077V/LL5077V/LL6077V]\n\nGCE “A” Level Mathematics (at least), with basic understanding of\nprobability theory and linear algebra \nProgramming skills in e.g. MatLab/Octave/Java/Python/R is a bonus.", + "corequisite": "" + }, + { + "moduleCode": "LL6284", + "title": "Confucianism and Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6285V", + "title": "International Dispute Settlement", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "LL4285/LL5285/LL6285/LC5285 International Dispute Settlement", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6286V", + "title": "Transnational Terrorism and International Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6287V", + "title": "ASEAN Law and Policy", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6288V", + "title": "Business, International Commerce and the European Union", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4288/LL5288/LL6288 Business, International Commerce and the European Union", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6289V", + "title": "The Evolution of International Arbitration", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4289/LL5289/LL6289 The Evolution of International Arbitration", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent. At least one prior course in international law or international arbitration, or taken concurrently", + "corequisite": "" + }, + { + "moduleCode": "LL6290V", + "title": "Legal Research: Method & Design", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4290/LL5290/LL6290 Legal Research: Method & Design", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6291", + "title": "Legal Pluralism and Global Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4291V/LL5291V/LL6291V Legal Pluralism and Global Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nOne prior course in either (i) law and the social sciences (anthropology, sociology, economics), or (ii) LL4050V/LL5050V/6050V/LC5050V; LL4050/LL5050/LL6050/LC5050 Public International Law or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6291V", + "title": "Legal Pluralism and Global Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4291/LL5291/LL6291 Legal Pluralism and Global Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nOne prior course in either (i) law and the social sciences (anthropology, sociology, economics), or (ii) LL4050V/LL5050V/6050V/LC5050V; LL4050/LL5050/LL6050/LC5050 Public International Law or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6292V", + "title": "State Responsibility: Theory and Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "LL4292/LL5292/LL6292 State Responsibility: Theory and Practice", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6295", + "title": "Conflict of Laws in Int’l Commercial Arbitration", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4295V/LL5295V/LL6295V Conflict of Laws in Int’l Commercial Arbitration", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6296", + "title": "Imitation, Innovation and Intellectual Property", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4296V/LL5296V/LL6296V Imitation, Innovation and Intellectual Property", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nStudents should ideally have taken a module in intellectual property or concurrently enrolled in one.", + "corequisite": "" + }, + { + "moduleCode": "LL6297", + "title": "Practice of Corporate Finance and the Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4297V/LL5297V/LL6297V Practice of Corporate Finance and the Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6298", + "title": "International Finance", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4298V/LL5298V/LL6298V International Finance", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6299", + "title": "Advanced Issues in the Law & Practice of Int’l Arbitration", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4299V/LL5299V/LL6299V Advanced Issues in the Law & Practice of Int’l Arbitration", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6300", + "title": "Copyright in the Internet Age", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "(1) LL4076/LL5076/LL6076; LL4076V/LL5076V/LL5076V IT Law I\n(2) LL4300V/LL5300V/LL6300V Copyright in the Internet Age", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6301", + "title": "Topics in Constitutional Law: Socio-Economic Rights", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4301V/LL5301V/LL6301V Topics in Constitutional Law: Socio-Economic Rights", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6302", + "title": "Int'l Regulation of Finance & Investment Markets", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4302V/LL5302V/LL6302V Int’l Regulation of Finance & Investment Markets", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6302V", + "title": "Int'l Regulation of Finance & Investment Markets", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4302/LL5302/LL6302 Int’l Regulation of Finance & Investment Markets", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6303", + "title": "Law and Literature", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4303V/LL5303V/LL6303V Law and Literature", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6304", + "title": "Global Comparative Constitutional Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "(1) LL4012/LL5012/LL6012; LL4012V/LL5012V/LL6012V Comparative Constitutional Law\n(2) LL4304V/LL5304V/LL6304V Global Comparative Constitutional Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6305", + "title": "IP and Human Rights", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4305V/LL5305V/LL6305V IP and Human Rights", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nStudents should ideally have taken a module in intellectual\nproperty or concurrently enrolled in one.", + "corequisite": "" + }, + { + "moduleCode": "LL6306", + "title": "Chinese Banking Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4306V/LL5306V/LL6306V Banking Law and Financial Regulation in China.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6306V", + "title": "Chinese Banking Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4306/LL5306/LL6306 Banking Law and Financial Regulation in China OR Chinese Banking Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6307", + "title": "EU Maritime Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4307V/LL5307V/LL6307V EU Maritime Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6308V", + "title": "Behavioural Economics, Law & Regulation", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4308/LL5308/LL6308 Behavioural Economics, Law & Regulation", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6309", + "title": "Strategies for Asian Disputes - A Comparative Analysis", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4309V/LL5309V/LL6309V Strategies for Asian Disputes; Strategies for Asian Disputes - A Comparative Analysis", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6309V", + "title": "Strategies for Asian Disputes - A Comparative Analysis", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4309/LL5309/LL6309 Strategies for Asian Disputes; Strategies for Asian Disputes - A Comparative Analysis", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6310V", + "title": "International Organisations in International Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4310/LL5310/LL6310 International Organisations in International Law;\nLL4275/LL5275/LL6275 International Institutional Law;\nLL4275V/LL5275V/LL6275V International Institutional Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6311", + "title": "Islamic Law and the Family", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4311V/LL5311V/LL6311V Islamic Law and the Family", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6312V", + "title": "The Law of Global Governance", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4312/LL5312/LL6312 The Law of Global Governance", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nBackground in Public International Law and/or Administrative\nLaw is an asset.", + "corequisite": "" + }, + { + "moduleCode": "LL6313V", + "title": "Mediation/Conciliation of Inter- & Investor-State Disputes", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4313/LL5313/LL6313 Mediation/Conciliation of Inter- & Investor-State Disputes", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent. One prior course in international arbitration or public international law, or taken concurrently.", + "corequisite": "" + }, + { + "moduleCode": "LL6314V", + "title": "Private Equity and Venture Capital: Law and Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "(1) LL4314/LL5314/LL6314 Private Equity and Venture Capital: Law and Practice; (2) LL4259V/LL5259V/LL6259V; LL4259/LL5259/LL6259 Alternative Investments", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6316V", + "title": "Restitution of Unjust Enrichment", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4316/LL5316/LL6316 Restitution of Unjust Enrichment; LL4051/LL5051/LL6051; LL4051V/LL5051V/LL6051V Principles of Restitution", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6317V", + "title": "International Arbitration in Asian Centres", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "LL4317/LL5317/LL6317 International Arbitration in Asian Centres", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "LL4029/LL5029/LC5262/LL6029; LL4029V/LL5029V/LC5262V/ LL6029V International Commercial Arbitration; OR LL4285/LL5285/LC5285/LL6285; LL4285V/LL5285V/LC5285V/ LL6285V International Dispute Settlement ; OR their equivalent at another University" + }, + { + "moduleCode": "LL6318V", + "title": "Public Health Law and Regulation", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4318/LL5318/LL6318 Public Health Law and Regulation; \nA similar course in another faculty or law school anywhere else.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6319V", + "title": "Current Problems in International Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4319/LL5319/LL6319 Current Problems in International Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "Public International Law is recommended." + }, + { + "moduleCode": "LL6320", + "title": "International Space Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "LL4320V/LL5320V/LL6320V International Space Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6320V", + "title": "International Space Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4320/LL5320/LL6320 International Space Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6321", + "title": "Deals: The Economic Structure of Business Transactions", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4321V/LL5321V/LL6312V Deals: The Economic Structure of Business Transactions \nLL4267/LL5267/LL6267; LL4267V/LL5267V/LL6267V Architecting Deals: A Framework of Private Orderings", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6322", + "title": "Trade Finance Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4322V/LL5322V/LL6322V Trade Finance Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent. Students should have covered the core private law subjects of Contract, Tort and Trusts.", + "corequisite": "" + }, + { + "moduleCode": "LL6322V", + "title": "Trade Finance Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6323", + "title": "Law of Agency", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4323V/LL5323V/LL6323V Law of Agency", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6324", + "title": "Comparative Trade Mark Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4324V/LL5324V/LL6324V Comparative Trade Mark Law; \nLL4096/LL5096/LL6096; LL4096V/LL5096V/LL6096V International Trademark Law and Policy", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6325", + "title": "The Int'l Litigation & Procedure of State Disputes", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4325V/LL5325V/LL6325V - The Int’l Litigation & Procedure of State Disputes \n\nLL4285V/LL5285V/LC5285V/LL6285V; \nLL4285/LL5285/LC5285/LL6285 - International Dispute Settlement", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6326", + "title": "Administrative Justice: Perspectives from the U.S.", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4326V/LL5326V/LL6326V Administrative Justice: Perspectives from the U.S", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6327V", + "title": "Mergers and Acquisitions: A Practitioner’s Perspective", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "(1) LL4327/LL5327/LL6327 Mergers and Acquisitions: A Practitioner’s Perspective; \n(2) LL4074/LL5074/LL6074; LL4074V/LL5074V/LL6074V Mergers & Acquisitions (M&A); \n(3) LL4223/LL5223/LL6223; LL4233V/LL5223V/LL6223V Cross Border Mergers", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent. \nContracts, Property, Equity & Trusts and Company Law. \nAn ability to engage in discussion in English.", + "corequisite": "" + }, + { + "moduleCode": "LL6328", + "title": "Sports Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4328V/LL5328V/LL6328V Sports Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6329", + "title": "Cross-Border Litigation", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4329V/LL5329V/LL6329V Cross-Border Litigation;\nLL4030V/LL5030V/LL6030V; LL4030/LL5030/LL6030 International Commercial Litigation; \nLL4049V/LL5049V/LL6049V; LL4049/LL5049/LL6049 Principles of Conflict of Laws", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6330", + "title": "Advanced Trusts Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4330V/LL5330V/LL6330V Advanced Trusts Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6331", + "title": "The Rule of Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4331V/LL5331V/LL6331V The Rule of Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6332", + "title": "Fair Use in Theory and Practice", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4332V/LL5332V/LL6332V Fair Use in Theory and Practice", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6333", + "title": "International Criminal Law Clinic", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "If there is any other substantive international criminal law course offered by colleagues as there will be substantive overlap.\n\nLL4333V/LL5333V/LL6333V International Criminal Law Clinic", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nNo auditing", + "corequisite": "" + }, + { + "moduleCode": "LL6333V", + "title": "International Criminal Law Clinic", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "If there is any other substantive international criminal law course offered by colleagues as there will be substantive overlap.\n\nLL4333/LL5333/LL6333 International Criminal Law Clinic", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nNo auditing", + "corequisite": "" + }, + { + "moduleCode": "LL6334", + "title": "Law and Society in Southeast Asia", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4334V/LL5334V/LL6334V Law and Society in Southeast Asia (5MCs)\nSC4883 Selected Topics in Law and Justice", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6335V", + "title": "Multinational Enterprises and International Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4335/LL5335/LL6335 Multinational Enterprises and International Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6338V", + "title": "Advanced Practicum in International Arbitration", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4338/LL5338/LL6338 Advanced Practicum in International Arbitration", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent. \nLL4029/LL5029/LC5262/LL6029; \nLL4029V/LL5029V/LC5262V/LL6029V International \nCommercial Arbitration; OR \nLL4285/LL5285/LC5285/LL6285; \nLL4285V/LL5285V/LC5285V/LL6285V International \nDispute Settlement; OR their equivalent at another university", + "corequisite": "" + }, + { + "moduleCode": "LL6339", + "title": "Comparative Evidence in International Arbitration", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "LL4339V/LL5339V/LL6339V Comparative Evidence in International Arbitration", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6340", + "title": "International Refugee Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4340V/LL5340V/LL6340V International Refugee Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLL4050/LL5050/LL6050/LC5050; L4050V / LL5050V / LL6050V / LC5050V Public International Law (or as a co-requisite)", + "corequisite": "LL4050/LL5050/LL6050/LC5050; LL4050V / LL5050V / LL6050V / LC5050V Public International Law (or as a pre-requisite)" + }, + { + "moduleCode": "LL6340V", + "title": "International Refugee Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4340/LL5340/LL6340 International Refugee Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLL4050/LL5050/LL6050/LC5050; L4050V / LL5050V / LL6050V / LC5050V Public International Law (or as a co-requisite)", + "corequisite": "LL4050/LL5050/LL6050/LC5050; LL4050V / LL5050V / LL6050V / LC5050V Public International Law (or as a pre-requisite)" + }, + { + "moduleCode": "LL6341", + "title": "The Law and Politics of Forced Migration", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4341V/LL5341V/LL6341V The Law and Politics of Forced Migration", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLL4050/LL5050/LL6050/LC5050; L4050V / LL5050V / LL6050V / LC5050V Public International Law (or as a co-requisite)", + "corequisite": "LL4050/LL5050/LL6050/LC5050; LL4050V / LL5050V / LL6050V / LC5050V Public International Law (or as a pre-requisite)" + }, + { + "moduleCode": "LL6341V", + "title": "The Law and Politics of Forced Migration", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4341/LL5341/LL6341 The Law and Politics of Forced Migration", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLL4050/LL5050/LL6050/LC5050; L4050V / LL5050V / LL6050V / LC5050V Public International Law (or as a co-requisite)", + "corequisite": "LL4050/LL5050/LL6050/LC5050; LL4050V / LL5050V / LL6050V / LC5050V Public International Law (or as a pre-requisite)" + }, + { + "moduleCode": "LL6342", + "title": "Taxation of Cross-Border Commercial Transactions", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4035/LL5035/LL6035/LC5035/LC5035A/LC5035B/; LL4035V/LL5035V/LL6035V Taxation Issues in Cross-Border Transactions;\n\nLL4342V/LL5342V/LL6342V Taxation of Cross-Border Commercial Transactions", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6342V", + "title": "Taxation of Cross-Border Commercial Transactions", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4035/LL5035/LL6035/LC5035/LC5035A/LC5035B/; LL4035V/LL5035V/LL6035V\nTaxation Issues in Cross-Border Transactions;\n\nLL4342/LL5342/LL6342 Taxation of Cross-Border Commercial Transactions", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6343", + "title": "International Regulation of the Global Commons", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4343V/LL5343V/LL6343V International Regulation of the Global Commons", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6343V", + "title": "International Regulation of the Global Commons", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4343/LL5343/LL6343 International Regulation of the Global Commons", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6344", + "title": "Public and Private International Copyright Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4344V/LL5344V/LL6344V Public and Private International Copyright Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6344V", + "title": "Public and Private International Copyright Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4344/LL5344/LL6344 Public and Private International Copyright Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6345", + "title": "The Fulfilled Life and the Life of the Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4345V/LL5345V/LL6345V The Fulfilled Life and the Life\nof the Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6345V", + "title": "The Fulfilled Life and the Life of the Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4345/LL5345/LL6345 The Fulfilled Life and the Life of\nthe Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6346", + "title": "Interim Measures in International Arbitration", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.\nInternational Commercial Arbitration\nor\nInternational Dispute Settlement", + "corequisite": "International Commercial Arbitration or International Dispute Settlement" + }, + { + "moduleCode": "LL6346V", + "title": "Interim Measures in International Arbitration", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.\nInternational Commercial Arbitration\nor\nInternational Dispute Settlement", + "corequisite": "International Commercial Arbitration or International Dispute Settlement" + }, + { + "moduleCode": "LL6347", + "title": "Art & Cultural Heritage Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4347V/LL5347V/LL6347V Art & Cultural Heritage Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6347V", + "title": "Art & Cultural Heritage Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4347/LL5347/LL6347 Art & Cultural Heritage Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6348", + "title": "Monetary Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4348V/LL5348V/LL6348V Monetary Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLaw of Contract; Principles of Property Law; Equity and Trusts", + "corequisite": "" + }, + { + "moduleCode": "LL6348V", + "title": "Monetary Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4348/LL5348/LL6348 Monetary Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLaw of Contract; Principles of Property Law; Equity and Trusts", + "corequisite": "" + }, + { + "moduleCode": "LL6349", + "title": "Energy Arbitration", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4349V/LL5349V/LL6349V Energy Arbitration", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6349V", + "title": "Energy Arbitration", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4349/LL5349/LL6349 Energy Arbitration", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6350", + "title": "Privacy & Data Protection Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4350V/LL5350V/LL6350V Privacy & Data Protection Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6350V", + "title": "Privacy & Data Protection Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4350/LL5350/LL6350 Privacy & Data Protection Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6351", + "title": "Comparative Corporate Law in East Asia", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4351V/LL5351V/LL6351V Comparative Corporate Law in East Asia", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLC2008 Company Law or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6351V", + "title": "Comparative Corporate Law in East Asia", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4351/LL5351/LL6351 Comparative Corporate Law in East Asia", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLC2008 Company Law or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6352", + "title": "China and International Economic Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4352V/ LL5352V/LL6352V China and International Economic Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6352V", + "title": "China and International Economic Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4352V/ LL5352V/LL6352V China and International Economic Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6353", + "title": "Character Evidence in the Common Law World", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4353V/LL5353V/LL6353V Character Evidence in the Common Law World", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLC3001A Evidence (A) / LC3001B Evidence (B) or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6353V", + "title": "Character Evidence in the Common Law World", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4353V/LL5353V/LL6353V Character Evidence in the Common Law World", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLC3001A Evidence (A) / LC3001B Evidence (B) or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LL6354", + "title": "Comparative Human Rights Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4354V/LL5354V/LL6353V Comparative Human Rights Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nConstitutional Law", + "corequisite": "" + }, + { + "moduleCode": "LL6354V", + "title": "Comparative Human Rights Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4354V/LL5354V/LL6353V Comparative Human Rights Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nConstitutional Law", + "corequisite": "" + }, + { + "moduleCode": "LL6355", + "title": "International Law and Development", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4355V/LL5355V/LL6355V International Law and Development", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6355V", + "title": "International Law and Development", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4355/LL5355/LL6355 International Law and Development", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6356", + "title": "International Economic Law Clinic", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4356V / LL5356V / LL6356V International Investment Law Clinic", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nInternational Investment Law course OR International Trade Law course OR taken concurrently OR relevant experience in lieu of.", + "corequisite": "" + }, + { + "moduleCode": "LL6356V", + "title": "International Economic Law Clinic", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4356 / LL5356 / LL6356 International Investment Law Clinic", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nInternational Investment Law course OR International Trade Law course OR taken concurrently OR relevant experience in lieu of.", + "corequisite": "" + }, + { + "moduleCode": "LL6357", + "title": "Regulation & Political Economy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4357V/LL5357V/LL6357V - Regulation & Political Economy", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6357V", + "title": "Regulation & Political Economy", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4357/LL5357/LL6357 Regulation & Political Economy", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6358Z", + "title": "ICC Arbitration", + "moduleCredit": 2, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "NUS Compulsory Core Law Curriculum or equivalent" + }, + { + "moduleCode": "LL6359Z", + "title": "SIAC and Institutional Arbitration", + "moduleCredit": 2, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nAt least one prior course in international arbitration.", + "corequisite": "" + }, + { + "moduleCode": "LL6360Z", + "title": "Current Challenges to Investment Arbitration", + "moduleCredit": 2, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6361Z", + "title": "Complex Arbitrations: Multiparty – Multicontract", + "moduleCredit": 2, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6362V", + "title": "Advanced Criminal Litigation - Forensics on Trial", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "FSC4206 Advanced Criminal Litigation - Forensics on Trial", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For LAW students:\nNUS Compulsory Core Law Curriculum or equivalent.\nLC1001% Criminal Law\n\nFor FoS students:\nLSM1306 Forensic Science", + "corequisite": "" + }, + { + "moduleCode": "LL6363", + "title": "Sentencing Law and Practice", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4363V/LL5363V/LL6363V", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6363V", + "title": "Sentencing Law and Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4363/LL5363/LL6363", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6364", + "title": "Principles of Civil Law: Law of Obligations & Property", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4364V/LL5364V/LL6364V Principles of Civil Law: Law of Obligations & Property\n\nStudents from civil law jurisdictions or students who have a previous law degree from a civil law jurisdiction", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6364V", + "title": "Principles of Civil Law: Law of Obligations & Property", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "LL4364/LL5364/LL6364 Principles of Civil Law: Law of Obligations & Property\n\nStudents from civil law jurisdictions or students who have a previous law degree from a civil law jurisdiction", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6367", + "title": "Singapore at the UN - A Clinical Externship", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4367V/LL5367V/LL6367V", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\n\nSingapore Law in Context or equivalent course focusing\non the Singapore legal system in the political and social\ncontext of Singapore.\n\nPublic International Law or equivalent courses, including\nUnited Nations Law.\n\nAs the class size is limited, students must undergo a\nselection process which may include an interview.", + "corequisite": "" + }, + { + "moduleCode": "LL6367V", + "title": "Singapore at the UN - A Clinical Externship", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4367/LL5367/LL6367", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\n\nSingapore Law in Context or equivalent course focusing\non the Singapore legal system in the political and social\ncontext of Singapore.\n\nPublic International Law or equivalent courses, including\nUnited Nations Law.\n\nAs the class size is limited, students must undergo a\nselection process which may include an interview.", + "corequisite": "" + }, + { + "moduleCode": "LL6368", + "title": "Comparative Constitutionalism", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4368V/LL5368V/LL6368V", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6368V", + "title": "Comparative Constitutionalism", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4368/LL5368/LL6368", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6369", + "title": "Constitutionalism in Asia", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4369V/LL5369V/LL6369V Constitutionalism in Asia", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6369V", + "title": "Constitutionalism in Asia", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4369/LL5369/LL6369 Constitutionalism in Asia", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6370", + "title": "The Law of Cybersecurity, Privacy and Data Compliance", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "IFS4101 (for dual-track LLB and BSc (Comp. - IS) students; LL4370V/LL5370V/LL6370V The Law of Cybersecurity, Privacy and Data Compliance", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6370V", + "title": "The Law of Cybersecurity, Privacy and Data Compliance", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "IFS4101 (for dual-track LLB and BSc (Comp. - IS) students; LL4370/LL5370/LL6370 The Law of Cybersecurity, Privacy and Data Compliance", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6371", + "title": "Charity Law Today", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4371V/LL5371V/LL63871V Charity Law Today", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6371V", + "title": "Charity Law Today", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4371/LL5371/LL6371 Charity Law Today", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6372", + "title": "International Intellectual Property Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4372V/LL5372V/LL6372V", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "[LL4070/LL5070/LL6070; LL4070V/LL5070V/LL6070V] [LL4405A/LL5405A/LL6405A/LC5405A]" + }, + { + "moduleCode": "LL6372V", + "title": "International Intellectual Property Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4372/LL5372/LL6372", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent", + "corequisite": "[LL4070/LL5070/LL6070; LL4070V/LL5070V/LL6070V] [LL4405A/LL5405A/LL6405A/LC5405A]" + }, + { + "moduleCode": "LL6373", + "title": "Advanced Copyright", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4373V/LL5373V/LL6373V Advanced Copyright", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6373V", + "title": "Advanced Copyright", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4373/LL5373/LL6373 Advanced Copyright", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6374", + "title": "Water Rights & Resources: Issues in Law & Development", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4374V/LL5374V/LL6374V Water Rights & Resources: Issues in Law & Development", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6374V", + "title": "Water Rights & Resources: Issues in Law & Development", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4374/LL5374/LL6374 Water Rights & Resources: Issues in Law & Development", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6375", + "title": "Traditional Chinese Legal Thought", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4375V/LL5375V/LL6375V", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6375V", + "title": "Traditional Chinese Legal Thought", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4375/LL5375/LL6375", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6376", + "title": "Regulation & Private Law in Banking & Financial Service", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4376V / LL5376V / LL6376V Regulation & Private Law in Banking & Financial Service", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6376V", + "title": "Regulation & Private Law in Banking & Financial Service", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4376 / LL5376 / LL6376 Regulation & Private Law in Banking & Financial Service", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6377", + "title": "Law in Action: Legal Policymaking Externship", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4377V/LL5377V/LL6377V Law in Action: Legal Policymaking Externship", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nSingaporean Citizens / PR\nAs the class size is limited, students must undergo a selection process which may include an interview.\nAll participants are subject to security screening and must obtain the requisite security clearance before they can be admitted to the course.", + "corequisite": "" + }, + { + "moduleCode": "LL6377V", + "title": "Law in Action: Legal Policymaking Externship", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4377/LL5377/LL6377 Law in Action: Legal Policymaking Externship", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nSingaporean Citizens / PR\nAs the class size is limited, students must undergo a selection process which may include an interview.\nAll participants are subject to security screening and must obtain the requisite security clearance before they can be admitted to the course.", + "corequisite": "" + }, + { + "moduleCode": "LL6379", + "title": "Future of Int'l Commercial Arbitration in APAC Region", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4379V/LL5379V/LL6379V Future of Int’l Commercial\nArbitration in APAC Region", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nInternational Commercial Arbitration\nLL4029V,LL5029V,LL6029V,LC5262V;\nLL4029AV,LL5029AV,LL6029AV,LC5262AV", + "corequisite": "International Commercial Arbitration LL4029V,LL5029V,LL6029V,LC5262V; LL4029AV,LL5029AV,LL6029AV,LC5262AV" + }, + { + "moduleCode": "LL6379V", + "title": "Future of Int'l Commercial Arbitration in APAC Region", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4379/LL5379/LL6379 Future of Int’l Commercial Arbitration in APAC Region", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nInternational Commercial Arbitration\nLL4029V,LL5029V,LL6029V,LC5262V;\nLL4029AV,LL5029AV,LL6029AV,LC5262AV", + "corequisite": "International Commercial Arbitration LL4029V,LL5029V,LL6029V,LC5262V; LL4029AV,LL5029AV,LL6029AV,LC5262AV" + }, + { + "moduleCode": "LL6381", + "title": "Heritage Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4347/LL5347/LL6347;LL4347V/LL5347V/LL6347V Art & Cultural Heritage Law; LL4381V/LL5381V/LL6381V Heritage Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6381V", + "title": "Heritage Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4347/LL5347/LL6347;LL4347V/LL5347V/LL6347V Art & Cultural Heritage Law; LL4381/LL5381/LL6381 Heritage Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6382", + "title": "Core Aspects of Private International Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Not open to anyone who has done:\nLL4030V/LL5030V/LL6030V; LL4030/LL5030/LL6030 International Commercial Litigation;\nLL4049V/LL5049V/LL6049V; LL4049/LL5049/LL6049 Principles of Conflict of Laws;\nLL4205V/LL5205V/LL6205V/LLD5205V;\nLL4205/LL5205/LL6205/LLD5205V Maritime Conflict of Laws at NUS Law, or a substantially similar course elsewhere", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6382V", + "title": "Core Aspects of Private International Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Not open to anyone who has done:\nLL4030V/LL5030V/LL6030V; LL4030/LL5030/LL6030 International Commercial Litigation;\nLL4049V/LL5049V/LL6049V; LL4049/LL5049/LL6049 Principles of Conflict of Laws;\nLL4205V/LL5205V/LL6205V;LLD5205V;\nLL4205/LL5205/LL6205/LL5205V Maritime Conflict of Laws at NUS Law, or a substantially similar course elsewhere", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6383Z", + "title": "International Arbitration & the New York Convention", + "moduleCredit": 2, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6384", + "title": "Harms and Wrongs", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "LL4384V/LL5384V/LL6384V Harms and Wrongs", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6384V", + "title": "Harms and Wrongs", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4384/LL5384/LL6384 Harms and Wrongs", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6385", + "title": "Taxation Law & the Global Digital Economy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4385V/LL5385V/LL6385V Taxation Law & the Global Digital Economy", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6385V", + "title": "Taxation Law & the Global Digital Economy", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4385/LL5385/LL6385 Taxation Law & the Global Digital Economy", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6387", + "title": "Regulation of Digital Platform", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4387V/LL5387V/LL6387V Regulation of Digital Platforms", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6387V", + "title": "Regulation of Digital Platforms", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4387/LL5387/LL6387 Regulation of Digital Platforms", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6388", + "title": "Comparative Civil Law: Thai Contract Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4388V/LL5388V/LL6388V Comparative Civil Law: Thai Contract Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6388V", + "title": "Comparative Civil Law: Thai Contract Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4388/LL5388/LL6388 Comparative Civil Law: Thai Contract Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6389", + "title": "Asset-Based Financing: Quasi-Security Devices", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4389V/LL5389V/LL6389V Asset-Based Financing: Quasi-Security Devices", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6389V", + "title": "Asset-Based Financing: Quasi-Security Devices", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4389/LL5389/LL6389 Asset-Based Financing: Quasi-Security Devices", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6393", + "title": "Liability of Corporate Groups and Networks", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLC1004 Law of Torts", + "corequisite": "LC2008 Company Law" + }, + { + "moduleCode": "LL6393V", + "title": "Liability of Corporate Groups and Networks", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLC1004 Law of Torts", + "corequisite": "LC2008 Company Law" + }, + { + "moduleCode": "LL6395", + "title": "The Law & Practice of Modern Trust Structures", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4395V/LL5395V/LL6395V The Law & Practice of Modern Trust Structures", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLC2006 Equity & Trusts", + "corequisite": "" + }, + { + "moduleCode": "LL6395V", + "title": "The Law & Practice of Modern Trust Structures", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4395/LL5395/LL6395 The Law & Practice of Modern Trust Structures", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\nLC2006 Equity & Trusts", + "corequisite": "" + }, + { + "moduleCode": "LL6396", + "title": "University Research Opportunities Programme", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6397", + "title": "University Research Opportunities Progra", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6398", + "title": "University Research Opportunities Programme", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6399", + "title": "University Research Opportunities Programme", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6400", + "title": "Biomedical Law & Ethics", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6402", + "title": "Corporate Insolvency Law", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6403", + "title": "Family Law", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6405A", + "title": "Law of Intellectual Property (a)", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6405B", + "title": "Law of Intellectual Property (B)", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6407", + "title": "Law Of Insurance", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6409", + "title": "International Corporate Finance", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6411", + "title": "Personal Property Law", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LL6412", + "title": "Securities and Capital Markets Regulation", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students doing or have done any of the following module(s) are precluded: (1) International Corporate Finance [8MC - LL4409/LL5409/LLD5409/LL6409; 4MC - LL4238/LL5238/LL6238; 5MC – LL4238V/LL5238V/LL6238V]; (2) Corporate Finance Law & Practice in Singapore [4MC - LL4182/LL5182/LL6182; 5MC – LL4182V/LL5182V/LL6182V]; (3) Securities Regulation [4MC - L4055/LL5055/LL6055; 5MC – LL4055V/LL5055V/LL6055V]; (4) Securities Regulation [Module code: L53.3040 OR LW.10180] under the NYU@NUS Summer Session.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent. (b) Company Law [LC2008/LLB2008] or its equivalent in a developed common law jurisdiction (may be taken concurrently).", + "corequisite": "" + }, + { + "moduleCode": "LL6413", + "title": "Civil Justice and Procedure", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who have not studied the core subjects in a Common Law curriculum. \n\nNot open to students who are, or have been, legal practitioners or who have worked in any legal field. \n\nLL4011; LL5011; LL6011 / LL4011V; LL5011V; LL6011V Civil Justice & Process \n\nLL4281; LL5281; LL6281 / LL4281V; LL5281V; LL6281V Civil Procedure", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.\n(It is impossible to study common law adversarial procedure without a background in these subjects.)", + "corequisite": "" + }, + { + "moduleCode": "LL6433", + "title": "Global Data Privacy Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4433V/LL5433V/LL6433V Global Data Privacy Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6433V", + "title": "Global Data Privacy Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "LL4433/LL5433/LL6433 Global Data Privacy Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6434", + "title": "International Commodity Trading Law Clinic", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4434V/LL5434V/LL6434V International Commodity Trading Law Clinic", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6434V", + "title": "International Commodity Trading Law Clinic", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4434/LL5434/LL6434 International Commodity Trading Law Clinic", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6435", + "title": "Foundations of Environmental Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4435V/LL5435V/LL6435V Foundations of Environmental Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LL6435V", + "title": "Foundations of Environmental Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4435/LL5435/LL6435 Foundations of Environmental Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LLD5002", + "title": "Admiralty Law & Practice", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LLD5002V", + "title": "Admiralty Law & Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "Students who are taking or have taken LLD5002.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LLD5004", + "title": "Aviation Law & Policy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LLD5004V", + "title": "Aviation Law & Policy", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LLD5004.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LLD5006", + "title": "Banking Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LLD5006V", + "title": "Banking Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LLD5006.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LLD5007", + "title": "Biotechnology Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LLD5007V", + "title": "Biotechnology Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LLD5007.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LLD5019", + "title": "Credit & Security", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LLD5019V", + "title": "Credit & Security", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LLD5019", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LLD5024", + "title": "Introduction to Indonesian Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LLD5024V", + "title": "Introduction To Indonesian Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LLD5024", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LLD5026V", + "title": "Infocoms Law: Competition & Convergence", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LLD5026", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LLD5029", + "title": "International Commercial Arbitration", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LLD5029V", + "title": "International Commercial Arbitration", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LLD5029", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LLD5030", + "title": "International Commercial Litigation", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LLD5030V", + "title": "International Commercial Litigation", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LLD5030", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LLD5031", + "title": "International Environmental Law & Policy", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LLD5031V", + "title": "International Environmental Law & Policy", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LLD5031", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LLD5032", + "title": "International Investment Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LLD5032V", + "title": "International Investment Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LLD5032", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LLD5033", + "title": "International Legal Process", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LLD5034", + "title": "International Regulation of Shipping", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LLD5034V", + "title": "International Regulation of Shipping", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LLD5034.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Core Law Curriculum or its equivalent. Students who have completed a course in Law of the Sea or Ocean Law & Policy may have a slight advantage", + "corequisite": "" + }, + { + "moduleCode": "LLD5043", + "title": "Law of Marine Insurance", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LLD5043V", + "title": "Law Of Marine Insurance", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LLD5043.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LLD5045", + "title": "Negotiation", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LLD5049", + "title": "Principles of Conflict of Laws", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LLD5049V", + "title": "Principles Of Conflict Of Laws", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LLD4049.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LLD5050", + "title": "Public International Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LLD5051", + "title": "Principles of Restitution", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LLD5054", + "title": "Domestic and International Sale of Goods", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LLD5054V", + "title": "Domestic and International Sale of Goods", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LLD5055", + "title": "Securities Regulation", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LLD5060", + "title": "World Trade Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LLD5063", + "title": "Business & Finance For Lawyers", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LLD5063V", + "title": "Business & Finance For Lawyers", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LLD5063.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) NUS Compulsory Core Law Curriculum or equivalent. \n(b) Company Law or its equivalent in a common law jurisdiction (may be taken concurrently)", + "corequisite": "" + }, + { + "moduleCode": "LLD5065", + "title": "Comparative Corporate Governance", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LLD5076", + "title": "It Law I", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LLD5076V", + "title": "IT Law I", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LLD5076.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent..", + "corequisite": "" + }, + { + "moduleCode": "LLD5077V", + "title": "IT Law II", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LL5077.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent..", + "corequisite": "" + }, + { + "moduleCode": "LLD5085", + "title": "International Trusts", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LLD5099", + "title": "Maritime Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LLD5099V", + "title": "Maritime Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LLD5099.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LLD5102", + "title": "Advanced Torts", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LLD5128", + "title": "Chinese Maritime Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LLD5138", + "title": "Int'l & Comp Law of Sale in Asia", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LLD5138V", + "title": "Int'l&Comp Law of Sale in Asia", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LLD5138", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LLD5140", + "title": "Law of the Sea: Theory and Practice", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4140V/LL5140V/LL6140V/LLD5140V Law of the Sea;\nLL4140V/LL5140V/LL6140V/LLD5140V Ocean Law & Policy in Asia; LL4046V/LL5046V/LL6046V Ocean Law & Policy", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LLD5140V", + "title": "Law of the Sea: Theory and Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "LL4140/LL5140/LL6140/LLD5140 Law of the Sea;\nLL4140/LL5140/LL6140/LLD5140 Ocean Law & Policy in Asia; LL4046/LL5046/LL6046 Ocean Law & Policy", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LLD5164", + "title": "International Projects Law and Practice", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LLD5164V", + "title": "International Projects Law & Practice", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LLD5164.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LLD5180", + "title": "Choice of Law & Jurisdiction in Int’l Commercial Contracts in Asia", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LLD5205", + "title": "Maritime Conflict of Laws", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "LL4002 Admiralty Law and Practice (Co-requisite)" + }, + { + "moduleCode": "LLD5205V", + "title": "Maritime Conflict of Laws", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "Students who are taking or have taken LLD5205.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LLD5214", + "title": "International and Comparative Oil and Gas Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LLD5226", + "title": "Multimodal Transport Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LLD5226V", + "title": "Multimodal Transport Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "Students who are taking or have taken LLD5226.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LLD5246", + "title": "International Carriage of Passengers by Sea", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Curriculum or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "LLD5307", + "title": "EU Maritime Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4307V/LL5307V/LL6307V/LLD5307V EU Maritime Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LLD5322", + "title": "Trade Finance Law", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LLD5322V Trade Finance Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent. Students should have covered the core private law subjects of Contract, Tort and Trusts.", + "corequisite": "" + }, + { + "moduleCode": "LLD5322V", + "title": "Trade Finance Law", + "moduleCredit": 5, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1 + ], + "preclusion": "LLD5322 Trade Finance Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent. Students should have covered the core private law subjects of Contract, Tort and Trusts.", + "corequisite": "" + }, + { + "moduleCode": "LLD5396", + "title": "University Research Opportunities Programme", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LLD5397", + "title": "University Research Opportunities Programme", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LLD5400", + "title": "Biomedical Law & Ethics", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LLD5402", + "title": "Corporate Insolvency", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LLD5403", + "title": "Family Law", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LLD5407", + "title": "Law of Insurance", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LLD5409", + "title": "International Corporate Finance", + "moduleCredit": 8, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LLLL5368", + "title": "Comparative Constitutionalism", + "moduleCredit": 4, + "department": "FoL Dean's Office", + "faculty": "Law", + "semester": [], + "preclusion": "LL4368V/LL5368V/LL6368V", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS Compulsory Core Law Curriculum or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "LSE6101", + "title": "Fundamentals of Environmental Life Sciences Engineering", + "moduleCredit": 8, + "department": "NGS Dean's Office", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LSE6201", + "title": "Biofilm Processes", + "moduleCredit": 4, + "department": "NGS Dean's Office", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Prospective students should have a firm knowledge of\nmicrobiology, algebra and calculus. A basic understanding\nof molecular biology would be helpful. No advanced\ncalculus is required.", + "corequisite": "" + }, + { + "moduleCode": "LSM1102", + "title": "Molecular Genetics", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "YSC2233", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "GCE 'A' Level or H2 Biology or equivalent, or LSM1301 or LSM1301X", + "corequisite": "" + }, + { + "moduleCode": "LSM1104", + "title": "General Physiology", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "LSM2231", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GCE `A’ Level H2 Biology or equivalent, or LSM1301 or LSM1301X.", + "corequisite": "" + }, + { + "moduleCode": "LSM1105", + "title": "Evolutionary Biology", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "YSC2216", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GCE 'A' Level or H2 Biology or equivalent, or LSM1301 or LSM1301X", + "corequisite": "" + }, + { + "moduleCode": "LSM1106", + "title": "Molecular Cell Biology", + "moduleCredit": 4, + "department": "Biochemistry", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "LSM1101", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GCE ‘A’ Level or H2 Biology or equivalent, or LSM1301 or LSM1301X", + "corequisite": "" + }, + { + "moduleCode": "LSM1301", + "title": "General Biology", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "GCE `A’ Level or H2 Biology or equivalent, or LSM1301X", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LSM1301X", + "title": "General Biology", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "GCE `A’ Level or H2 Biology or equivalent, or LSM1301", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LSM1303", + "title": "Animal Behaviour", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "Life Sciences Major/Minor and student from Bachelor of Environmental Studies Programme", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LSM1306", + "title": "Forensic Science", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "GEK1542", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LSM1307", + "title": "Waste and Our Environment", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "GEK1515", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LSM1401", + "title": "Fundamentals of Biochemistry", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "Not for Life Sciences major/minor and student must not have read LSM1101 or its equivalent.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GCE 'A' Level or H2 Chemistry or equivalent, or CM1417 or CM1417X", + "corequisite": "" + }, + { + "moduleCode": "LSM1601", + "title": "Biology Advanced Placement", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LSM2101", + "title": "Metabolism and Regulation", + "moduleCredit": 4, + "department": "Biochemistry", + "faculty": "Science", + "semester": [], + "preclusion": "LSM2211", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM1101 or LSM1401", + "corequisite": "" + }, + { + "moduleCode": "LSM2102", + "title": "Molecular Biology", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "LSM2232", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM1101 (or LSM1401) and LSM1102", + "corequisite": "" + }, + { + "moduleCode": "LSM2103", + "title": "Cell Biology", + "moduleCredit": 4, + "department": "Biochemistry", + "faculty": "Science", + "semester": [], + "preclusion": "LSM2233", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM1101 or LSM1401 or LSM1102", + "corequisite": "" + }, + { + "moduleCode": "LSM2191", + "title": "Laboratory Techniques in Life Sciences", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM1102 or LSM1106", + "corequisite": "" + }, + { + "moduleCode": "LSM2211", + "title": "Metabolism and Regulation", + "moduleCredit": 4, + "department": "Biochemistry", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "LSM2101", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM1106", + "corequisite": "" + }, + { + "moduleCode": "LSM2212", + "title": "Human Anatomy", + "moduleCredit": 4, + "department": "Anatomy", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "YSC2234 (2-way preclusion)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GCE 'A' Level or H2 Biology or equivalent, or LSM1301 or LSM1301X", + "corequisite": "" + }, + { + "moduleCode": "LSM2231", + "title": "General Physiology", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "LSM1104", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GCE ‘A’ Level or H2 Biology or equivalent, or LSM1301 or LSM1301X", + "corequisite": "" + }, + { + "moduleCode": "LSM2232", + "title": "Genes, Genomes and Biomedical Implications", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "LSM2102", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM1102 and LSM1106", + "corequisite": "" + }, + { + "moduleCode": "LSM2233", + "title": "Cell Biology", + "moduleCredit": 4, + "department": "Biochemistry", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "LSM2103", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM1106", + "corequisite": "" + }, + { + "moduleCode": "LSM2234", + "title": "Introduction to Quantitative Biology", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GCE `A’ Level H2 Biology or equivalent, or LSM1301 or LSM1301X", + "corequisite": "" + }, + { + "moduleCode": "LSM2241", + "title": "Introductory Bioinformatics", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM1102 or LSM1105 or LSM1106 or PR1111A", + "corequisite": "" + }, + { + "moduleCode": "LSM2251", + "title": "Ecology and Environment", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "YSC3251", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GCE ‘A’ Level H2 Biology or equivalent, or LSM1301 or LSM1301X", + "corequisite": "" + }, + { + "moduleCode": "LSM2252", + "title": "Biodiversity", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "LSM1103", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GCE ‘A’ Level H2 Biology or equivalent, or LSM1301 or LSM1301X", + "corequisite": "" + }, + { + "moduleCode": "LSM2253", + "title": "Applied Data Analysis in Ecology and Evolution", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "LSM3257", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST1232 or MA1301 or MA1301X or GCE 'A' Level or H2 Mathematics/Further Mathematics or equivalent", + "corequisite": "" + }, + { + "moduleCode": "LSM2254", + "title": "Fundamentals of Plant Biology", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM1102 OR LSM1106", + "corequisite": "" + }, + { + "moduleCode": "LSM2288", + "title": "Basic UROPS in Life Sciences I", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "LSM1102 or LSM1105 or LSM1106; and departmental approval", + "corequisite": "" + }, + { + "moduleCode": "LSM2289", + "title": "Basic UROPS in Life Sciences II", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "LSM1102 or LSM1105 or LSM1106; and departmental approval", + "corequisite": "" + }, + { + "moduleCode": "LSM2291", + "title": "Fundamental Techniques in Microbiology", + "moduleCredit": 4, + "department": "Microbiology and Immunology", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM1102 or LSM1106", + "corequisite": "" + }, + { + "moduleCode": "LSM2301", + "title": "Life Sciences Industry Seminar", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Year 2 students in the Life Sciences Major Programme", + "corequisite": "" + }, + { + "moduleCode": "LSM3201", + "title": "Research and Communication in Life Sciences", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "LSM2288 Basic UROPS in Life Sciences I; LSM3288 Advanced UROPS in Life Sciences I; LSM4199 Honours Project in Life Sciences" + }, + { + "moduleCode": "LSM3211", + "title": "Fundamental Pharmacology", + "moduleCredit": 4, + "department": "Pharmacology", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "GEK2501", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2211 or LSM2233", + "corequisite": "" + }, + { + "moduleCode": "LSM3212", + "title": "Human Physiology: Cardiopulmonary System", + "moduleCredit": 4, + "department": "Physiology", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "YSC2234", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "LSM2211", + "corequisite": "" + }, + { + "moduleCode": "LSM3214", + "title": "Human Physiology - Hormones and Health", + "moduleCredit": 4, + "department": "Physiology", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2211 and LSM3212", + "corequisite": "" + }, + { + "moduleCode": "LSM3215", + "title": "Neuronal Signaling and Memory Mechanisms", + "moduleCredit": 4, + "department": "Physiology", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "YSC2231", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM1106", + "corequisite": "" + }, + { + "moduleCode": "LSM3216", + "title": "Neuronal Development and Diseases", + "moduleCredit": 4, + "department": "Physiology", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "LSM3213 Molecular and Cellular Neurobiology", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2232 and LSM2233", + "corequisite": "" + }, + { + "moduleCode": "LSM3217", + "title": "Human Ageing", + "moduleCredit": 4, + "department": "Physiology", + "faculty": "Science", + "semester": [], + "preclusion": "YSC3255", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2233", + "corequisite": "" + }, + { + "moduleCode": "LSM3218", + "title": "Cardiopulmonary Pharmacology", + "moduleCredit": 4, + "department": "Pharmacology", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "LSM3221", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM3211", + "corequisite": "" + }, + { + "moduleCode": "LSM3219", + "title": "Neuropharmacology", + "moduleCredit": 4, + "department": "Pharmacology", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "LSM3221", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM3211", + "corequisite": "" + }, + { + "moduleCode": "LSM3222", + "title": "Human Neuroanatomy", + "moduleCredit": 4, + "department": "Anatomy", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM1102 or LSM1106", + "corequisite": "" + }, + { + "moduleCode": "LSM3223", + "title": "Immunology", + "moduleCredit": 4, + "department": "Microbiology and Immunology", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2233 or PR2122", + "corequisite": "" + }, + { + "moduleCode": "LSM3224", + "title": "Molecular Basis of Human Diseases", + "moduleCredit": 4, + "department": "Biochemistry", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2211 or LSM2233 or PR2122", + "corequisite": "" + }, + { + "moduleCode": "LSM3225", + "title": "Molecular Microbiology in Human Diseases", + "moduleCredit": 4, + "department": "Microbiology and Immunology", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2211 or LSM2232 or LSM2233", + "corequisite": "" + }, + { + "moduleCode": "LSM3226", + "title": "Medical Mycology and Drug Discovery", + "moduleCredit": 4, + "department": "Biochemistry", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2233 or LSM2252 or LSM2291", + "corequisite": "" + }, + { + "moduleCode": "LSM3227", + "title": "General Virology", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM1102 Molecular Genetics AND\nLSM1106 Molecular Cell Biology AND LSM2191\nLaboratory Techniques in Life Sciences", + "corequisite": "" + }, + { + "moduleCode": "LSM3231", + "title": "Protein Structure and Function", + "moduleCredit": 4, + "department": "Biochemistry", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM1106 Molecular Cell Biology or PR1111A Pharmaceutical Biochemistry or PHS1111 Fundamental Biochemistry for Pharmaceutical Science", + "corequisite": "" + }, + { + "moduleCode": "LSM3232", + "title": "Microbiology", + "moduleCredit": 4, + "department": "Microbiology and Immunology", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2211 or LSM2232 or LSM2233", + "corequisite": "" + }, + { + "moduleCode": "LSM3233", + "title": "Developmental Biology", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2233", + "corequisite": "" + }, + { + "moduleCode": "LSM3234", + "title": "Biological Imaging of Growth and Form", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2233", + "corequisite": "" + }, + { + "moduleCode": "LSM3235", + "title": "Epigenetics in Human Health and Diseases", + "moduleCredit": 4, + "department": "Physiology", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2232", + "corequisite": "" + }, + { + "moduleCode": "LSM3241", + "title": "Genomic Data Analysis", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "[LSM2232 (Genes, Genomes & Biomedical Implications) AND either CS1010S (Programming Methodology) or equivalent or LSM2253 (Applied Data Analysis in Ecology and Evolution)] \nOR LSM2241 (Introductory Bioinformatics) \nOR CS2220 (Introduction to Computational Biology)", + "corequisite": "" + }, + { + "moduleCode": "LSM3242", + "title": "Translational Microbiology", + "moduleCredit": 4, + "department": "Microbiology and Immunology", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM1102 or LSM1106", + "corequisite": "" + }, + { + "moduleCode": "LSM3243", + "title": "Molecular Biophysics", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM1106", + "corequisite": "" + }, + { + "moduleCode": "LSM3244", + "title": "Molecular Biotechnology", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2233", + "corequisite": "" + }, + { + "moduleCode": "LSM3245", + "title": "RNA Biology and Technology", + "moduleCredit": 4, + "department": "Microbiology and Immunology", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM1102 or LSM1106", + "corequisite": "" + }, + { + "moduleCode": "LSM3246", + "title": "Synthetic Biology", + "moduleCredit": 4, + "department": "Biochemistry", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM1102 or LSM1106", + "corequisite": "" + }, + { + "moduleCode": "LSM3247", + "title": "Practical Synthetic Biology", + "moduleCredit": 4, + "department": "Biochemistry", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM1102 or LSM1106", + "corequisite": "" + }, + { + "moduleCode": "LSM3252", + "title": "Evolution and Comparative Genomics", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM1105", + "corequisite": "" + }, + { + "moduleCode": "LSM3254", + "title": "Ecology of Aquatic Environments", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2251", + "corequisite": "" + }, + { + "moduleCode": "LSM3255", + "title": "Ecology of Terrestrial Environments", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "LSM3271", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2251", + "corequisite": "" + }, + { + "moduleCode": "LSM3256", + "title": "Tropical Horticulture", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "LSM1105 or LSM2231 or LSM2252 or LSM2254", + "corequisite": "" + }, + { + "moduleCode": "LSM3258", + "title": "Comparative Botany", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2231 or LSM2252 or LSM2254", + "corequisite": "" + }, + { + "moduleCode": "LSM3259", + "title": "Fungal Biology", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2252", + "corequisite": "" + }, + { + "moduleCode": "LSM3262", + "title": "Environmental Animal Physiology", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2231", + "corequisite": "" + }, + { + "moduleCode": "LSM3263", + "title": "Field Studies in Neotropical Ecosystems", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2251", + "corequisite": "" + }, + { + "moduleCode": "LSM3264", + "title": "Environmental Biochemistry", + "moduleCredit": 4, + "department": "Biochemistry", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM1106", + "corequisite": "" + }, + { + "moduleCode": "LSM3265", + "title": "Entomology", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2251 Ecology and Environment", + "corequisite": "" + }, + { + "moduleCode": "LSM3266", + "title": "Avian Biology and Evolution", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2252", + "corequisite": "" + }, + { + "moduleCode": "LSM3267", + "title": "Behavioural Biology", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2251 Ecology and Environment", + "corequisite": "" + }, + { + "moduleCode": "LSM3272", + "title": "Global Change Biology", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "ENV2101 Global Environmental Change", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2252", + "corequisite": "" + }, + { + "moduleCode": "LSM3273", + "title": "Ecology, Conservation and Management of Sri Lankan Ecosystems", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 3 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2251", + "corequisite": "" + }, + { + "moduleCode": "LSM3274", + "title": "Eco-Biodiversity Field Techniques in Taiwan & Singapore", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2251 or LSM2252 or department approval", + "corequisite": "" + }, + { + "moduleCode": "LSM3288", + "title": "Advanced UROPS in Life Sciences I", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LSM3289", + "title": "Advanced UROPS in Life Sciences II", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LSM3310", + "title": "Undergraduate Professional Internship Programme", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 3, + 4 + ], + "preclusion": "XX3310 modules offered in Science, where XX stands for the subject prefix of the respective major", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed 3 regular semesters of study, having declared Life Sciences as first major and have completed a minimum of 32 MCs in Life Sciences major at the time of application.", + "corequisite": "" + }, + { + "moduleCode": "LSM3311", + "title": "Undergraduate Professional Internship Programme", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "XX3311 modules offered in Science, where XX stands for the subject prefix for the respective major.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed 3 regular semesters of study, have declared Life Sciences as first major and have completed a minimum of 32 MCs in Life Sciences major at time of application.", + "corequisite": "" + }, + { + "moduleCode": "LSM3312", + "title": "Enhanced Undergraduate Professional Internship Programme", + "moduleCredit": 12, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "XX3312 modules offered in Science, where XX stands for the subject prefix for the respective major.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed 3 regular semesters of study, have declared Life Sciences as first major and have completed a minimum of 32 MCs in Life Sciences major at time of application.", + "corequisite": "" + }, + { + "moduleCode": "LSM3313", + "title": "Undergraduate Professional Internship Programme Extended", + "moduleCredit": 12, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "This module XX3313 Extended Undergraduate Professional Internship Programme, where XX stands for the subject prefix of the respective major", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed 3 regular semesters of study, having declared Life Sciences as first major and have completed a minimum of 32 MCs in LS major at the time of application and have completed LSM3312", + "corequisite": "Students should be in their 3rd year of studies (SCI3)" + }, + { + "moduleCode": "LSM3975", + "title": "Lake Ecosystem Dynamics", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "LSM4199", + "title": "Honours Project in Life Sciences", + "moduleCredit": 16, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "LSM4299", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "For Life Sciences major students with overall CAP of 3.50 or more are eligible to enrol for this module (for Cohort 2011 and before). For Life Sciences major students with overall CAP of 3.20 or more are eligible to enrol for this module (for Cohort 2012 and after).", + "corequisite": "" + }, + { + "moduleCode": "LSM4210", + "title": "Topics in Biomedical Science", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2211 or LSM2232 or LSM2233", + "corequisite": "LSM4199" + }, + { + "moduleCode": "LSM4211", + "title": "Toxicology", + "moduleCredit": 4, + "department": "Pharmacology", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM3211", + "corequisite": "" + }, + { + "moduleCode": "LSM4212", + "title": "Pharmacogenetics and Drug Responses", + "moduleCredit": 4, + "department": "Pharmacology", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM3211", + "corequisite": "" + }, + { + "moduleCode": "LSM4213", + "title": "System Neurobiology", + "moduleCredit": 4, + "department": "Physiology", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM3215 and LSM3216", + "corequisite": "" + }, + { + "moduleCode": "LSM4214", + "title": "Cancer Pharmacology", + "moduleCredit": 4, + "department": "Pharmacology", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM3211", + "corequisite": "" + }, + { + "moduleCode": "LSM4215", + "title": "Extreme Physiology", + "moduleCredit": 4, + "department": "Physiology", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM3212 Human Physiology: Cardiopulmonary System \nAND \nLSM3214 Human Physiology – Hormones and Health", + "corequisite": "" + }, + { + "moduleCode": "LSM4216", + "title": "Molecular Nutrition and Metabolic Biology", + "moduleCredit": 4, + "department": "Biochemistry", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2211", + "corequisite": "" + }, + { + "moduleCode": "LSM4217", + "title": "Functional Ageing", + "moduleCredit": 4, + "department": "Physiology", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "YSC3255", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM3217 OR LSM 3224", + "corequisite": "" + }, + { + "moduleCode": "LSM4218", + "title": "Biotechnology and Biotherapeutics", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM1106 Molecular Cell Biology or by Departmental Approval", + "corequisite": "" + }, + { + "moduleCode": "LSM4221", + "title": "Drug Discovery and Clinical Trials", + "moduleCredit": 4, + "department": "Pharmacology", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM3211", + "corequisite": "" + }, + { + "moduleCode": "LSM4222", + "title": "Advanced Immunology", + "moduleCredit": 4, + "department": "Microbiology and Immunology", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM3223", + "corequisite": "" + }, + { + "moduleCode": "LSM4223", + "title": "Advances in Antimicrobial Strategies", + "moduleCredit": 4, + "department": "Microbiology and Immunology", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM3225 or LSM3232", + "corequisite": "" + }, + { + "moduleCode": "LSM4224", + "title": "Free Radicals and Antioxidant Biology", + "moduleCredit": 4, + "department": "Biochemistry", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2211", + "corequisite": "" + }, + { + "moduleCode": "LSM4225", + "title": "Genetic Medicine in the Post-Genomic Era", + "moduleCredit": 4, + "department": "Biochemistry", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2232", + "corequisite": "" + }, + { + "moduleCode": "LSM4226", + "title": "Infection and Immunity", + "moduleCredit": 4, + "department": "Microbiology and Immunology", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM3223 and either LSM3225 or LSM3232", + "corequisite": "" + }, + { + "moduleCode": "LSM4227", + "title": "Stem Cell Biology", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2232 and LSM2233", + "corequisite": "" + }, + { + "moduleCode": "LSM4228", + "title": "Experimental Models for Human Disease and Therapy", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2233", + "corequisite": "" + }, + { + "moduleCode": "LSM4229", + "title": "Therapeutic and diagnostic agents from animal toxins", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM3211 or LSM3231", + "corequisite": "" + }, + { + "moduleCode": "LSM4231", + "title": "Structural Biology", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2234 or LSM3231 or LSM3243, and GCE 'A' Level or H2 Mathematics/Further Mathematics or equivalent or MA1301 or MA1301X", + "corequisite": "" + }, + { + "moduleCode": "LSM4232", + "title": "Advanced Cell Biology", + "moduleCredit": 4, + "department": "Physiology", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2233", + "corequisite": "" + }, + { + "moduleCode": "LSM4234", + "title": "Mechanobiology", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2232 and LSM2233", + "corequisite": "" + }, + { + "moduleCode": "LSM4235", + "title": "Nuclear Mechanics and Genome Regulation", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2232", + "corequisite": "" + }, + { + "moduleCode": "LSM4241", + "title": "Functional Genomics", + "moduleCredit": 4, + "department": "Biochemistry", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM3231 or LSM3241", + "corequisite": "" + }, + { + "moduleCode": "LSM4242", + "title": "Protein Engineering", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2232 or LSM3231", + "corequisite": "" + }, + { + "moduleCode": "LSM4243", + "title": "Tumour Biology", + "moduleCredit": 4, + "department": "Physiology", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2233", + "corequisite": "" + }, + { + "moduleCode": "LSM4244", + "title": "Oncogenes and Signal Transduction", + "moduleCredit": 4, + "department": "Biochemistry", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2233", + "corequisite": "" + }, + { + "moduleCode": "LSM4245", + "title": "Advanced Epigenetics and Chromatin Biology", + "moduleCredit": 4, + "department": "Biochemistry", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM3235", + "corequisite": "" + }, + { + "moduleCode": "LSM4251", + "title": "Plant Growth and Development", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2254 or LSM3233 or LSM3258", + "corequisite": "" + }, + { + "moduleCode": "LSM4252", + "title": "Reproductive Biology", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM3233", + "corequisite": "" + }, + { + "moduleCode": "LSM4254", + "title": "Principles of Taxonomy and Systematics", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM3241 or LSM3252", + "corequisite": "" + }, + { + "moduleCode": "LSM4255", + "title": "Methods in Mathematical Biology", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2253", + "corequisite": "" + }, + { + "moduleCode": "LSM4256", + "title": "Evolution of Development", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM3233 or LSM3252", + "corequisite": "" + }, + { + "moduleCode": "LSM4257", + "title": "Aquatic Vertebrate Diversity", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2252", + "corequisite": "" + }, + { + "moduleCode": "LSM4259", + "title": "Evolutionary Genetics of Reproduction", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM1102 and LSM1105", + "corequisite": "" + }, + { + "moduleCode": "LSM4260", + "title": "Plankton Ecology", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2253 OR LSM3254", + "corequisite": "" + }, + { + "moduleCode": "LSM4261", + "title": "Marine Biology", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM3254", + "corequisite": "" + }, + { + "moduleCode": "LSM4262", + "title": "Tropical Conservation Biology", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "ULS2204, YSC3251", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2251 and either LSM3272 or ENV2101", + "corequisite": "" + }, + { + "moduleCode": "LSM4263", + "title": "Field Studies in Biodiversity", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2251 and LSM2252", + "corequisite": "" + }, + { + "moduleCode": "LSM4264", + "title": "Freshwater Biology", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM3254", + "corequisite": "" + }, + { + "moduleCode": "LSM4265", + "title": "Urban Ecology", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2251 and LSM3255", + "corequisite": "" + }, + { + "moduleCode": "LSM4266", + "title": "Aquatic Invertebrate Diversity", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2252", + "corequisite": "" + }, + { + "moduleCode": "LSM4267", + "title": "Light & Vision in Animal Communication", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM3267 Behavioural Biology", + "corequisite": "" + }, + { + "moduleCode": "LSM4268", + "title": "Environmental Bioacoustics", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM3267\nLSM3272", + "corequisite": "" + }, + { + "moduleCode": "LSM4299", + "title": "Applied Project in Life Sciences", + "moduleCredit": 16, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "Pharmacy majors are precluded from reading this module. This module would preclude XX4199 and vice versa.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must be reading the Bachelor of Science degree and have met Honours eligibility requirements for specific major.", + "corequisite": "" + }, + { + "moduleCode": "LX5103", + "title": "Environmental Law", + "moduleCredit": 4, + "department": "SDE Dean's Office", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MA1100", + "title": "Basic Discrete Mathematics", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "CS1231, CS1231S, EEE students, CEG students, CPE students, MPE students, COM students, CEC students, YSC2209", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GCE ‘A’ Level or H2 Mathematics or equivalent or H2 Further Mathematics or MA1301 or MA1301X", + "corequisite": "" + }, + { + "moduleCode": "MA1101R", + "title": "Linear Algebra I", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "EG1401, EG1402, MA1101, MA1311, MA1506, MA1508, FOE students, YSC2232", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GCE ‘A’ Level or H2 Mathematics or H2 Further Mathematics or MA1301 or MA1301FC or MA1301X", + "corequisite": "" + }, + { + "moduleCode": "MA1102R", + "title": "Calculus", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "EE1401, EE1461, EG1401, EG1402, CE1402, MA1102, MA1312, MA1505, MA1505C, MA1507, MA1521, CEC students, COM students who matriculated on and after 2002 (including poly 2002 intake), FOE students, YSC1216", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GCE ‘A’ Level or H2 Mathematics or H2 Further Mathematics or MA1301 or MA1301FC or MA1301X", + "corequisite": "" + }, + { + "moduleCode": "MA1104", + "title": "Multivariable Calculus", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "MA1104S, MA2207, MA2221, MA2311, MA3208, GM2301, MQ2202, MQ2102, MQ2203, PC1134, PC2201, MA1507, MPE students.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1102 or MA1102R or MA1505 or MA1505C or MA1521 or EE1401 or EE1461 or EG1402", + "corequisite": "" + }, + { + "moduleCode": "MA1301", + "title": "Introductory Mathematics", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "Those with A-level or H2 passes in Mathematics or H2 Further Mathematics or who have passed any of the modules MA1101R, MA1102R, MA1301FC, MA1301X, MA1505, MA1506, MA1507, MA1508, MA1521, MA1311, MA1312, MA1421, MPE students", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Pass in GCE ‘O’ Level Additional Mathematics or GCE ‘AO’ Levels or H1 Mathematics", + "corequisite": "" + }, + { + "moduleCode": "MA1301X", + "title": "Introductory Mathematics", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2, + 3 + ], + "preclusion": "Those with A-level or H2 passes in Mathematics or H2 Further Mathematics", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Pass in GCE ‘O’ Level Additional Mathematics or GCE ‘AO’ Level or H1 Mathematics", + "corequisite": "" + }, + { + "moduleCode": "MA1311", + "title": "Matrix Algebra", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "MA1101R, MA1506, MA1508, MA1508E, MA1513, FoE students", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AO-Level Mathematics or H1 Mathematics or MA1301 or MA1301FC or MA1301X", + "corequisite": "" + }, + { + "moduleCode": "MA1312", + "title": "Calculus with Applications", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "MA1102R, MA1505, MA1505C, MA1521, MA1511, FoE students,", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AO-Level Mathematics or H1 Mathematics or MA1301 or MA1301FC or MA1301X", + "corequisite": "" + }, + { + "moduleCode": "MA1421", + "title": "Basic Applied Mathematics for Sciences", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "Majors in Mathematics, Applied Mathematics, Quantitative Finance or Statistics, second major in Mathematics, Financial Mathematics or Statistics, students who have passed any of the modules MA1102R, MA1312, MA1505, MA1506, MA1507, MA1521.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AO-Level Mathematics or H1 Mathematics", + "corequisite": "" + }, + { + "moduleCode": "MA1505", + "title": "Mathematics I", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "Students reading a primary major in Mathematics/Applied Mathematics/Quantitative Finance/Data Science and Analytics, MA1102R, MA1312, MA1507, MA1511, MA1521, MA2311, MA2501, YSC1216", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GCE ‘A’ Level Mathematics or H2 Mathematics or H2 Further Mathematics or MA1301 or MA1301X", + "corequisite": "" + }, + { + "moduleCode": "MA1506", + "title": "Mathematics II", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "MA1101R, MA1311, MA2312, MA1508, MA2501, EE1461, PC2174, MA1511, MA1512, MA1513, MA1508E", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Read MA1102R or MA1505 or MA1521", + "corequisite": "" + }, + { + "moduleCode": "MA1507", + "title": "Advanced Calculus", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "Students reading a primary major in Mathematics/Applied Mathematics/Quantitative Finance/Data Science and Analytics s, MA1102R, MA1505, MA1511, MA1512, MA1521, MA2104, MA2311, YSC2252", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GCE ‘A’ Level or H2 Mathematics or H2 Further Mathematics or equivalent", + "corequisite": "" + }, + { + "moduleCode": "MA1508", + "title": "Linear Algebra with Applications", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "MA1101R, MA1311, MA1506, MA1508E, MA1513", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GCE ‘A’ Level or H2 Mathematics or equivalent", + "corequisite": "" + }, + { + "moduleCode": "MA1508E", + "title": "Linear Algebra for Engineering", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "MA1101R, MA1311, MA1506, MA1508, MA1513, YSC2232", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GCE ‘A’ level or H2 Mathematics or H2 Further Mathematics or equivalent", + "corequisite": "" + }, + { + "moduleCode": "MA1511", + "title": "Engineering Calculus", + "moduleCredit": 2, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "MA1102R, MA1312, MA1505, MA1506, MA1507, MA1521, MA2311, MA2501, EE1461, PC2134, PC2174, YSC1216", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GCE ‘A’ level or H2 Mathematics or H2 Further Mathematics or equivalent", + "corequisite": "" + }, + { + "moduleCode": "MA1512", + "title": "Differential Equations for Engineering", + "moduleCredit": 2, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "MA1506, MA1507, EE1461, PC2134, PC2174 (2-way preclusion)", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GCE ‘A’ level or H2 Mathematics or H2 Further Mathematics or equivalent", + "corequisite": "" + }, + { + "moduleCode": "MA1513", + "title": "Linear Algebra with Differential Equations", + "moduleCredit": 2, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "MA1101R, MA1311, MA1506, MA1508, MA1508E, YSC2232", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GCE ‘A’ level or H2 Mathematics or H2 Further Mathematics or equivalent", + "corequisite": "" + }, + { + "moduleCode": "MA1521", + "title": "Calculus for Computing", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "Students reading a primary major in Mathematics/Applied Mathematics/Quantitative Finance/Data Science and Analytics, MA1102R, MA1312, MA1505, MA1507, MA2501, FoE students, YSC1216", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GCE ‘A’ Level Mathematics or H2 Mathematics or H2 Further Mathematics or MA1301 or MA1301X", + "corequisite": "" + }, + { + "moduleCode": "MA1601", + "title": "Mathematics Advanced Placement", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MA2101", + "title": "Linear Algebra II", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "MA2101S, MA2101H, MA2201, MA2203, MQ2201, MQ2101, MQ2203", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1101R or MA1506 or MA1508 or MA1508E or MA1513", + "corequisite": "" + }, + { + "moduleCode": "MA2101S", + "title": "Linear Algebra II (S)", + "moduleCredit": 5, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "MA2101, MA2101H, MA2201, MA2203, MQ2201, MQ2101, MQ2203", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(MA1101R or MA1506 or MA1508 or MA1508E or MA1513) and departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA2104", + "title": "Multivariable Calculus", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "MA1104, MA2311, MA1507, MPE students, YSC2252", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1102R or MA1505 or MA1511 or MA1521", + "corequisite": "" + }, + { + "moduleCode": "MA2108", + "title": "Mathematical Analysis I", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "MA2108S, MA2311, YSC3206", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1102R or MA1505 or MA1511 or MA1505C or MA1507 or MA1521", + "corequisite": "" + }, + { + "moduleCode": "MA2108S", + "title": "Mathematical Analysis I (S)", + "moduleCredit": 5, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "MA2108, MA2206, MA2208, MA2221, MA2311, MQ2202, MQ2102, MQ2203, CN2401, EE2401, ME2492", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(MA1102R or MA1505 or MA1511 or MA1505C or MA1507 or MA1521) and departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA2202", + "title": "Algebra I", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "MA2202S, MA3250, MQ3201,CVE students, YSC3237", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1100 or MA1100S or CS1231 or CS1231S", + "corequisite": "" + }, + { + "moduleCode": "MA2202S", + "title": "Algebra I (S)", + "moduleCredit": 5, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "MA2202, MA3250, MQ3201, CVE students.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(MA1100 or MA1100S or CS1231 or CS1231S) and departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA2213", + "title": "Numerical Analysis I", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "CE2407, ME3291, CN3421, CN3411, CHE students (for breadth requirements), EVE students (for breadth requirements), DSA2102", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(MA1102R or MA1312 or MA1507 or MA1505 or MA1521 or MA1511 or EG1402 or EE1401 or EE1461) and (MA1101R or MA1311 or MA1508 or MA1506 or MA1508E or MA1513)", + "corequisite": "" + }, + { + "moduleCode": "MA2214", + "title": "Combinatorics and Graphs I", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1100 or MA1101R or MA1311 or MA1506 or MA1508 or MA1508E or MA1513 or CS1231 or CS1231S", + "corequisite": "" + }, + { + "moduleCode": "MA2216", + "title": "Probability", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "ST2131 (Cross-listing), ST2334, CE2407, YSC2243", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1102R or MA1312 or MA1507 or MA1505 or MA1505C or MA1511 or MA1521", + "corequisite": "" + }, + { + "moduleCode": "MA2219", + "title": "Introduction to Geometry", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1100 or MA1101R or MA1506 or MA1508 or MA1508E or MA1513 or MA1102R or MA1505 or MA1507 or MA1511 or CS1231 or CS1231S", + "corequisite": "" + }, + { + "moduleCode": "MA2288", + "title": "Basic UROPS in Mathematics I", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "MA1101R and departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA2289", + "title": "Basic UROPS in Mathematics II", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1101R and departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA2311", + "title": "Techniques in Advanced Calculus", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "MA1104, MA2104, MA1505, MA1507, MA1511, MA2108, MA2108S, MPE students, Mathematics majors, Applied Mathematics majors, Quantitative Finance majors, second major in Mathematics, second major in Financial Mathematics", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1102R or MA1312 or MA1421 or MA1521", + "corequisite": "" + }, + { + "moduleCode": "MA2312", + "title": "Introduction to Differential Equations", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "MA3220, MA1506, MA2501, Mathematics majors, Applied Mathematics majors, Quantitative Finance majors, second major in Mathematics, second major in Financial Mathematics", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "{MA1101R or MA1311} and {MA1102R or MA1312 or MA1421 or MA1505 or MA1521}", + "corequisite": "" + }, + { + "moduleCode": "MA2501", + "title": "Differential Equations and Systems", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "MA1505, MA1505C, MA1506, MA1512, MA1521, MA2210, MA2312, MA1511", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1507 and (MA1508 or MA1508E)", + "corequisite": "" + }, + { + "moduleCode": "MA3110", + "title": "Mathematical Analysis II", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "MA2118, MA2118H, MA2205, MQ3202, MA3110S, ST2236, YSC3206", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA2108 or MA2108S", + "corequisite": "" + }, + { + "moduleCode": "MA3110S", + "title": "Mathematical Analysis II (S)", + "moduleCredit": 5, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "MA2118, MA2118H, MA2205, MQ3202, MA3110", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(MA2108 or MA2108S) and departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA3111", + "title": "Complex Analysis I", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "MA3111S, EE3002, MPE students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(MA1104 or MA2104 or MA1507) and (MA3110 or MA3110S)", + "corequisite": "" + }, + { + "moduleCode": "MA3111S", + "title": "Complex Analysis I (S)", + "moduleCredit": 5, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "MA3111, EE3002, MPE students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(MA1104 or MA2104 or MA1507) and (MA3110 or MA3110S) and departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA3201", + "title": "Algebra II", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "YSC3237", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(MA2202 or MA2202S) and (MA2101 or MA2101S)", + "corequisite": "" + }, + { + "moduleCode": "MA3205", + "title": "Set Theory", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1100 or MA1100S or CS1231 or CS1231S", + "corequisite": "" + }, + { + "moduleCode": "MA3209", + "title": "Mathematical Analysis III", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "MA3213, MA3251", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "(MA3110 or MA3110S) and (MA1104 or MA2104 or MA1507)", + "corequisite": "" + }, + { + "moduleCode": "MA3218", + "title": "Applied Algebra", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "MA2202, MA2202S, EE4103", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA2101 or MA2101S", + "corequisite": "" + }, + { + "moduleCode": "MA3219", + "title": "Computability Theory", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1100 or MA1100S or CS1231 or CS1231S", + "corequisite": "" + }, + { + "moduleCode": "MA3220", + "title": "Ordinary Differential Equations", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "MA2312, PC2174", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(MA1104 or MA2104 or MA1505 or MA1507 or MA1511 or MA1521) and (MA1101R or MA1311 or MA1506 or MA1508 or MA1508E or MA1513) and (MA2108 or MA2108S)", + "corequisite": "" + }, + { + "moduleCode": "MA3227", + "title": "Numerical Analysis II", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "ME3291", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA2213 and (MA1104 or MA2104 or MA1505 or MA1506 or MA1507 or MA1511 or MA2311) and (MA2216 or ST2131 or ST2334)", + "corequisite": "" + }, + { + "moduleCode": "MA3229", + "title": "Intro. to Geometric Modelling", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(MA1104 or MA2104 or MA1505 or MA1507 or MA1511 or MA2311) and (MA1101R or MA1506 or MA1508 or MA1508E or MA1513)", + "corequisite": "" + }, + { + "moduleCode": "MA3233", + "title": "Combinatorics and Graphs II", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA2214", + "corequisite": "" + }, + { + "moduleCode": "MA3236", + "title": "Non-Linear Programming", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "DSC3214 or DSN3701", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1104 or MA2104 or MA1506 or MA1507 or MA1505 or MA1511 or MA2311", + "corequisite": "" + }, + { + "moduleCode": "MA3238", + "title": "Stochastic Processes I", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "ST3236.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "{MA1101 or MA1101R or MA1311 or MA1508 or GM1302} and {MA2216 or ST2131}", + "corequisite": "" + }, + { + "moduleCode": "MA3252", + "title": "Linear and Network Optimisation", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "MQ2204, CS3252, IC2231, DSC3214, DSN3701, MA3235, BH3214, ISE students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1101R or MA1306 or MA1311 or MA1508 or MA1506 or MA1508E or MA1513", + "corequisite": "" + }, + { + "moduleCode": "MA3256", + "title": "Applied Cryptography", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "CS423.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA2202", + "corequisite": "" + }, + { + "moduleCode": "MA3259", + "title": "Mathematical Methods in Genomics", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA2216 or MA3233 or MA3501 or ST2131 or ST2334 or LSM2241", + "corequisite": "" + }, + { + "moduleCode": "MA3264", + "title": "Mathematical Modelling", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "MPE students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1104 or MA2104 or MA1104S or MA1506 or MA2108 or MA2108S or MA2221 or MA1505 or MA1511 or MA2311", + "corequisite": "" + }, + { + "moduleCode": "MA3265", + "title": "Introduction to Number Theory", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "{MA2108 or MA2108S} and {MA2202 or MA2202S}", + "corequisite": "" + }, + { + "moduleCode": "MA3266", + "title": "Introduction to Fourier Analysis", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(MA1101R or MA1506 or MA1508 or MA1508E or MA1513) and (MA1104 or MA2104) and MA3220", + "corequisite": "" + }, + { + "moduleCode": "MA3269", + "title": "Mathematical Finance I", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "QF2101 Basic Financial Mathematics", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS1010 or CS1010E or CS1010S or CS1010FC or IT1006 or CS1101 or CS1101C or CS1101S or IT1002) and (ST2131 or ST2334 or MA2216)", + "corequisite": "" + }, + { + "moduleCode": "MA3288", + "title": "Advanced UROPS in Mathematics I", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA3289", + "title": "Advanced UROPS in Mathematics II", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA3291", + "title": "Undergraduate Seminar in Mathematics", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA2101/MA2101S and MA2108/MA2108S", + "corequisite": "" + }, + { + "moduleCode": "MA3310", + "title": "Undergraduate Professional Internship Programme", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "XX3310 modules offered in Science, where XX stands for the subject prefix of the respective major", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed 3 regular semesters of study, having declared Mathematics or Applied Mathematics as first major and have completed a minimum of 32 MCs in Mathematics or Applied Mathematics major at the time of application.", + "corequisite": "" + }, + { + "moduleCode": "MA3311", + "title": "Undergraduate Professional Internship Programme", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "XX3311 modules offered in Science, where XX stands for the subject prefix for the respective major.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed 3 regular semesters of study, have declared Mathematics or Applied Mathematics as first major and have completed a minimum of 32 MCs in Mathematics or Applied Mathematics major at time of application.", + "corequisite": "" + }, + { + "moduleCode": "MA3312", + "title": "Enhanced Undergraduate Professional Internship Programme", + "moduleCredit": 12, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "XX3312 modules offered in Science, where XX stands for the subject prefix for the respective major.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed 3 regular semesters of study, have declared Mathematics or Applied Mathematics as first major and have completed a minimum of 32 MCs in Mathematics or Applied Mathematics major at time of application.", + "corequisite": "" + }, + { + "moduleCode": "MA3313", + "title": "Undergraduate Professional Internship Programme Extended", + "moduleCredit": 12, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "This module XX3313 Extended Undergraduate Professional Internship Programme, where XX stands for the subject prefix of the respective major", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed 3 regular semesters of study, having declared MA as first major and have completed a minimum of 32 MCs in MA major at the time of application and have completed MA3312", + "corequisite": "Students should be in their 3rd year of studies (SCI3)" + }, + { + "moduleCode": "MA4199", + "title": "Honours Project in Mathematics", + "moduleCredit": 12, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "XFS4199M", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "Only for students matriculated from 2002/2003, subject to faculty and departmental requirements", + "corequisite": "" + }, + { + "moduleCode": "MA4201", + "title": "Commutative Algebra", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA3202 or MA3203 or MA3201", + "corequisite": "" + }, + { + "moduleCode": "MA4203", + "title": "Galois Theory", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA3201", + "corequisite": "" + }, + { + "moduleCode": "MA4207", + "title": "Mathematical Logic", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA3110 or MA3110S or MA3205 or MA3219", + "corequisite": "" + }, + { + "moduleCode": "MA4211", + "title": "Functional Analysis", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA3207H or MA3209", + "corequisite": "" + }, + { + "moduleCode": "MA4221", + "title": "Partial Differential Equations", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA3220", + "corequisite": "" + }, + { + "moduleCode": "MA4229", + "title": "Approximation Theory", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(MA2101 or MA2101S) and (MA3110 or MA3110S)", + "corequisite": "" + }, + { + "moduleCode": "MA4230", + "title": "Matrix Computation", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "{MA2101 or MA2101S} and {MA2213 or DSA2102}", + "corequisite": "" + }, + { + "moduleCode": "MA4233", + "title": "Dynamical Systems", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA3220", + "corequisite": "" + }, + { + "moduleCode": "MA4235", + "title": "Topics in Graph Theory", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA3233", + "corequisite": "" + }, + { + "moduleCode": "MA4247", + "title": "Complex Analysis II", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA3111 or MA3111S", + "corequisite": "" + }, + { + "moduleCode": "MA4248", + "title": "Theoretical Mechanics", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "MA3224.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA2108 or MA2108S or MA2212 or PC2212", + "corequisite": "" + }, + { + "moduleCode": "MA4251", + "title": "Stochastic Processes II", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "MA3237, MA3239, GM3310, ST4238, ISE students.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA3238 or ST3236", + "corequisite": "" + }, + { + "moduleCode": "MA4252", + "title": "Advanced Ordinary Differential Equations", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA3220", + "corequisite": "" + }, + { + "moduleCode": "MA4254", + "title": "Discrete Optimization", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "MA3235, ISE students.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA2215 or MA3252 or DSC3214 or DSN3701", + "corequisite": "" + }, + { + "moduleCode": "MA4255", + "title": "Numerical Methods in Differential Equations", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "ME4233", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "{MA2213 or DSA2102} and MA3220", + "corequisite": "" + }, + { + "moduleCode": "MA4257", + "title": "Financial Mathematics II", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA3245", + "corequisite": "" + }, + { + "moduleCode": "MA4260", + "title": "Stochastic Operations Research", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "ISE students.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "{MA2216 or ST2131 or ST2334} and {MA3236 or MA3252 or DSC3214 or DSN3701}", + "corequisite": "" + }, + { + "moduleCode": "MA4261", + "title": "Coding and Cryptography", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "EEE students, CEG students, CPE students.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA3201 or MA3218 or MA3265", + "corequisite": "" + }, + { + "moduleCode": "MA4262", + "title": "Measure and Integration", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA3209", + "corequisite": "" + }, + { + "moduleCode": "MA4263", + "title": "Introduction to Analytic Number Theory", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(MA2202 or MA2202S) and (MA3111 or MA3111S)", + "corequisite": "" + }, + { + "moduleCode": "MA4264", + "title": "Game Theory", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "EC3312.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(MA3236 or MA3252 or DSC3214 or DSN3701) and (MA2216 or ST2131 or ST2334)", + "corequisite": "" + }, + { + "moduleCode": "MA4266", + "title": "Topology", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA3209", + "corequisite": "" + }, + { + "moduleCode": "MA4267", + "title": "Discrete Time Finance", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA3245 (for students enrolled in the Faculty of Science)", + "corequisite": "" + }, + { + "moduleCode": "MA4268", + "title": "Mathematics for Visual Data Processing", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA2213", + "corequisite": "" + }, + { + "moduleCode": "MA4269", + "title": "Mathematical Finance II", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "MA3245 Financial Mathematics I\nMA4257 Financial Mathematics II", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(MA1104 or MA1506 or MA1507 or MA1511 or MA2104 or MA2311) and MA3269", + "corequisite": "" + }, + { + "moduleCode": "MA4269A", + "title": "Mathematical Finance II", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "MA3245 Financial Mathematics I\nMA4257 Financial Mathematics II", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Either one of these:\nMA1104 Multivariable Calculus\nor MA1506 Mathematics II\nor MA1507 Advanced Calculus\nor MA2104 Multivariable Calculus\nor MA2311 Techniques in Advanced Calculus\nand MA3269 Mathematical Finance I", + "corequisite": "" + }, + { + "moduleCode": "MA4270", + "title": "Data Modelling and Computation", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "CS5339 Theory and Algorithms for Machine Learning and DSA5102 Foundations of Machine Learning", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "{MA2213 or DSA2102} and {MA2216 or ST2131 or ST2334}", + "corequisite": "" + }, + { + "moduleCode": "MA4271", + "title": "Differential Geometry of Curves and Surfaces", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "MA3215", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(MA1104 or MA2104 or MA1507 or MA1505 or MA2311) and (MA2101 or MA2101S)", + "corequisite": "" + }, + { + "moduleCode": "MA4272", + "title": "Mathematical Tools for Data Science", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA2213 and (MA3236 or MA3252 or MA3264)", + "corequisite": "" + }, + { + "moduleCode": "MA4291", + "title": "Undergraduate Topics in Mathematics I", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA4292", + "title": "Undergraduate Topics in Mathematics II", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA5198", + "title": "Graduate Seminar Module in Mathematics", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Only for graduate research students in the Department of Mathematics who matriculated in 2004 or later.", + "corequisite": "" + }, + { + "moduleCode": "MA5202", + "title": "Number Theory", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA4203 or MA5203 or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA5203", + "title": "Graduate Algebra I", + "moduleCredit": 5, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA3201 and departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA5204", + "title": "Graduate Algebra IIA", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA5203 or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA5205", + "title": "Graduate Analysis I", + "moduleCredit": 5, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "MA5215", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA4262 or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA5206", + "title": "Graduate Analysis II", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA4211 and {MA4262 or MA5205}, or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA5208", + "title": "Algebraic Geometry", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA3201 or MA5203 or MA5204 or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA5209", + "title": "Algebraic Topology", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA3251 or MA4215 or MA4266", + "corequisite": "" + }, + { + "moduleCode": "MA5210", + "title": "Differentiable Manifolds", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA3209 or MA3215 or MA3251 or MA4266 or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA5211", + "title": "Lie Theory", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA3201 or MA5203 or MA5218 or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA5213", + "title": "Advanced Partial Differential Equations", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA4221 or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA5216", + "title": "Differential Geometry", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA5210 or Departmental Approval", + "corequisite": "" + }, + { + "moduleCode": "MA5217", + "title": "Graduate Complex Analysis", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "MA4247 Complex Analysis II", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA5218", + "title": "Graduate Algebra IIB", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA5203 or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA5219", + "title": "Logic and Foundation of Mathematics I", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA4207 or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA5220", + "title": "Logic and Foundation of Mathematics II", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA3205 and MA4207, or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA5232", + "title": "Modeling and Numerical Simulations", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MA5233", + "title": "Computational Mathematics", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA3228 or MA4255 or MA4230 or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA5235", + "title": "Advanced Graph Theory", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA4235 or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA5236", + "title": "Homology Theory", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA5209 or MA5210 or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA5238", + "title": "Fourier Analysis", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA5205 or MA3266 or MA3266S or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA5240", + "title": "Finite Element Method", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA5233 or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA5241", + "title": "Computational Harmonic Analysis", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA4229 or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA5242", + "title": "Wavelets", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA4229", + "corequisite": "" + }, + { + "moduleCode": "MA5243", + "title": "Advanced Mathematical Programming", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA3236 or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA5244", + "title": "Advanced Topics in Operations Research", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Variable, depending on choice of topics or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA5245", + "title": "Advanced Financial Mathematics", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA4269 or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA5248", + "title": "Stochastic Analysis in Mathematical Finance", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA4262 or MA3245 or MA4269 or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA5249", + "title": "Stochastic Processes and Algorithms", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "EE5137, BDC6306, MA4251", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA2216 or Departmental Approval", + "corequisite": "" + }, + { + "moduleCode": "MA5250", + "title": "Computational Fluid Dynamics", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA5251", + "title": "Spectral Methods and Applications", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Department approval", + "corequisite": "" + }, + { + "moduleCode": "MA5252", + "title": "Methods of Applied Mathematics", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA4221 or MA4252 or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA5253", + "title": "Riemann Surfaces", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA4247 or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA5259", + "title": "Probability Theory I", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "ST4237, ST5214", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA3207H or MA3207 or MA4262 or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA5260", + "title": "Probability Theory II", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "ST5205", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA5259 or ST5214 or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA5261", + "title": "Applied Stochastic Processes", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA3238 or ST3236", + "corequisite": "" + }, + { + "moduleCode": "MA5262", + "title": "Stochastic Operations Research Models", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA3237 or MA3253", + "corequisite": "" + }, + { + "moduleCode": "MA5264", + "title": "Computational Molecular Biology Ii", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA3259", + "corequisite": "" + }, + { + "moduleCode": "MA5265", + "title": "Advanced Numerical Analysis", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(MA2101 or MA2101S) and MA2213", + "corequisite": "" + }, + { + "moduleCode": "MA5266", + "title": "Optimization", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA2101", + "corequisite": "" + }, + { + "moduleCode": "MA5267", + "title": "Stochastic Calculus", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA5260 or Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA5268", + "title": "Theory and algorithms for nonlinear optimization", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "IE5268", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA3252 Linear and Network Optimisation or BDC6111/IE6001 Foundations on Optimization or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA5269", + "title": "Optimal Stopping and Stochastic Control in Finance", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval for non-PhD students.", + "corequisite": "" + }, + { + "moduleCode": "MA5295", + "title": "Dissertation For Msc By Coursework", + "moduleCredit": 8, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval (for students in 2006/07 and later cohorts who are enrolled in M.Sc. in Mathematics by course work)", + "corequisite": "" + }, + { + "moduleCode": "MA5401", + "title": "Graduate Internship in Mathematics I", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "MA5402 Graduate Internship in Mathematics II", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MA5402", + "title": "Graduate Internship in Mathematics II", + "moduleCredit": 8, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "MA5401 Graduate Internship in Mathematics I", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MA6201", + "title": "Topics in Algebra and Number Theory I", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA6202", + "title": "Topics in Algebra and Number Theory Ii", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA6205", + "title": "Topics in Analysis I", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Variable, depending on choice of topics or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA6206", + "title": "Topics in Analysis Ii", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA6211", + "title": "Topics in Geometry and Topology I", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA6212", + "title": "Topics in Geometry and Topology II", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA6215", + "title": "Topics in Differential Equations", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA6216", + "title": "Advanced Dynamical Systems", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA4233 or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA6217", + "title": "Homotopy Theory", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA5236 or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA6219", + "title": "Recursion Theory", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA5219 or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA6220", + "title": "Model Theory", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA5219 or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA6221", + "title": "Topics in Combinatorics", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA6222", + "title": "Topics in Logic I", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval.", + "corequisite": "" + }, + { + "moduleCode": "MA6223", + "title": "Topics in Logic II", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval.", + "corequisite": "" + }, + { + "moduleCode": "MA6225", + "title": "Topics in Coding Theory and Cryptography", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA6235", + "title": "Topics in Financial Mathematics", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA6241", + "title": "Topics in Numerical Methods", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MA6251", + "title": "Topics in Applied Mathematics I", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MA6252", + "title": "Topics in Applied Mathematics Ii", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MA6253", + "title": "Conic Programming", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA6291", + "title": "Topics in Mathematics I", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA6292", + "title": "Topics in Mathematics Ii", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MA6293", + "title": "Topics in Mathematics Iii", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "MB5002", + "title": "External Institution Module 2", + "moduleCredit": 2, + "department": "Mechanobiology Institute (MBI)", + "faculty": "Mechanobiology Institute (MBI)", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MB5003", + "title": "External Institution Module 3", + "moduleCredit": 3, + "department": "Mechanobiology Institute (MBI)", + "faculty": "Mechanobiology Institute (MBI)", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MB5004", + "title": "External Institution Module 4", + "moduleCredit": 4, + "department": "Mechanobiology Institute (MBI)", + "faculty": "Mechanobiology Institute (MBI)", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MB5006", + "title": "External Institution Module 6", + "moduleCredit": 6, + "department": "Mechanobiology Institute (MBI)", + "faculty": "Mechanobiology Institute (MBI)", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MB5008", + "title": "External Institution Module 8", + "moduleCredit": 8, + "department": "Mechanobiology Institute (MBI)", + "faculty": "Mechanobiology Institute (MBI)", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MB5010", + "title": "External Institution Module 10", + "moduleCredit": 10, + "department": "Mechanobiology Institute (MBI)", + "faculty": "Mechanobiology Institute (MBI)", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MB5012", + "title": "External Institution Module 12", + "moduleCredit": 12, + "department": "Mechanobiology Institute (MBI)", + "faculty": "Mechanobiology Institute (MBI)", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MB5101", + "title": "The Cell as a Machine", + "moduleCredit": 4, + "department": "Mechanobiology Institute (MBI)", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Basic Physical Chemistry, Calculus, Biology, Graduate standing or approval of the module coordinator.", + "corequisite": "" + }, + { + "moduleCode": "MB5102", + "title": "Topics in Mechanobiology", + "moduleCredit": 4, + "department": "Mechanobiology Institute (MBI)", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Basic Physical Chemistry, Calculus, Biology, Graduate\nstanding, MB5101 or approval of the module coordinator.", + "corequisite": "" + }, + { + "moduleCode": "MB5103", + "title": "Research Seminars in Mechanobiology", + "moduleCredit": 2, + "department": "Mechanobiology Institute (MBI)", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Designed for 2nd year doctoral students", + "corequisite": "" + }, + { + "moduleCode": "MB5104", + "title": "Integrative Approach To Understand Cell Functions", + "moduleCredit": 4, + "department": "Mechanobiology Institute (MBI)", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MB5105", + "title": "Microfabrication for Biologists", + "moduleCredit": 2, + "department": "Mechanobiology Institute (MBI)", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MCI5001", + "title": "Clinical Epidemiology I", + "moduleCredit": 4, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "Only students enrolled in the Master of Clinical Investigation (MCI) programme can apply. All other students will be considered on a case-by-case basis, and approval has to be sought from both the module coordinator and the MCI programme director", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MCI5006", + "title": "Clinical Epidemiology and Biostatistics Ii", + "moduleCredit": 4, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "Only students enrolled in the Master of Clinical Investigation (MCI) programme can apply. All other students will be considered on a case-by-case basis, and approval has to be sought from both the module coordinator and the MCI programme director", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MCI5007", + "title": "Scientific Writing", + "moduleCredit": 2, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "Only students enrolled in the Master of Clinical Investigation (MCI) programme can apply. All other students will be considered on a case-by-case basis, and approval has to be sought from both the module coordinator and the MCI programme director", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MCI5008", + "title": "Research Project", + "moduleCredit": 8, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MCI5009", + "title": "Health Services Research Methods for Clinicians", + "moduleCredit": 4, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MD1120A", + "title": "Biochemistry", + "moduleCredit": 1, + "department": "Biochemistry", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MD1130A", + "title": "Physiology", + "moduleCredit": 1, + "department": "Physiology", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MD1140", + "title": "Normal Structure and Function", + "moduleCredit": 1, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MD2000", + "title": "Microbiology & Pathology", + "moduleCredit": 1, + "department": "Microbiology and Immunology", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MD2112A", + "title": "Microbiology", + "moduleCredit": 1, + "department": "Microbiology and Immunology", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MD2140", + "title": "Abnormal Structure and Function", + "moduleCredit": 1, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "Passed First Professional M.B.,B.S Examination\nMD1140 Normal Structure and Function", + "corequisite": "" + }, + { + "moduleCode": "MD2141A", + "title": "Pathology", + "moduleCredit": 1, + "department": "Pathology", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MD2150", + "title": "Clinical Skills Foundation Programme", + "moduleCredit": null, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "Pass First Professional M.B.,B.S. Examination", + "corequisite": "" + }, + { + "moduleCode": "MD3000", + "title": "Medicine", + "moduleCredit": 1, + "department": "Medicine", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MD3011A", + "title": "Medicine", + "moduleCredit": 1, + "department": "Medicine", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MD3012A", + "title": "Paediatrics", + "moduleCredit": 1, + "department": "Paediatrics", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MD3021A", + "title": "Surgery", + "moduleCredit": 1, + "department": "Surgery", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MD3140", + "title": "Core Clinical Practice", + "moduleCredit": 1, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "Pass Second Professional M.B.,B.S. Examination", + "corequisite": "" + }, + { + "moduleCode": "MD4140", + "title": "Acute and Specialty Clinical Practice", + "moduleCredit": 1, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "N.A.", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "MD3140 Core Clinical Practice", + "corequisite": "N.A." + }, + { + "moduleCode": "MD4150", + "title": "Community Health Posting", + "moduleCredit": 1, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MD5140", + "title": "Medicine", + "moduleCredit": 1, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "Pass Fourth Professional M.B.,B.S. Examination\nMD4140 Acute and Specialty Clinical Practice", + "corequisite": "" + }, + { + "moduleCode": "MD5150", + "title": "Surgery", + "moduleCredit": 1, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "Pass Fourth Professional M.B.,B.S. Examination\nMD4140 Acute and Specialty Clinical Practice", + "corequisite": "" + }, + { + "moduleCode": "MD5160", + "title": "Electives", + "moduleCredit": 1, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "Pass Second Professional M.B. B.S. Examination", + "corequisite": "" + }, + { + "moduleCode": "MD5171", + "title": "Urop", + "moduleCredit": 1, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MDG5102", + "title": "Techniques in Biomedical Research", + "moduleCredit": 4, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MDG5105", + "title": "Clinical Research Methodology", + "moduleCredit": 4, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MDG5108", + "title": "Biostatistics For Basic Research", + "moduleCredit": 4, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MDG5204", + "title": "Advanced Topics in Pharmacology", + "moduleCredit": 4, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MDG5205", + "title": "Neuroscience", + "moduleCredit": 4, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MDG5207", + "title": "Clinical immunology and Immunotherapeutics", + "moduleCredit": 4, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MDG5214", + "title": "Research Skills", + "moduleCredit": 4, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MDG5215", + "title": "Applied Bioethics and Biolaw", + "moduleCredit": 4, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MDG5216", + "title": "Ethical, Legal and Economic issues in Health Policies (in Asia)", + "moduleCredit": 4, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MDG5218", + "title": "Biochemical and genetic approaches to understanding cell biology", + "moduleCredit": 4, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "No special pre-requisites", + "corequisite": "" + }, + { + "moduleCode": "MDG5219", + "title": "Medical Mycology: Core Principles and Recent Interests", + "moduleCredit": 4, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Basic understanding of Microbiology and Immunology at the undergraduate level", + "corequisite": "" + }, + { + "moduleCode": "MDG5220", + "title": "Array and Omics", + "moduleCredit": 2, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "MDG5214", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Students should have basic knowledge of protein\nbiochemistry and DNA biology", + "corequisite": "" + }, + { + "moduleCode": "MDG5221", + "title": "Viral vectors for manipulating gene expression", + "moduleCredit": 2, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MDG5222", + "title": "Cardiovascular and Metabolic Diseases", + "moduleCredit": 4, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Students should preferably working on a research project related to cardiovascular or metabolic diseases.", + "corequisite": "" + }, + { + "moduleCode": "MDG5223", + "title": "Stem Cells and Regenerative Medicine", + "moduleCredit": 2, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MDG5224", + "title": "Animal Models of Human Diseases", + "moduleCredit": 2, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MDG5225", + "title": "Fundamentals of Molecular Imaging", + "moduleCredit": 4, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "“A” level understanding on physics, chemistry and biology", + "corequisite": "" + }, + { + "moduleCode": "MDG5226", + "title": "Antimicrobial resistance and drug discovery", + "moduleCredit": 4, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MDG5227", + "title": "Bio-Innovation & Entrepreneurship", + "moduleCredit": 4, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Open to students from Life Sciences, Dental, Medicine, School of Public Health, Nursing (ie. Life Sciences, BDS, MBBS, BSc (Pharm), BNursing), and Biomedical Engineering. In teamwork students must be able to develop and present a business-idea & -plan in the biotech\nor life sciences field.", + "corequisite": "" + }, + { + "moduleCode": "MDG5228", + "title": "Hybrid Imaging: An Advanced Imaging Concept and Modality", + "moduleCredit": 2, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "“A” level understanding on physics, chemistry and biology", + "corequisite": "" + }, + { + "moduleCode": "MDG5229", + "title": "Advanced Topics in Signal Transduction", + "moduleCredit": 4, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MDG5230", + "title": "Bioethics: Core Philosophical and Empirical Approaches", + "moduleCredit": 4, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MDG5231", + "title": "Topics in Biomedical and Behavioural Research Ethics", + "moduleCredit": 4, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MDG5232", + "title": "Case studies in the biotechnology industry", + "moduleCredit": 2, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Open to all NUSMed postgraduate students", + "corequisite": "" + }, + { + "moduleCode": "MDG5233", + "title": "Current Topics in Drug Design and Development", + "moduleCredit": 2, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MDG5234", + "title": "Independent Study Module (CBmE)", + "moduleCredit": 4, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Please refer to CBmE for the ISM prerequites.", + "corequisite": "" + }, + { + "moduleCode": "MDG5236", + "title": "Pathways to Biomedical Innovation and Enterprise", + "moduleCredit": 2, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Open to students from Life Sciences, Dental, Medicine,\nSchool of Public Health, Nursing (ie. Life Sciences, BDS,\nMBBS, BSc (Pharm), BNursing), and Biomedical\nEngineering. In teamwork students must be able to\ndevelop and present an applied research proposal in the\nbiotech or life sciences field.", + "corequisite": "" + }, + { + "moduleCode": "MDG5237", + "title": "Biomedical Innovation Capstone", + "moduleCredit": 2, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "MDG5227 Bio-Innovation & Entrepreneurship\nMDG5236 Principles & Concepts in Translational\nResearch", + "corequisite": "" + }, + { + "moduleCode": "MDG5238", + "title": "Clinical Pharmacology and Pharmacotherapeutics I", + "moduleCredit": 4, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "NUR5801G Integrated Clinical Decision Making and Management I" + }, + { + "moduleCode": "MDG5239", + "title": "Clinical Pharmacology and Pharmacotherapeutics II", + "moduleCredit": 4, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "MDG5238 Clinical Pharmacology and Pharmacotherapeutics I", + "corequisite": "" + }, + { + "moduleCode": "MDG5240", + "title": "Independent Study Module –Innovation Capstone Project", + "moduleCredit": 2, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "MDG5236 Principles and Concepts in Translational Research or MDG5237 Biomedical Innovation Capstone", + "corequisite": "" + }, + { + "moduleCode": "MDG5300", + "title": "Molecular Basis of Appetite and Nutrient Intake", + "moduleCredit": 4, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Basic knowledge of biochemistry, cell biology and general physiology is required.", + "corequisite": "" + }, + { + "moduleCode": "MDG5302", + "title": "Independent Study Module (PCM)", + "moduleCredit": 4, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MDG5771", + "title": "Graduate Research Seminar", + "moduleCredit": 4, + "department": "NUS Medicine Dean's Office", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME1102", + "title": "Engineering Principles and Practice I", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "EG1111", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME2101", + "title": "Fundamentals Of Mechanical Design", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME2101E", + "title": "Fundamentals of Mechanical Design", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TM2101, TME2101", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME2102", + "title": "Engineering Innovation and Modelling", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME2103", + "title": "Engineering Visualization & Modeling", + "moduleCredit": 3, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME2104", + "title": "Engineering Principles and Practice II", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "EG1112", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME2112", + "title": "Strength of Materials", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EG1111 Engineering Principles and Practice I (for Cohort 18/19 & before)\nME1102 Engineering Principles and Practice I (for Cohort 19/20 and after)", + "corequisite": "" + }, + { + "moduleCode": "ME2113", + "title": "Mechanics Of Materials I", + "moduleCredit": 3, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EG1109FC/EG1109/CE1109X", + "corequisite": "" + }, + { + "moduleCode": "ME2114", + "title": "Mechanics of Materials", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME2112 Strength of Materials", + "corequisite": "" + }, + { + "moduleCode": "ME2114E", + "title": "Mechanics of Materials II", + "moduleCredit": 3, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TM1111, TME2114, ME2114", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME2112 or equivalent", + "corequisite": "" + }, + { + "moduleCode": "ME2115", + "title": "Mechanics Of Machines", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME1102", + "corequisite": "" + }, + { + "moduleCode": "ME2121", + "title": "Engineering Thermodynamics and Heat Transfer", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME1102", + "corequisite": "" + }, + { + "moduleCode": "ME2121E", + "title": "Engineering Thermodynamics", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TM1121, TME2121", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC1431 or PC1431FC or PC1431X or equivalent", + "corequisite": "" + }, + { + "moduleCode": "ME2134", + "title": "Fluid Mechanics I", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME1102", + "corequisite": "" + }, + { + "moduleCode": "ME2134E", + "title": "Fluid Mechanics I", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TM1131, TME2134", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME2135", + "title": "Intermediate Fluid Mechanics", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME2134", + "corequisite": "" + }, + { + "moduleCode": "ME2135E", + "title": "Fluid Mechanics II", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TM2131, TME2135, ME2135", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME2134E", + "corequisite": "" + }, + { + "moduleCode": "ME2142", + "title": "Feedback Control Systems", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "ME2142E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1512 and MA1513", + "corequisite": "" + }, + { + "moduleCode": "ME2142E", + "title": "Feedback Control Systems", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TM3142, TME2142", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TM2401", + "corequisite": "" + }, + { + "moduleCode": "ME2143", + "title": "Sensors & Actuators", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME2143E", + "title": "Sensors and Actuators", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TM2141, TME2143, ME2143", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC1431 or PC1431FC or PC1431X or equivalent", + "corequisite": "" + }, + { + "moduleCode": "ME2151", + "title": "Principles of Mechanical Eng. Materials", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "MLE1101”.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "None for engineering students", + "corequisite": "" + }, + { + "moduleCode": "ME2151E", + "title": "Principles of Mechanical Eng. Materials", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TM1151, TME2151", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME2162", + "title": "Manufacturing Processes", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME2162E", + "title": "Manufacturing Processes", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "TM2162, TME3162, TME3162, ME3162E", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME3000", + "title": "Independent Study 1", + "moduleCredit": 2, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME3001", + "title": "Independent Study 2", + "moduleCredit": 2, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME3101", + "title": "Mechanical Systems Design I", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME2101", + "corequisite": "" + }, + { + "moduleCode": "ME3102", + "title": "Mechanical Systems Design II", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME3101", + "corequisite": "" + }, + { + "moduleCode": "ME3103", + "title": "Mechanical Systems Design", + "moduleCredit": 6, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "ME3101 Mechanical Systems Design I\nME3102 Mechanical Systems Design II", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME2101 Fundamentals of Mechanical Design\nME2103 Engineering Visualisation and Modelling", + "corequisite": "" + }, + { + "moduleCode": "ME3112E", + "title": "Mechanics of Machines", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TM2112, TME3112", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME3122", + "title": "Heat Transfer", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME3122E", + "title": "Heat Transfer", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TM2122, TME3122, ME2143", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME3211", + "title": "Mechanics Of Solids", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME2114", + "corequisite": "" + }, + { + "moduleCode": "ME3211E", + "title": "Mechanics of Solids", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TM3211, TME3211", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME2114E", + "corequisite": "" + }, + { + "moduleCode": "ME3221", + "title": "Sustainable EnergyConversion", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME2121", + "corequisite": "" + }, + { + "moduleCode": "ME3231", + "title": "Compressible And Unsteady Flow", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME2134", + "corequisite": "" + }, + { + "moduleCode": "ME3232", + "title": "Compressible Flow", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "ME3231", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME2134 Fluid Mechanics I", + "corequisite": "" + }, + { + "moduleCode": "ME3233", + "title": "Unsteady Flow in Fluid Systems", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "ME3231", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME2134 Fluid Mechanics I", + "corequisite": "" + }, + { + "moduleCode": "ME3233E", + "title": "Unsteady Flow in Fluid Systems", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "ME3233 Unsteady Flow in Fluid Systems\nTME3233", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME2135/ME2135E or equivalent", + "corequisite": "" + }, + { + "moduleCode": "ME3241", + "title": "Microprocessor Applications", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME3241E", + "title": "Microprocessor Applications", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TM3241, TME3241", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "ME2143E" + }, + { + "moduleCode": "ME3242", + "title": "Automation", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME3242E", + "title": "Automation", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TM3242, TME3242", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "ME2143E" + }, + { + "moduleCode": "ME3243", + "title": "Robotic System Design", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME3251", + "title": "Materials For Engineers", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME2151", + "corequisite": "" + }, + { + "moduleCode": "ME3251E", + "title": "Materials For Engineers", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TM3251, TME3251, ME2143, ME3252", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME2151E", + "corequisite": "" + }, + { + "moduleCode": "ME3252", + "title": "Materials for Mechanical Engineering", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "ME2151 Principles of Mechanical Engineering Materials\nME3251 Materials for Engineers", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME3261", + "title": "Computer-Aided Design And Manufacturing", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "ME2162/ME3162" + }, + { + "moduleCode": "ME3261E", + "title": "Computer-Aided Design and Manufacturing", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TM3261, TME3261", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "ME3162E, TM2162, ME2162E and TME2162" + }, + { + "moduleCode": "ME3263", + "title": "Design For Manufacturing And Assembly", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "ME2162/ME3162" + }, + { + "moduleCode": "ME3263E", + "title": "Design for Manufacturing and Assembly", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TM3263, TME3263", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "ME3162E, TM2162, ME2162E and TME2162" + }, + { + "moduleCode": "ME3281", + "title": "Microsystems Design And Applications", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME3291", + "title": "Numerical Methods In Engineering", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1505, MA1512 and MA1513.", + "corequisite": "" + }, + { + "moduleCode": "ME3661", + "title": "Technical Elective", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME3662", + "title": "Technical Elective", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME3663", + "title": "Exchange Technical Elective", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME3991", + "title": "OOGT Exchange Elective 1", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME3992", + "title": "OOGT Exchange Elective 2", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME3993", + "title": "OOGT Exchange Elective 3", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME3995", + "title": "Technical Elective", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME4101", + "title": "Bachelor Of Engineering Dissertation", + "moduleCredit": 12, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "Stage 4 standing", + "corequisite": "" + }, + { + "moduleCode": "ME4101A", + "title": "Bachelor Of Engineering Dissertation", + "moduleCredit": 8, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "Stage 4 standing", + "corequisite": "" + }, + { + "moduleCode": "ME4102", + "title": "Standards in Mechanical Engineering", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME2162, ME3162", + "corequisite": "" + }, + { + "moduleCode": "ME4103", + "title": "Mechanical Engineering and Society", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME4105", + "title": "Specialization Study Module", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For students admitted to a specialisation", + "corequisite": "" + }, + { + "moduleCode": "ME4212", + "title": "Aircraft Structures", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME4213", + "title": "Vibration Theory And Applications", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME4213E", + "title": "Vibration Theory & Applications", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "TM3213, TME4213", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME3112E", + "corequisite": "" + }, + { + "moduleCode": "ME4214", + "title": "Vehicle Dynamics", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME3112 – Mechanics of Machines", + "corequisite": "" + }, + { + "moduleCode": "ME4223", + "title": "Thermal Environmental Engineering", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME2121", + "corequisite": "" + }, + { + "moduleCode": "ME4223E", + "title": "Thermal Environmental Engineering", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TM3223, TME4223", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME2121E & ME3122E", + "corequisite": "" + }, + { + "moduleCode": "ME4225", + "title": "Applied Heat Transfer", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME3122", + "corequisite": "" + }, + { + "moduleCode": "ME4225E", + "title": "Applied Heat Transfer", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TM4225, TME4225, ME2143", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME3122E", + "corequisite": "" + }, + { + "moduleCode": "ME4226", + "title": "Energy and Thermal Systems", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME2121", + "corequisite": "" + }, + { + "moduleCode": "ME4227", + "title": "Internal Combustion Engines", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME4231", + "title": "Aerodynamics", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME2134 Fluid Mechanics I", + "corequisite": "" + }, + { + "moduleCode": "ME4233", + "title": "Computational Methods In Fluid Mechanics", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME2134 Fluid Mechanics I", + "corequisite": "" + }, + { + "moduleCode": "ME4241", + "title": "Aircraft Performance, Stability and Control", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME4242", + "title": "Soft Robotics", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME4245", + "title": "Robot Mechanics and Control", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME2142", + "corequisite": "ME2142" + }, + { + "moduleCode": "ME4245E", + "title": "Robot Mechanics and Control", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TM4245, TME4245", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME2142E for ME students\nEE2010E/EE3331E for EE students", + "corequisite": "" + }, + { + "moduleCode": "ME4246", + "title": "Modern Control System", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME2142", + "corequisite": "" + }, + { + "moduleCode": "ME4247", + "title": "Introduction to Fuzzy/Neural Systems", + "moduleCredit": 0, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME4251E", + "title": "Thermal Engineering Of Materials", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TM4251, TME4251", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME2151E", + "corequisite": "" + }, + { + "moduleCode": "ME4253", + "title": "Biomaterials Engineering", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME4254E", + "title": "Materials in Engineering Design", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "TM4254, TME4254", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME2151E", + "corequisite": "" + }, + { + "moduleCode": "ME4255", + "title": "Materials Failure", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME2151", + "corequisite": "" + }, + { + "moduleCode": "ME4256", + "title": "Functional Materials and Devices", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME2151, ME2143", + "corequisite": "" + }, + { + "moduleCode": "ME4256E", + "title": "Functional Materials and Devices", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "ME4256, TME4256", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME2151E, ME2143E", + "corequisite": "" + }, + { + "moduleCode": "ME4261", + "title": "Tool Engineering", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "ME3162" + }, + { + "moduleCode": "ME4261E", + "title": "Tool Engineering", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TM4261, TME4261", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "ME3162E, TM2162, ME2162E and TME2162" + }, + { + "moduleCode": "ME4262", + "title": "Automation In Manufacturing", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "ME3162" + }, + { + "moduleCode": "ME4262E", + "title": "Automation in Manufacturing", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TM4262, TME4262", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "ME3162E, TM2162, ME2162E and TME2162" + }, + { + "moduleCode": "ME4263", + "title": "Fundamentals of Product Development", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 3 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME4264", + "title": "Automobile Design & Engineering", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME 2113 – Mechanics of Materials", + "corequisite": "" + }, + { + "moduleCode": "ME4265", + "title": "Automotive Body & Chassis Engineering", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME 2113 – Mechanics of Materials", + "corequisite": "" + }, + { + "moduleCode": "ME4283E", + "title": "Micro-Fabrication Processes", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "TM4283, TME4283", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME4291", + "title": "Finite Element Analysis", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1505 (Mathematics I)", + "corequisite": "" + }, + { + "moduleCode": "ME4661", + "title": "Exchange Elective", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME4662", + "title": "Exchange Technical Elective", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME4663", + "title": "Exchange Technical Elective", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME4991", + "title": "OOGT Exchange Elective 1", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME4992", + "title": "OOGT Exchange Elective 2", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME4993", + "title": "OOGT Exchange Elective 3", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME4994", + "title": "OOGT Exchange Elective 4", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME4995", + "title": "Exchange Elective 5", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME5001", + "title": "Mechanical Engineering Project", + "moduleCredit": 8, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME5001A", + "title": "Mechanical Engineering Project", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME5101", + "title": "Applied Stress Analysis", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME5103", + "title": "Plates and Shells", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "CE5512\nCE5514", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME5105", + "title": "Shock and Vibration Control", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME5106", + "title": "Engineering Acoustics", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME5107", + "title": "Vibration Theory and Applications", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME5161", + "title": "Optical Techniques in Experimental Stress Analysis", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME5201", + "title": "Thermal Systems Design", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME5202", + "title": "Industrial Transfer Processes", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME5204", + "title": "Air Conditioning and Building Automation", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME5205", + "title": "Energy Engineering", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME5207", + "title": "Solar Energy Systems", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME5300A", + "title": "Special Project in Computation and Modelling I", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Complete at least three (3) core modules from the core module list.", + "corequisite": "" + }, + { + "moduleCode": "ME5300B", + "title": "Special Project in Computation and Modelling II", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME5300A Special Project in Computation and Modelling I", + "corequisite": "" + }, + { + "moduleCode": "ME5301", + "title": "Flow Systems Analysis", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "ME2134 Fluid Mechanics I and ME2135 Fluid Mechanics II or equivalent", + "corequisite": "" + }, + { + "moduleCode": "ME5302", + "title": "Computational Fluid Mechanics", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "ME2135", + "corequisite": "" + }, + { + "moduleCode": "ME5303", + "title": "Industrial Aerodynamics", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME5304", + "title": "Experimental Fluid Mechanics", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "ME4234", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "ME2135 Fluid Mechanics II", + "corequisite": "" + }, + { + "moduleCode": "ME5305", + "title": "Fundamentals of Aeroelasticity", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "ME4235", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "ME2134 Fluid Mechanics I\nME2114 Mechanics of Materials II", + "corequisite": "" + }, + { + "moduleCode": "ME5309", + "title": "Aircraft Engines and Rocket Propulsion", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "ME5308", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "ME2134 Fluid Mechanics I or equivalent", + "corequisite": "" + }, + { + "moduleCode": "ME5361", + "title": "Advanced Computational Fluid Dynamics", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME5362", + "title": "Advanced Fluid Transients Computation and Modelling", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME5401", + "title": "Linear Systems", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "MCH5201, EE5101/EE5101R", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "[Applicable to UG level students only] ME2142 or EE3331C; or\n[Advisory applicable to GD level students only] Requires background knowledge such as EE4302 or ME4246", + "corequisite": "" + }, + { + "moduleCode": "ME5402", + "title": "Advanced Robotics", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "MCH5209, EE5106/EE5106R", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "[Applicable to UG level students only] ME2142 or EE3331C; or\n\n[Advisory applicable to GD level students only] Requires background knowledge in linear algebra & feedback control.", + "corequisite": "" + }, + { + "moduleCode": "ME5403", + "title": "Computer Control Systems", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "EE5103/EE5103R, MCH5103, TD5241", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "([Applicable to UG level students only] EE2023 or EE3331C or ME2142); or\n([Applicable to GD level students only] Requires background knowledge such as EE2010, EE2023, EE3331C, ME2142 or equivalent).", + "corequisite": "" + }, + { + "moduleCode": "ME5404", + "title": "Neural Networks", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "EE5904/EE5904R, MCH5202", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME5405", + "title": "Machine Vision", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME5405A", + "title": "Machine Vision Fundamentals", + "moduleCredit": 2, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "ME5405", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "Linear Algebra, Calculus", + "corequisite": "" + }, + { + "moduleCode": "ME5406", + "title": "Deep Learning for Robotics", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME5408", + "title": "Kinematics of Robot Manipulators", + "moduleCredit": 2, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "ME5402/EE5106", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "Linear Algebra, Calculus", + "corequisite": "" + }, + { + "moduleCode": "ME5506", + "title": "Corrosion of Materials", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME5513", + "title": "Fracture And Fatigue Of Materials", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "OT5208 Fatigue and Fracture for Offshore Structures\nME5513A Fatigue Analysis for Additive Manufacturing", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME5513A", + "title": "Fatigue Analysis for Additive Manufacturing", + "moduleCredit": 2, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "ME 5513: Fracture and Fatigue of Materials", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME5516", + "title": "Emerging Energy Conversion and Storage Technologies", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME5600A", + "title": "Project in Advanced Manufacturing I", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME5608 Additive and Non-Conventional Manufacturing\nProcesses, and\nME5612 Computer Aided Product Development or\nME6505 Engineering Materials in Medicine", + "corequisite": "" + }, + { + "moduleCode": "ME5600B", + "title": "Project in Advanced Manufacturing II", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME5600A Project in Advanced Manufacturing I", + "corequisite": "" + }, + { + "moduleCode": "ME5607", + "title": "Smart Factories", + "moduleCredit": 2, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "ME4262 and ME4262E", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME5608", + "title": "Additive and Non-Conventional Manufacturing Processes", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "ME6605\nME5608A \nME5608B", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME5608A", + "title": "Principles and Processes of Additive Manufacturing", + "moduleCredit": 2, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "ME5608: Additive and non-conventional manufacturing processes", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME5608B", + "title": "Hybrid Manufacturing", + "moduleCredit": 2, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "ME5608: Additive and Non-Conventional Manufacturing Processes", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME5609", + "title": "Rapid Response Manufacturing", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME5610", + "title": "Product Development", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME5611", + "title": "Sustainable Product Design & Manufacturing", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME5612", + "title": "Computer Aided Product Development", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "ME6606", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME5613", + "title": "Optimal Design of Multi-Functional Structures", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Finite Element Methods or Structural Analysis or Solid Mechanics or an equivalent", + "corequisite": "" + }, + { + "moduleCode": "ME5614A", + "title": "Special Project in Additive Manufacturing", + "moduleCredit": 2, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "Knowledge in principle of additive manufacturing; preprocessing\nand post-processing for additive manufacturing", + "corequisite": "" + }, + { + "moduleCode": "ME5615A", + "title": "Design and Pre-Processing for Additive Manufacturing", + "moduleCredit": 2, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME5615B", + "title": "Post-processing for Additive Manufacturing", + "moduleCredit": 2, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "ME6604 Modelling of Machining Processes", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME5666", + "title": "Industrial Attachment", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME5701", + "title": "Mathematics for Engineering Research", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "B.Eng. (Second Class Lower)", + "corequisite": "" + }, + { + "moduleCode": "ME5999", + "title": "Graduate Seminars", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME6101", + "title": "Research Topics in Applied Mechanics", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME6102", + "title": "Topics in Applied Mechanics: Mechanics of Materials", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME6103", + "title": "Optical Measurement and Quality Inspection", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME6104", + "title": "Fracture Mechanics and Applications", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME6105", + "title": "Continuum Mechanics", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME6107", + "title": "Plasticity and Inelastic Deformation", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME6105: Continuum mechanics (Pre-requisite)", + "corequisite": "" + }, + { + "moduleCode": "ME6201", + "title": "Research Topics in Thermodynamics and Heat Transfer", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME6202", + "title": "Topics in Thermodynamics and Heat Transfer", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME6203", + "title": "Mass Transport", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME6204", + "title": "Convective Heat Transfer", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME6205", + "title": "Advanced Topics in Heat and Mass Transfer", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "ME5202", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME6301", + "title": "Research Topics in Fluid Dynamics", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME6302", + "title": "Topics in Fluid Dynamics", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME6302A", + "title": "Topics in Fluid Dynamics: Theory of Hydrodynamic Stability", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME4233 (Applicable to undergraduate students only)", + "corequisite": "" + }, + { + "moduleCode": "ME6303", + "title": "Advanced Fluid Dynamics", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME6304", + "title": "Turbulence in Fluid Flows", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME6401", + "title": "Topics in Mechatronics 1", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME6402", + "title": "Topics in Mechatronics 2", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME6405", + "title": "Autonomous Mobile Robotics", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME6406", + "title": "Optimization Techniques for Dynamical Systems", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME6501", + "title": "Research Topics in Materials Science", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME6502", + "title": "Topics in Material Sciences", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME6503", + "title": "Theory of Transformations in Metals", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME6504", + "title": "Defects & Dislocations in Solids", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME6505", + "title": "Engineering Materials in Medicine", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME6508", + "title": "Atomistic Simulations of Materials", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME6601", + "title": "Research Topics in Manufacturing", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME6602", + "title": "Topics in Manufacturing", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME6604", + "title": "Modelling of Machining Processes", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME6607", + "title": "Optimal Design of Multi-Functional Structures", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "ME5613", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Finite Element Methods or Structural Analysis or Solid Mechanics or an equivalent", + "corequisite": "" + }, + { + "moduleCode": "ME6701", + "title": "Topics in Mechanical Engineering Research 1", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ME6999", + "title": "Doctoral Seminars", + "moduleCredit": 8, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MHR5001", + "title": "Managing Human Resources in the Asia Pacific", + "moduleCredit": 4, + "department": "NUS Business School", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MHR5002", + "title": "Applied Organisational Research", + "moduleCredit": 4, + "department": "NUS Business School", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MHR5003", + "title": "Human Resource Planning, Staffing and Retention", + "moduleCredit": 4, + "department": "NUS Business School", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MHR6006", + "title": "International Human Resource Management", + "moduleCredit": 2, + "department": "NUS Business School", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MHR6008K", + "title": "Creating and Managing Knowledge in Organisations", + "moduleCredit": 2, + "department": "NUS Business School", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MIC2000", + "title": "Infection and Immunology", + "moduleCredit": 3, + "department": "Microbiology and Immunology", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "MIC1000", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MKT1003", + "title": "Principles of Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "Students who have taken EC3230/(EC2210) or CS3261/(IC3243) or PR4201 or BK2003 or BZ1003 or BH1003 are not allowed to take MKT1003.\n \nAll BSc(Real Estate) students are not allowed to take MKT1003.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MKT1003A", + "title": "Principles of Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have taken EC3230/(EC2210) or CS3261/(IC3243) or PR4201 or BK2003 or BZ1003 or BH1003 are not allowed to take MKT1003.\n \nAll BSc(Real Estate) students are not allowed to take MKT1003.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MKT1003B", + "title": "Principles of Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have taken EC3230/(EC2210) or CS3261/(IC3243) or PR4201 or BK2003 or BZ1003 or BH1003 are not allowed to take MKT1003.\n \nAll BSc(Real Estate) students are not allowed to take MKT1003.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MKT1003C", + "title": "Principles of Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have taken EC3230/(EC2210) or CS3261/(IC3243) or PR4201 or BK2003 or BZ1003 or BH1003 are not allowed to take MKT1003.\n \nAll BSc(Real Estate) students are not allowed to take MKT1003.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MKT1003D", + "title": "Principles of Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have taken EC3230/(EC2210) or CS3261/(IC3243) or PR4201 or BK2003 or BZ1003 or BH1003 are not allowed to take MKT1003.\n \nAll BSc(Real Estate) students are not allowed to take MKT1003.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MKT1003X", + "title": "Principles of Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have taken EC3230/(EC2210) or CS3261/(IC3243) or PR4201 or BK2003 or BZ1003 or BH1003 are not allowed to take MKT1003.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MKT1601", + "title": "Marketing Advanced Placement", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MKT1705", + "title": "Principles of Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "MKT1003; MKT1003X; RST and EMG students", + "attributes": [ + true, + true, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MKT1705A", + "title": "Principles of Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "MKT1003; MKT1003X; RST and EMG students", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MKT1705B", + "title": "Principles of Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "MKT1003; MKT1003X; RST and EMG students", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MKT1705C", + "title": "Principles of Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "MKT1003; MKT1003X; RST and EMG students", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MKT1705D", + "title": "Principles of Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "MKT1003; MKT1003X; RST and EMG students", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MKT1705X", + "title": "Principles of Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "MKT1003; MKT1003X; RST and EMG students", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MKT2401", + "title": "Asian Markets And Marketing Management", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MKT2401A", + "title": "Asian Markets And Marketing Management", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH2401 or BZ3601 or BK3200 or MKT2401B or MKT2401", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 or BH1003 or BZ1003 or BK2003", + "corequisite": "" + }, + { + "moduleCode": "MKT2401B", + "title": "Asian Markets And Marketing Management", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH2401 or BZ3601 or BK3200 or MKT2401A or MKT2401", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 or BH1003 or BZ1003 or BK2003", + "corequisite": "" + }, + { + "moduleCode": "MKT2401C", + "title": "Asian Markets And Marketing Management", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH2401 or BZ3601 or BK3200 or MKT2401A or MKT2401B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 or BH1003 or BZ1003 or BK2003", + "corequisite": "" + }, + { + "moduleCode": "MKT2411", + "title": "Retail Management", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH2411 or BZ3611 or BK3204", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 or BH1003 or BZ1003 or BK2003", + "corequisite": "" + }, + { + "moduleCode": "MKT2412", + "title": "Global Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH2412 or BZ3604 or BK3208", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003", + "corequisite": "" + }, + { + "moduleCode": "MKT2413", + "title": "Marketing Research", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH2413 or BZ3614 or BK3202 or MKT2413A or MKT2413B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 or BH1003 or BZ1003 or BK2003", + "corequisite": "" + }, + { + "moduleCode": "MKT2414", + "title": "Marketing Venture Challenge", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have any Level 3000 or above Marketing modules.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 Principles of Marketing", + "corequisite": "" + }, + { + "moduleCode": "MKT2711", + "title": "Marketing Venture Challenge", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have read or are reading any Level 3000 or above Marketing modules.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1705 Principles of Marketing", + "corequisite": "" + }, + { + "moduleCode": "MKT3401", + "title": "Marketing Strategy: Analysis and Practice", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 Marketing or MKT1003X Marketing", + "corequisite": "" + }, + { + "moduleCode": "MKT3401A", + "title": "Marketing Strategy: Analysis and Practice", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 Marketing or MKT1003X Marketing", + "corequisite": "" + }, + { + "moduleCode": "MKT3401B", + "title": "Marketing Strategy: Analysis and Practice", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 Marketing or MKT1003X Marketing", + "corequisite": "" + }, + { + "moduleCode": "MKT3402", + "title": "Consumer Behaviour", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "BH3420 or BZ3605 or BK3203 or MKT3402A or MKT3402B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 or BH1003 or BZ1003 or BK2003", + "corequisite": "" + }, + { + "moduleCode": "MKT3402A", + "title": "Consumer Behaviour", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "BH3402 or BZ3602 or BK3201 or MKT3402A or MKT3402B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 or BH1003 or BZ1003 or BK2003", + "corequisite": "" + }, + { + "moduleCode": "MKT3402B", + "title": "Consumer Behaviour", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "BH3402 or BZ3602 or BK3201 or MKT3402A or MKT3402B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 or BH1003 or BZ1003 or BK2003", + "corequisite": "" + }, + { + "moduleCode": "MKT3402C", + "title": "Consumer Behaviour", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH3420 or BZ3605 or BK3203 or MKT3402A or MKT3402B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 or BH1003 or BZ1003 or BK2003", + "corequisite": "" + }, + { + "moduleCode": "MKT3402D", + "title": "Consumer Behaviour", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH3420 or BZ3605 or BK3203 or MKT3402A or MKT3402B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 or BH1003 or BZ1003 or BK2003", + "corequisite": "" + }, + { + "moduleCode": "MKT3412", + "title": "Services Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH3412 or BH3412A or BH3412B or BZ3612 or BK3205 or MKT3412A or MKT3412B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 or BH1003 or BZ1003 or BK2003", + "corequisite": "" + }, + { + "moduleCode": "MKT3412A", + "title": "Services Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH3412 or BH3412A or BH3412B or BZ3612 or BK3205", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 or BH1003 or BZ1003 or BK2003", + "corequisite": "" + }, + { + "moduleCode": "MKT3412B", + "title": "Services Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH3412 or BH3412A or BH3412B or BZ3612 or BK3205", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 or BH1003 or BZ1003 or BK2003", + "corequisite": "" + }, + { + "moduleCode": "MKT3413", + "title": "Sme Marketing Strategy", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003", + "corequisite": "" + }, + { + "moduleCode": "MKT3414", + "title": "Marketing Channels", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003", + "corequisite": "" + }, + { + "moduleCode": "MKT3415", + "title": "Marketing in a Digital Age", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003", + "corequisite": "" + }, + { + "moduleCode": "MKT3416", + "title": "Business-to-Business Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003", + "corequisite": "" + }, + { + "moduleCode": "MKT3417", + "title": "Customer Relationship Management", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "CS4266", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 Marketing or MKT1003X Marketing", + "corequisite": "" + }, + { + "moduleCode": "MKT3418", + "title": "Product And Brand Management", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "BH3418 or BZ3603 or MKT3418A or MKT3418B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 or BH1003 or BZ1003 or BK2003", + "corequisite": "" + }, + { + "moduleCode": "MKT3418A", + "title": "Product and Brand Management", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH3418 or BZ3603", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 or BH1003 or BZ1003 or BK2003 or TR2201.", + "corequisite": "" + }, + { + "moduleCode": "MKT3418B", + "title": "Product and Brand Management", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH3418 or BZ3603", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 or BH1003 or BZ1003 or BK2003 or TR2201.", + "corequisite": "" + }, + { + "moduleCode": "MKT3420", + "title": "Advertising & Promotion Management", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 Marketing or MKT1003X Marketing", + "corequisite": "" + }, + { + "moduleCode": "MKT3420A", + "title": "Promotional Management", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH3420 or BZ3605 or BK3203 or MKT3420 or MKT3420B or IF3215 or NM3215", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 or BH1003 or BZ1003 or BK2003 or TR2201", + "corequisite": "" + }, + { + "moduleCode": "MKT3420B", + "title": "Promotional Management", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH3420 or BZ3605 or BK3203 or MKT3420 or MKT3420A or IF3215 or NM3215", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 or BH1003 or BZ1003 or BK2003 or TR2201", + "corequisite": "" + }, + { + "moduleCode": "MKT3421", + "title": "Marketing Analysis & Decision Making", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MKT3422B", + "title": "TIM: Marketing in Developing & Emerging Economies", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "MKT3761B TIM: Marketing in Developing & Emerging Economies", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003/1705 Principles of Marketing\nMKT3401/3701 Marketing Strategy: Analysis & Practice", + "corequisite": "" + }, + { + "moduleCode": "MKT3422C", + "title": "TIM: Social Impact Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "MKT3761C TIM: Social Impact Marketing", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003/1705 Principles of Marketing", + "corequisite": "" + }, + { + "moduleCode": "MKT3422D", + "title": "TIM: Sustainability Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "MKT3761D", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003/1705 Principles of Marketing", + "corequisite": "" + }, + { + "moduleCode": "MKT3422X", + "title": "Topics in Marketing:selected Topics 1", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MKT3422Z", + "title": "Topics in Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MKT3423", + "title": "Consumer Culture Theory", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT3402 Consumer Behaviour", + "corequisite": "" + }, + { + "moduleCode": "MKT3424", + "title": "Branding Strategy", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 or MKT1003X \nMarketing", + "corequisite": "" + }, + { + "moduleCode": "MKT3425", + "title": "Retail Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 Marketing or MKT1003X Marketing", + "corequisite": "" + }, + { + "moduleCode": "MKT3426", + "title": "Global Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 Marketing or MKT1003X Marketing", + "corequisite": "" + }, + { + "moduleCode": "MKT3427", + "title": "Research for Marketing Insights", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 Marketing or MKT1003X Marketing", + "corequisite": "" + }, + { + "moduleCode": "MKT3428", + "title": "Wealth Management Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 or MKT1003X Marketing", + "corequisite": "" + }, + { + "moduleCode": "MKT3429", + "title": "Independent Study in Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Vary according to project topic. In general, however, students will have to have completed the core modules of the BBA/BBA(Acc) curriculum.", + "corequisite": "" + }, + { + "moduleCode": "MKT3439", + "title": "Independent Study in Marketing", + "moduleCredit": 2, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Vary according to project topic. In general, however,\nstudents will have to have completed the core modules of\nthe BBA/BBA(Acc) curriculum.", + "corequisite": "Vary according to project topics." + }, + { + "moduleCode": "MKT3513", + "title": "Game Theory And Strategic Analysis", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "EC3312 Game Theory and Applications To Economics\nMA4264 Game Theory", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 Principles of Marketing (or TR2201 Entrepreneurial Marketing)\nBSP1005 Managerial Economics or equivalent", + "corequisite": "" + }, + { + "moduleCode": "MKT3701", + "title": "Marketing Strategy: Analysis and Practice", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "MKT2401; RE3704, MKT3401", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1705/MKT1705X", + "corequisite": "" + }, + { + "moduleCode": "MKT3701A", + "title": "Marketing Strategy: Analysis and Practice", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "MKT2401; RE3704.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1705/MKT1705X", + "corequisite": "" + }, + { + "moduleCode": "MKT3701B", + "title": "Marketing Strategy: Analysis and Practice", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MKT3702", + "title": "Consumer Behaviour", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "MKT3402", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1705/MKT1705X", + "corequisite": "" + }, + { + "moduleCode": "MKT3702A", + "title": "Consumer Behaviour", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "MKT3402", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1705/MKT1705X", + "corequisite": "" + }, + { + "moduleCode": "MKT3702B", + "title": "Consumer Behaviour", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "MKT3402", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1705/MKT1705X", + "corequisite": "" + }, + { + "moduleCode": "MKT3711", + "title": "Services Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "MKT3412", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1705/MKT1705X", + "corequisite": "" + }, + { + "moduleCode": "MKT3712", + "title": "SME Marketing Strategy", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "MKT3413", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1705/MKT1705X", + "corequisite": "" + }, + { + "moduleCode": "MKT3713", + "title": "Marketing Channels", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "MKT3414", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1705/MKT1705X", + "corequisite": "" + }, + { + "moduleCode": "MKT3714", + "title": "Marketing in a Digital Age", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "MKT3415", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1705/MKT1705X", + "corequisite": "" + }, + { + "moduleCode": "MKT3715", + "title": "Business-to-Business Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "MKT3416", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1705/MKT1705X", + "corequisite": "" + }, + { + "moduleCode": "MKT3716", + "title": "Customer Relationship Management", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "MKT3417", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1705/MKT1705X", + "corequisite": "" + }, + { + "moduleCode": "MKT3717", + "title": "Product & Brand Management", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "MKT3418", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1705/MKT1705X", + "corequisite": "" + }, + { + "moduleCode": "MKT3718", + "title": "Advertising & Promotion Management", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "MKT3420; NM3215.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1705/MKT1705X", + "corequisite": "" + }, + { + "moduleCode": "MKT3719", + "title": "Branding Strategy", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "MKT3424", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1705/MKT1705X", + "corequisite": "" + }, + { + "moduleCode": "MKT3720", + "title": "Retail Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "MKT2411", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1705/MKT1705X", + "corequisite": "" + }, + { + "moduleCode": "MKT3721", + "title": "Global Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "MKT2412", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1705/MKT1705X", + "corequisite": "" + }, + { + "moduleCode": "MKT3722", + "title": "Research for Marketing Insights", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "MKT2413", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1705/MKT1705X", + "corequisite": "" + }, + { + "moduleCode": "MKT3751", + "title": "Independent Study in Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Varies according to the subject matter covered.", + "corequisite": "" + }, + { + "moduleCode": "MKT3752", + "title": "Indep Study in Mkting (2 MC)", + "moduleCredit": 2, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Varies according to the subject matter covered.", + "corequisite": "" + }, + { + "moduleCode": "MKT3761", + "title": "Topics in Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Varies according to the subject matter covered.", + "corequisite": "" + }, + { + "moduleCode": "MKT3761A", + "title": "TIM: Wealth Management Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "MKT3422A; MKT3428.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1705/MKT1705X", + "corequisite": "" + }, + { + "moduleCode": "MKT3761B", + "title": "TIM: Marketing in Developing & Emerging Economies", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "MKT3422B TIM: Marketing in Developing & Emerging Economies", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003/1705 Principles of Marketing\nMKT3401/3701 Marketing Strategy: Analysis & Practice", + "corequisite": "" + }, + { + "moduleCode": "MKT3761C", + "title": "TIM: Social Impact Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "MKT3422C TIM: Social Impact Marketing", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003/1705 Principles of Marketing", + "corequisite": "" + }, + { + "moduleCode": "MKT3761D", + "title": "TIM: Sustainability Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "MKT3422D", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Varies according to the subject matter covered.", + "corequisite": "" + }, + { + "moduleCode": "MKT3761X", + "title": "Topics in Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Varies according to the subject matter covered.", + "corequisite": "" + }, + { + "moduleCode": "MKT3761Y", + "title": "Topics in Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Varies according to the subject matter covered.", + "corequisite": "" + }, + { + "moduleCode": "MKT3761Z", + "title": "Topics in Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Varies according to the subject matter covered.", + "corequisite": "" + }, + { + "moduleCode": "MKT3811", + "title": "Marketing Analysis & Decision Making", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "MKT3421", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1705/MKT1705X", + "corequisite": "" + }, + { + "moduleCode": "MKT3812", + "title": "Game Theory and Strategic Analysis", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "MKT3513; EC3312; MA4264.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1705/MKT1705X", + "corequisite": "" + }, + { + "moduleCode": "MKT4412", + "title": "Marketing Theory: Cultivating Critical Thinking", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 or MKT1003X", + "corequisite": "" + }, + { + "moduleCode": "MKT4413", + "title": "Pricing Strategy", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 or MKT1003X", + "corequisite": "" + }, + { + "moduleCode": "MKT4413A", + "title": "Pricing Models And Strategy", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH4413 or BZ4611", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 or MKT1003X", + "corequisite": "" + }, + { + "moduleCode": "MKT4413B", + "title": "Pricing Models And Strategy", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH4413 or BZ4611", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 or MKT1003X", + "corequisite": "" + }, + { + "moduleCode": "MKT4416", + "title": "Mktg Strategy Simulation & Case Analysis", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 or MKT1003X", + "corequisite": "" + }, + { + "moduleCode": "MKT4417", + "title": "Consumer Decision Making", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 or MKT1003X", + "corequisite": "" + }, + { + "moduleCode": "MKT4418", + "title": "Consumer Culture Theory", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT3402 Consumer Behavior", + "corequisite": "" + }, + { + "moduleCode": "MKT4419", + "title": "Advanced Independent Study in Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Vary according to project topic. In general, however, students will have to have completed the core modules of the BBA/BBA(Acc) curriculum.", + "corequisite": "" + }, + { + "moduleCode": "MKT4420", + "title": "Marketing Analytics", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT2401 Asian Markets & Marketing Management", + "corequisite": "" + }, + { + "moduleCode": "MKT4421", + "title": "Marketing Practice and Impact", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BMS5502/BMS5502A Marketing Practice & Impact", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003/MKT1003X/MKT1705/MKT1705X Principles of Marketing", + "corequisite": "" + }, + { + "moduleCode": "MKT4422", + "title": "The Business of Happiness", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "MKT4718 The Business of Happiness", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 Principles of Marketing", + "corequisite": "" + }, + { + "moduleCode": "MKT4423", + "title": "Design Thinking & Business Innovations", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "MKT4813 Design Thinking & Business Innovations", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1003 Principles of Marketing", + "corequisite": "" + }, + { + "moduleCode": "MKT4429", + "title": "Advanced Independent Study in Marketing", + "moduleCredit": 2, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Vary according to project topic. In general, however, students will have to have completed the core modules of the BBA/BBA(Acc) curriculum.", + "corequisite": "Vary according to project topics." + }, + { + "moduleCode": "MKT4712", + "title": "Marketing Theory: Cultivating Critical Thinking", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "MKT4412", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1705/MKT1705X", + "corequisite": "" + }, + { + "moduleCode": "MKT4713", + "title": "Marketing Strategy Simulation & Case Analysis", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "MKT4416", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1705/MKT1705X", + "corequisite": "" + }, + { + "moduleCode": "MKT4714", + "title": "Consumer Decision Making", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "MKT4417", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(BSP1703 or BSP1707 or EC1101E or EC1301) and (MKT1705/MKT1705X or RE3704).", + "corequisite": "" + }, + { + "moduleCode": "MKT4715", + "title": "Business Strategy Simulation for Marketers", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1705/MKT1705X or RE3704.", + "corequisite": "" + }, + { + "moduleCode": "MKT4716", + "title": "Consumer Culture Theory", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "MKT3423", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT3702", + "corequisite": "" + }, + { + "moduleCode": "MKT4717", + "title": "Marketing Practice and Impact", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BMS5502/BMS5502A Marketing Practice & Impact", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1705/MKT1705X", + "corequisite": "" + }, + { + "moduleCode": "MKT4718", + "title": "The Business of Happiness", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "MKT4422 The Business of Happiness", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1705 Principles of Marketing", + "corequisite": "" + }, + { + "moduleCode": "MKT4751", + "title": "Advanced Independent Study in Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Varies according to the subject matter covered.", + "corequisite": "" + }, + { + "moduleCode": "MKT4752", + "title": "Advanced Independent Study in Marketing (2 MC)", + "moduleCredit": 2, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Varies according to the subject matter covered.", + "corequisite": "" + }, + { + "moduleCode": "MKT4761", + "title": "Seminars in Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Varies according to the subject matter covered.", + "corequisite": "" + }, + { + "moduleCode": "MKT4811", + "title": "Pricing Strategy", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "MKT4413", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1705/MKT1705X or RE3704.", + "corequisite": "" + }, + { + "moduleCode": "MKT4812", + "title": "Marketing Analytics", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "MKT4415C; MKT4420.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1705/MKT1705X or RE3704.", + "corequisite": "" + }, + { + "moduleCode": "MKT4813", + "title": "Design Thinking & Business Innovations", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "MKT4423 Design Thinking & Business Innovations", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MKT1705 Principles of Marketing", + "corequisite": "" + }, + { + "moduleCode": "ML5198", + "title": "Graduate Seminar Module in Materials Science", + "moduleCredit": 4, + "department": "Materials Science", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ML5201", + "title": "Principles, Technology and Properties of Thin Films", + "moduleCredit": 4, + "department": "Materials Science", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ML5202", + "title": "Structural and Electronic Ceramics", + "moduleCredit": 4, + "department": "Materials Science", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ML5203", + "title": "Electrochemical Techniques in Environmental Engineering", + "moduleCredit": 4, + "department": "Materials Science", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ML5206", + "title": "Nanomaterials: Science and Engineering", + "moduleCredit": 4, + "department": "Materials Science", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ML5208", + "title": "Mechanical Properties of Solid Films", + "moduleCredit": 4, + "department": "Materials Science", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ML5209", + "title": "Fundamentals of Materials Science", + "moduleCredit": 4, + "department": "Materials Science", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MLE1001", + "title": "Materials Science & Engrg Principles & Practice I", + "moduleCredit": 6, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MLE1001A", + "title": "Materials Science & Engineering Principles & Practice I", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "MLE1001", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MLE1002", + "title": "Materials Science & Engineering Principles & Practice II", + "moduleCredit": 6, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MLE1010", + "title": "Materials Engineering Principles & Practices", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MLE1101", + "title": "Introductory Materials Science And Engineering", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "Mechanical Engineering students", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "A Level Physics or H1 Physics or H2 Physics or [PC1221 and PC1222]", + "corequisite": "" + }, + { + "moduleCode": "MLE1111", + "title": "Foundation Materials Science and Engineering I", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "MLE1101", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "A Level Physics or H1 Physics or H2 Physics or [PC1221 and PC1222]", + "corequisite": "" + }, + { + "moduleCode": "MLE1112", + "title": "Foundation Materials Science and Engineering 2", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "MLE1101", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "A Level Physics or H1 Physics or H2 Physics or [PC1221 and PC1222]", + "corequisite": "" + }, + { + "moduleCode": "MLE2001", + "title": "Materials Science & Engineering Principles & Practice II", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "MLE1002", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MLE2101", + "title": "Introduction to Structure of Materials", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "A Level Physics or H1 Physics or H2 Physics or [PC1221 and PC1222] or MLE1111 or MLE1001 or MLE1002", + "corequisite": "" + }, + { + "moduleCode": "MLE2102", + "title": "Thermodynamics and Phase Diagrams", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "A Level Physics or H1 Physics or H2 Physics or [PC1221 and PC1222] or MLE1111 or MLE1001 or MLE1002", + "corequisite": "" + }, + { + "moduleCode": "MLE2103", + "title": "Phase Transformation and Kinetics", + "moduleCredit": 3, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MLE2102 or MLE1111 or MLE1001 or MLE1002", + "corequisite": "" + }, + { + "moduleCode": "MLE2104", + "title": "Mechanical Properties of Materials", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EG1109FC/EG1109 or MLE1101 or MLE2101 or MLE1111 or MLE1001 or MLE1002", + "corequisite": "" + }, + { + "moduleCode": "MLE2105", + "title": "Electronic Properties of Materials", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MLE1001 or MLE1002 or MLE1101 or MLE2101 or MLE1111", + "corequisite": "" + }, + { + "moduleCode": "MLE2106", + "title": "Metallic Materials and Processing", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MLE1101 or MLE2101 or MLE2104 or MLE1111 or MLE1001 or MLE1002", + "corequisite": "" + }, + { + "moduleCode": "MLE2107", + "title": "Ceramic Materials and Processing", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MLE1101 or MLE2101 or MLE1111 or MLE1001 or MLE1002", + "corequisite": "" + }, + { + "moduleCode": "MLE2111", + "title": "Materials Properties Laboratory", + "moduleCredit": 3, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MLE1101 or MLE1111 or A Level Physics or H1 Physics or\nH2 Physics or [PC1221 and PC1222] or MLE1001 or MLE1002", + "corequisite": "" + }, + { + "moduleCode": "MLE3101", + "title": "Materials Characterization Laboratory", + "moduleCredit": 3, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MLE1101 or MLE2101 or MLE1001 or MLE1002", + "corequisite": "" + }, + { + "moduleCode": "MLE3102", + "title": "Degradation and Failure of Materials", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MLE1101 or MLE2102 or MLE1111 or MLE1001 or MLE1002", + "corequisite": "" + }, + { + "moduleCode": "MLE3103", + "title": "Materials Design and Selection", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MLE1101 or MLE2104 or MLE1001 or MLE1002", + "corequisite": "" + }, + { + "moduleCode": "MLE3104", + "title": "Polymeric and Composite Materials", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MLE1101 or CM1121 or CM1501 or MLE1111 or MLE1001 or MLE1002", + "corequisite": "" + }, + { + "moduleCode": "MLE3105", + "title": "Dielectric and Magnetic Materials", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MLE2105", + "corequisite": "" + }, + { + "moduleCode": "MLE3111", + "title": "Materials Properties & Processing Laboratory", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MLE1002 or MLE2101 or MLE2111 or MLE1001", + "corequisite": "" + }, + { + "moduleCode": "MLE3202", + "title": "Materials for Biointerfaces", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MLE1101 or MLE1111 or MLE1001 or MLE1002", + "corequisite": "" + }, + { + "moduleCode": "MLE3203", + "title": "Engineering Materials", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "MLE2106 Metallic Materials & Processing\nMLE2107 Ceramic Materials & Processing", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MLE1111 or MLE1001 or MLE2102 or MLE1002", + "corequisite": "" + }, + { + "moduleCode": "MLE4101", + "title": "B.Eng. Dissertation", + "moduleCredit": 12, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "MLE4101A or MLE4101N", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "MLE2103 and MLE2104 and MLE2105 and MLE3101", + "corequisite": "" + }, + { + "moduleCode": "MLE4101A", + "title": "BEng Dissertation", + "moduleCredit": 6, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "MLE4101 or MLE4101N", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MLE2103 and MLE2104 and MLE3101", + "corequisite": "" + }, + { + "moduleCode": "MLE4101R", + "title": "Integrated B.ENG./B.SC. (Hons) Dissertation", + "moduleCredit": 16, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "MLE2103 and MLE2104 and MLE2105 and MLE3101", + "corequisite": "" + }, + { + "moduleCode": "MLE4102", + "title": "Design Project", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MLE2103", + "corequisite": "" + }, + { + "moduleCode": "MLE4102A", + "title": "Design Project", + "moduleCredit": 8, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "MLE4102", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "MLE1002 and MLE2104 and MLE3111", + "corequisite": "" + }, + { + "moduleCode": "MLE4201", + "title": "Advanced Materials Characterisation", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MLE3101", + "corequisite": "" + }, + { + "moduleCode": "MLE4202", + "title": "Selected Advanced Topics on Polymers", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MLE3104", + "corequisite": "" + }, + { + "moduleCode": "MLE4203", + "title": "Polymeric Biomedical Materials", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MLE3104 and (BN3301 or MLE3202)", + "corequisite": "" + }, + { + "moduleCode": "MLE4204", + "title": "Synthesis And Growth Of Nanostructures", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MLE2101", + "corequisite": "" + }, + { + "moduleCode": "MLE4205", + "title": "Theory and Modelling of Materials Properties", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MLE2101", + "corequisite": "" + }, + { + "moduleCode": "MLE4206", + "title": "Current topics on Nanomaterials", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MLE2104 and MLE2105", + "corequisite": "" + }, + { + "moduleCode": "MLE4207", + "title": "Microfabrication Process and Technology", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "EE4436 Semiconductor Process Technology", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MLE2101 and MLE2105", + "corequisite": "" + }, + { + "moduleCode": "MLE4208", + "title": "Photovoltaics Materials", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MLE2105 or EE3406 or equivalent", + "corequisite": "" + }, + { + "moduleCode": "MLE4209", + "title": "Magnetism and Magnetic Materials", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MLE3105 or other equivalent modules", + "corequisite": "" + }, + { + "moduleCode": "MLE4210", + "title": "Materials for energy storage and conversion", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MLE2105", + "corequisite": "" + }, + { + "moduleCode": "MLE4211", + "title": "Nanoelectronics and information technology", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MLE4212", + "title": "Advanced Structural Materials", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MLE3102 or MLE3203 or MLE2106.", + "corequisite": "" + }, + { + "moduleCode": "MLE4213", + "title": "Innovation & Product Development for Material Engineers", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MLE2104 Mechanical Properties of Materials", + "corequisite": "" + }, + { + "moduleCode": "MLE5001", + "title": "Basics of Structures & Properties of Materials", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "MST5001", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MLE5002", + "title": "Materials Characterization", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "MST5002", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MLE5003", + "title": "Materials Science &Engineering Project", + "moduleCredit": 8, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "MST5007", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MLE5004", + "title": "Innovation & Translation Research Project in MSE", + "moduleCredit": 8, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MLE5102", + "title": "Mechanical Behaviours of Materials", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MLE5104", + "title": "Physical Properties of Materials", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MLE5206", + "title": "Nanomaterials: Science and Engineering", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MLE5210", + "title": "Modelling and Simulation of Materials", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "MLE4205 Theory & Modelling of Material Properties", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MLE5211", + "title": "Nanomaterials", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "MLE4206 Current topics on Nanomaterials", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MLE5212", + "title": "Energy Conversion & Storage", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "MLE4210 Materials for Energy Storage and Conversion", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MLE5213", + "title": "Magnetic Materials", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "MLE4209 Magnetism and Magnetic Materials", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MLE5214", + "title": "Advances in Polymeric Materials", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "MLE4202 Selected advanced Topics on Polymers", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MLE5215", + "title": "Atomistic Modelling of Molecules and Materials", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MLE5301", + "title": "Metallic & Ceramic Materials in Additive Manufacturing", + "moduleCredit": 2, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MLE5302", + "title": "Polymer Materials in Additive Manufacturing", + "moduleCredit": 2, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MLE5303", + "title": "Failure Analysis in Electronic Device", + "moduleCredit": 2, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MLE5304", + "title": "Introduction to Electron Microscopy of Materials", + "moduleCredit": 2, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MLE5666", + "title": "Industrial Attachment Module", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MLE5999", + "title": "Graduate Seminars", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MLE6101", + "title": "Thermodynamics and Kinetics of Materials", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MLE6103", + "title": "Structures of Materials", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MLE6205", + "title": "Magnetic Materials and Applications", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MLE6206", + "title": "Nanomaterials: Science and Engineering", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MLE6999", + "title": "Doctoral Seminars", + "moduleCredit": 8, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MMT6005", + "title": "Technopreneurship", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MNO1001", + "title": "Management And Organisation", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "Students who have taken BE2106, EG1423, CS1303, BK2002 or BZ1001 or BH1001 are not allowed to take MNO1001. Students who took or are taking HR2001, HR2101, HR3111 or HR3308 cannot take MNO1001", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MNO1001A", + "title": "Management And Organisation", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have taken BE2106, EG1423, CS1303, BK2002 or BZ1001 or BH1001 are not allowed to take MNO1001. Students who took or are taking HR2001, HR2101, HR3111 or HR3308 cannot take MNO1001", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MNO1001B", + "title": "Management And Organisation", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have taken BE2106, EG1423, CS1303, BK2002 or BZ1001 or BH1001 are not allowed to take MNO1001. Students who took or are taking HR2001, HR2101, HR3111 or HR3308 cannot take MNO1001", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MNO1001C", + "title": "Management And Organisation", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have taken BE2106, EG1423, CS1303, BK2002 or BZ1001 or BH1001 are not allowed to take MNO1001. Students who took or are taking HR2001, HR2101, HR3111 or HR3308 cannot take MNO1001", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MNO1001D", + "title": "Management And Organisation", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have taken BE2106, EG1423, CS1303, BK2002 or BZ1001 or BH1001 are not allowed to take MNO1001. Students who took or are taking HR2001, HR2101, HR3111 or HR3308 cannot take MNO1001", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MNO1001E", + "title": "Management And Organisation", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have taken BE2106, EG1423, CS1303, BK2002 or BZ1001 or BH1001 are not allowed to take MNO1001. Students who took or are taking HR2001, HR2101, HR3111 or HR3308 cannot take MNO1001", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MNO1001X", + "title": "Management And Organisation", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have taken BE2106, EG1423, CS1303, BK2002 or BZ1001 or BH1001 are not allowed to take MNO1001. Students who took or are taking HR2001, HR2101, HR3111 or HR3308 cannot take MNO1001", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MNO1311", + "title": "Business Management", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MNO1706", + "title": "Organisational Behavior", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "MNO1001; MNO1001X; PL3239", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MNO1706A", + "title": "Organisational Behavior", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "MNO1001; MNO1001X; PL3239", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MNO1706B", + "title": "Organisational Behavior", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "MNO1001; MNO1001X; PL3239", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MNO1706C", + "title": "Organisational Behavior", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "MNO1001; MNO1001X; PL3239", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MNO1706D", + "title": "Organisational Behavior", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "MNO1001; MNO1001X; PL3239", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MNO1706E", + "title": "Organisational Behavior", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "MNO1001; MNO1001X; PL3239", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MNO1706X", + "title": "Organisational Behavior", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "MNO1001; MNO1001X; PL3239", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MNO2007", + "title": "Leadership and Ethics", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001 Management and Organization", + "corequisite": "" + }, + { + "moduleCode": "MNO2007A", + "title": "Leadership and Ethics", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001 Management and Organization", + "corequisite": "" + }, + { + "moduleCode": "MNO2007B", + "title": "Leadership and Ethics", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001 Management and Organization", + "corequisite": "" + }, + { + "moduleCode": "MNO2007C", + "title": "Leadership and Ethics", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001 Management and Organization", + "corequisite": "" + }, + { + "moduleCode": "MNO2007D", + "title": "Leadership and Ethics", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001 Management and Organization", + "corequisite": "" + }, + { + "moduleCode": "MNO2007E", + "title": "Leadership and Ethics", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001 Management and Organization", + "corequisite": "" + }, + { + "moduleCode": "MNO2009", + "title": "Entrepreneurship", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001 Management and Organisation", + "corequisite": "" + }, + { + "moduleCode": "MNO2302", + "title": "Human Resource Management", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH2302 or BZ3504 or BK3300 or MNO2302A/B or PL3239 or PS3245", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001 or BH1001 or BZ1001 or BK2002 or HR2001 or HR2101 or HR3111 or HR3308", + "corequisite": "" + }, + { + "moduleCode": "MNO2311", + "title": "Leadership In Organisations", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH2311 or BZ2002", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001 or BH1001 or BZ1001 or BK2002 or HR2001 or HR2101 or HR3111 or HR3308", + "corequisite": "" + }, + { + "moduleCode": "MNO2312", + "title": "Interpersonal Relations & Effectiveness", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "HR2002 Human Capital in Organizations", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001 Management and Organisation", + "corequisite": "MNO1001 Management and Organisation" + }, + { + "moduleCode": "MNO2705", + "title": "Leadership and Decision Making under Uncertainty", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1706/MNO1706X or PL3239.", + "corequisite": "" + }, + { + "moduleCode": "MNO2705A", + "title": "Leadership and Decision Making under Uncertainty", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1706/MNO1706X or PL3239.", + "corequisite": "" + }, + { + "moduleCode": "MNO2705B", + "title": "Leadership and Decision Making under Uncertainty", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1706/MNO1706X or PL3239.", + "corequisite": "" + }, + { + "moduleCode": "MNO2705C", + "title": "Leadership and Decision Making under Uncertainty", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1706/MNO1706X or PL3239.", + "corequisite": "" + }, + { + "moduleCode": "MNO2705D", + "title": "Leadership and Decision Making under Uncertainty", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1706/MNO1706X or PL3239.", + "corequisite": "" + }, + { + "moduleCode": "MNO2705E", + "title": "Leadership and Decision Making under Uncertainty", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1706/MNO1706X or PL3239.", + "corequisite": "" + }, + { + "moduleCode": "MNO2706", + "title": "Business Communication for Leaders (ACC)", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "ES2002", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students who are required to read ES1000 Basic English must pass it before taking MNO2706", + "corequisite": "" + }, + { + "moduleCode": "MNO3301", + "title": "Organisational Behaviour", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "BH3301 or BZ3501 or BK3309M or PS3243", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001 or BH1001 or BZ1001 or BK2002 or HR2001 or HR2101 or HR3111 or HR3308", + "corequisite": "" + }, + { + "moduleCode": "MNO3303", + "title": "Organisational Effectiveness", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH3303 or BZ3502 or BK4309D or BK3309N", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001 or BH1001 or BZ1001 or BK2002 or HR2001 or HR2101 or HR3111 or HR3308", + "corequisite": "" + }, + { + "moduleCode": "MNO3311", + "title": "Managing Diversity In S.E.Asia", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SP1001 Career Planning & Preparation or NCC1001 Headstart Module (A Career Development Programme) or NCC1000 Stepup Module (A Career Development Programme) or CFG1001 Headstart Module or CFG1000 StepUp Module; students must have completed 3 regular semesters of study, have declared YY as first major and have completed a minimum of 32 MCs in YY major at time of application.", + "corequisite": "" + }, + { + "moduleCode": "MNO3312", + "title": "Organisational Communication", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SP1001 Career Planning & Preparation or NCC1001 Headstart Module (A Career Development Programme) or NCC1000 Stepup Module (A Career Development Programme) or CFG1001 Headstart Module or CFG1000 StepUp Module; students must have completed 3 regular semesters of study, have declared YY as first major and have completed a minimum of 32 MCs in YY major at time of application.", + "corequisite": "" + }, + { + "moduleCode": "MNO3313", + "title": "Topics in Leadership and Human Capital Management", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001 Management and Organisation", + "corequisite": "" + }, + { + "moduleCode": "MNO3313F", + "title": "TIMHC:Managing High Performance Teams", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH3313F or BZ3503 or BK3305 or SWD5290", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001 or BH1001 or BZ1001 or BK2002 or HR2001 or HR2101 or HR3111 or HR3308", + "corequisite": "" + }, + { + "moduleCode": "MNO3313H", + "title": "TIHMC: Negotiations and Bargaining", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001", + "corequisite": "" + }, + { + "moduleCode": "MNO3313J", + "title": "TILHCM: Employee and Organizational Misbehaviours", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001: Management and Organisation", + "corequisite": "" + }, + { + "moduleCode": "MNO3313K", + "title": "TILHCM: Managing China Venture", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001 – Management and Organisation", + "corequisite": "" + }, + { + "moduleCode": "MNO3313X", + "title": "Topics in Management and Organisation:selected Topics", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MNO3313Y", + "title": "Topics in Management and Organisation:selected Topics 3", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MNO3313Z", + "title": "Topics in Management & Organisation:management 3", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MNO3314", + "title": "Social And Ethical Issues In Management", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "PH2218", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001/HR2001/HR2101/HR3111/HR3308", + "corequisite": "" + }, + { + "moduleCode": "MNO3315", + "title": "Legal Issues in Employee Management", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MNO3316", + "title": "Managing An International Workforce", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001 and MNO2302", + "corequisite": "" + }, + { + "moduleCode": "MNO3317", + "title": "Advanced Leadership", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "MNO3325 CEOs as Leaders", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001 Management and Organization\nMNO2007 Leadership and Ethics", + "corequisite": "" + }, + { + "moduleCode": "MNO3318", + "title": "Creativity and Innovation Management", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001 Management and Organisation", + "corequisite": "" + }, + { + "moduleCode": "MNO3319", + "title": "Power and influence in Organizations", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "GEK1047 Organizational Power and Culture", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001 Management and Organisation\nMNOMNO2007 Leadership and Ethics", + "corequisite": "" + }, + { + "moduleCode": "MNO3320", + "title": "Managing Change", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH3313A or BZ3503 or BK3305", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001 Management & Organisation and MNO2007 Leadership and Ethics\nNote: Students who are matriculated before AY2009/2010, need NOT read MNO2007 as a pre-requisite for this MNO module.", + "corequisite": "" + }, + { + "moduleCode": "MNO3321", + "title": "Training and Development", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BH3313C or BZ3503 or BK3305 or SW5254", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001 Management & Organisation and MNO2007 Leadership and\nEthics.", + "corequisite": "" + }, + { + "moduleCode": "MNO3322", + "title": "Negotiations and Bargaining", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1706 Organizational Behaviour and\nMNO2705 Leadership and Decision Making Under Uncertainty", + "corequisite": "" + }, + { + "moduleCode": "MNO3323", + "title": "Management of Employee Relations", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001 Management & Organisation and MNO2007 Leadership and Ethics\nNote: Students who are matriculated before AY2009/2010, need NOT read MNO2007 as a pre-requisite for this MNO module.", + "corequisite": "" + }, + { + "moduleCode": "MNO3325", + "title": "CEOs as Leaders", + "moduleCredit": 2, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "MNO3317 Advanced Leadership", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001 Management and Organization\nMNO2007 Leadership and Ethics", + "corequisite": "" + }, + { + "moduleCode": "MNO3326", + "title": "Personal Leadership Development", + "moduleCredit": 2, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001 Management and Organization\nMNO2007 Leadership and Ethics", + "corequisite": "" + }, + { + "moduleCode": "MNO3328", + "title": "Business Leadership Case Analysis", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001 Management & Organization\nMNO2007 Leadership and Ethics", + "corequisite": "" + }, + { + "moduleCode": "MNO3329", + "title": "Independent Study in Leadership & Human Capital Mgmt", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Vary according to project topic. In general, however, students will have to have completed the core modules of the BBA/BBA(Acc) curriculum.", + "corequisite": "" + }, + { + "moduleCode": "MNO3330", + "title": "Social Entrepreneurship", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MNO3331", + "title": "Business with a Social Conscience", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MNO3332", + "title": "Leading Groups and Teams", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "PL 3235 or PL3239" + }, + { + "moduleCode": "MNO3333", + "title": "Human Capital Management", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "MNO2302", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001/MNO1001X and MNO2007", + "corequisite": "" + }, + { + "moduleCode": "MNO3334", + "title": "Principles of Global Management", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "MNO3716 Principles of Global Management", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MNO3339", + "title": "Independent Study in Leadership & Human Capital Mgmt", + "moduleCredit": 2, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001 Management and Organisation", + "corequisite": "" + }, + { + "moduleCode": "MNO3701", + "title": "Human Capital Management", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "MNO2302, MNO3333", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1706/MNO1706X or PL3239.", + "corequisite": "" + }, + { + "moduleCode": "MNO3702", + "title": "Negotiation and Conflict Management", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "MNO3322", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1706/MNO1706X or PL3239.", + "corequisite": "" + }, + { + "moduleCode": "MNO3703", + "title": "Leading in the 21st Century", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1706/MNO1706X or PL3239.", + "corequisite": "" + }, + { + "moduleCode": "MNO3711", + "title": "Managing Change", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "MNO3320", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1706/MNO1706X or PL3239.", + "corequisite": "" + }, + { + "moduleCode": "MNO3712", + "title": "Training and Development", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "MNO3321", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1706/MNO1706X or PL3239.", + "corequisite": "" + }, + { + "moduleCode": "MNO3713", + "title": "Management of Employee Relations", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "MNO3323", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1706/MNO1706X or PL3239.", + "corequisite": "" + }, + { + "moduleCode": "MNO3714", + "title": "Business with a Social Conscience", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "MNO3331", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MNO3715", + "title": "Leading Groups and Teams", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "MNO3332", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1706/MNO1706X or PL3239.", + "corequisite": "PL 3235 or PL3239" + }, + { + "moduleCode": "MNO3716", + "title": "Principles of Global Management", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "MNO3334 Principles of Global Management", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MNO3751", + "title": "Independent Study in Leadership & Human Capital Mgmt", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1706/MNO1706X or PL3239.", + "corequisite": "" + }, + { + "moduleCode": "MNO3752", + "title": "Independent Study in Leadership & Human Capital Mgmt (2 MC)", + "moduleCredit": 2, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1706/MNO1706X or PL3239.", + "corequisite": "" + }, + { + "moduleCode": "MNO3761", + "title": "Topics in Leadership and Human Capital Management", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1706/MNO1706X or PL3239.", + "corequisite": "" + }, + { + "moduleCode": "MNO3761A", + "title": "TILHCM: Employee and Organizational Misbehaviours", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "MNO3313J", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1706/MNO1706X or PL3239.", + "corequisite": "" + }, + { + "moduleCode": "MNO3761B", + "title": "TILHCM: Managing China Venture", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "MNO3313K", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1706/MNO1706X or PL3239.", + "corequisite": "" + }, + { + "moduleCode": "MNO3761X", + "title": "Topics in Leadership and Human Capital Management", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1706/MNO1706X or PL3239.", + "corequisite": "" + }, + { + "moduleCode": "MNO3761Y", + "title": "Topics in Leadership and Human Capital Management", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1706/MNO1706X or PL3239.", + "corequisite": "" + }, + { + "moduleCode": "MNO3761Z", + "title": "Topics in Leadership and Human Capital Management", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1706/MNO1706X or PL3239.", + "corequisite": "" + }, + { + "moduleCode": "MNO3811", + "title": "Social Entrepreneurship", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "MNO3330", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MNO4312", + "title": "Research Methods In Management And Organisations", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "SC5101", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001/HR2001/HR2101/HR3111/HR3308 and ST1131A/ST1131/ST1232/MA2216/ST2131/ST2334/EE2003/ME2491", + "corequisite": "" + }, + { + "moduleCode": "MNO4313", + "title": "Seminars in Leadership and Human Capital Management", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001. Additional pre-requisites may apply depending on the specific modules offered", + "corequisite": "" + }, + { + "moduleCode": "MNO4313B", + "title": "SIMHC: Culture and Management in Asia", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001 or HR2001 or HR2101 or HR3111 or HR3308", + "corequisite": "" + }, + { + "moduleCode": "MNO4313C", + "title": "SILHCM: Compensation and Performance Management", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001 Management and Organisation", + "corequisite": "" + }, + { + "moduleCode": "MNO4313D", + "title": "SILHCM: Corp Entrepreneurship & Busi Model Evaluation", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001 Management and Organisation", + "corequisite": "" + }, + { + "moduleCode": "MNO4313E", + "title": "SIMHC: Managerial and Organisational Cognition", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001 or HR2001 or HR2101 or HR3111 or HR3308", + "corequisite": "" + }, + { + "moduleCode": "MNO4313G", + "title": "SIMHC: SME Consulting", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MNO4313H", + "title": "SILHCM: Job Attitudes", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MNO4313J", + "title": "SILHCM: Talent Development and Performing with Impact", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1706 / MNO1706X Organizational Behaviour", + "corequisite": "" + }, + { + "moduleCode": "MNO4313X", + "title": "Seminars in Management and Human Capital (SIMHC)", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MNO4314", + "title": "Consulting to Management", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001 Management and Organisation and MNO2007 Leadership and\nEthics.", + "corequisite": "" + }, + { + "moduleCode": "MNO4314A", + "title": "Seminar in M&O: Consulting to Management", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "MNO4313F, MNO4314, MNO4314B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001, MNO2007", + "corequisite": "" + }, + { + "moduleCode": "MNO4314B", + "title": "Seminar in M&O: Consulting to Management", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "MNO4313F, MNO4314, MNO4314A", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001, MNO2007", + "corequisite": "" + }, + { + "moduleCode": "MNO4315", + "title": "Global Management of Asian Multinationals", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001 Management & Organisation", + "corequisite": "" + }, + { + "moduleCode": "MNO4316", + "title": "Experiencing Work: Effects on Behavior and Well-Being", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1001 Management and Organizational Behaviour", + "corequisite": "" + }, + { + "moduleCode": "MNO4319", + "title": "Adv Independent Study in Leadership & Human Capital Mgt", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Vary according to project topic. In general, however, students will have to have completed the core modules of the BBA/BBA(Acc) curriculum.", + "corequisite": "" + }, + { + "moduleCode": "MNO4329", + "title": "Adv Independent Study in Leadership & Human Capital Mgt", + "moduleCredit": 2, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Vary according to project topic. In general, however, students will have to have completed the core modules of the BBA/BBA(Acc) curriculum.", + "corequisite": "Vary according to project topics." + }, + { + "moduleCode": "MNO4711", + "title": "Consulting to Management", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "MNO4314", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1706/MNO1706X or PL3239.", + "corequisite": "" + }, + { + "moduleCode": "MNO4712", + "title": "Experiencing Work: Effects on Behaviour & Well-Being", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "MNO4316", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1706/MNO1706X or PL3239.", + "corequisite": "" + }, + { + "moduleCode": "MNO4713", + "title": "Leading Across Borders", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1706/MNO1706X or PL3239.", + "corequisite": "" + }, + { + "moduleCode": "MNO4714", + "title": "Developing Impactful Social Sector Solutions", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1706/MNO1706X or PL3239.", + "corequisite": "" + }, + { + "moduleCode": "MNO4751", + "title": "Adv Independent Study in Leadership & Human Capital Mgt", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Vary according to project topic. In general, however, students will have to have completed the core modules of the BBA/BBA(Acc) curriculum.", + "corequisite": "" + }, + { + "moduleCode": "MNO4752", + "title": "Adv Independent Study in Leadership & Human Capital Mgt (2 MC)", + "moduleCredit": 2, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Vary according to project topic. In general, however, students will have to have completed the core modules of the BBA/BBA(Acc) curriculum", + "corequisite": "" + }, + { + "moduleCode": "MNO4761", + "title": "Seminars in Leadership and Human Capital Management", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1706/MNO1706X or PL3239.", + "corequisite": "" + }, + { + "moduleCode": "MNO4761A", + "title": "SILHCM: Compensation and Performance Management", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "MNO4313C", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1706/MNO1706X or PL3239.", + "corequisite": "" + }, + { + "moduleCode": "MNO4761B", + "title": "SILHCM: Job Attitudes", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "MNO4313H", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1706/MNO1706X or PL3239.", + "corequisite": "" + }, + { + "moduleCode": "MNO4761C", + "title": "SILHCM: Talent Development and Performing with Impact", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1706 / MNO1706X Organizational Behaviour", + "corequisite": "" + }, + { + "moduleCode": "MNO4861C", + "title": "SILHCM: Corp Entrepreneurship & Busi Model Evaluation", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "MNO4313D", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MNO1706/MNO1706X or PL3239.", + "corequisite": "" + }, + { + "moduleCode": "MS1102E", + "title": "Understanding the Contemporary Malay World", + "moduleCredit": 4, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "MS1101E", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MS2210", + "title": "Malay Culture & Society", + "moduleCredit": 4, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2, + 4 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MS2211", + "title": "Criticism in Modern Malay Literature", + "moduleCredit": 4, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MS2212", + "title": "Law and Malay Society", + "moduleCredit": 4, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MS2213", + "title": "Malay Families and Households", + "moduleCredit": 4, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MS2215", + "title": "The Malays in History", + "moduleCredit": 4, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MS2216", + "title": "Fieldwork in Studies of Malay Society", + "moduleCredit": 4, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MS1102E", + "corequisite": "" + }, + { + "moduleCode": "MS3209", + "title": "The Malays of Singapore", + "moduleCredit": 4, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "SSA3203", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MS3210", + "title": "Modern Indonesian Literature", + "moduleCredit": 4, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MS3211", + "title": "Political Culture of the Malays", + "moduleCredit": 4, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MS3212", + "title": "Text and Ideology in the Malay World", + "moduleCredit": 4, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MS3213", + "title": "Ideology & Ideas on Malay Development", + "moduleCredit": 4, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MS3215", + "title": "Malays and Modernization", + "moduleCredit": 4, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MS3216", + "title": "Gender and Islam", + "moduleCredit": 4, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MS3217", + "title": "Political Economy, Ethnicity, Religion", + "moduleCredit": 4, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MS3218", + "title": "The Religious Life of the Malays", + "moduleCredit": 4, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "MS4203 The Religious life of the Malays", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MS3550", + "title": "Malay Studies Internship", + "moduleCredit": 4, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "Any other XX3550 internship modules(Note: Students who change major may not do a\nsecond internship in their new major)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This module is open to Malay Studies Major students only. Students should have completed a minimum of 24 MC in Malay Studies; and have declared Malay Studies as their Major.", + "corequisite": "" + }, + { + "moduleCode": "MS4101", + "title": "Theory and Practice in Malay Studies", + "moduleCredit": 5, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in MS, or 28 MCs in SC, or 28 MCs in GL or GL recognised non-language modules with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in MS, or 28 MCs in SC with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "MS4201", + "title": "Social Change in the Malay World 1900-1965", + "moduleCredit": 5, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed at least 80MCs including 28MC in MS or 28 MCs in HY or 28MCs in SC or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed at least 80MCs including 28MC in MS or 28 MCs in HY or 28MCs in SC, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "MS4202", + "title": "Malay Society in 19th Century", + "moduleCredit": 5, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed at least 80MCs including 28MC in MS or 28 MCs in HY or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed at least 80MCs including 28MC in MS or 28 MCs in HY, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "MS4204", + "title": "The Malay Middle Class", + "moduleCredit": 5, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80MCs, including 28MCs in MS or 28MCs in SN or 28MCs in SC or 28MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.2 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80MCs, including 28MCs in MS or 28MCs in SN or 28MCs in SC, with a minimum CAP of 3.2 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "MS4207", + "title": "Malay Film", + "moduleCredit": 5, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in MS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "MS4208", + "title": "Syariah Law in Southeast Asia", + "moduleCredit": 5, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "MS3219", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs including 28 MCs in MS, with a minimum CAP of 3.2 or be in the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs including 28 MCs in MS or 28 MCs in GL/GL recognised non‐language modules, with a minimum CAP of 3.2 or be in the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "MS4401", + "title": "Honours Thesis", + "moduleCredit": 15, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "MS4660", + "attributes": [ + false, + false, + false, + false, + true, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2015 and before:\nCompleted 110 MCs including 60 MCs of MS major requirements with a minimum CAP of 3.50.\n\nCohort 2016 onwards:\nCompleted 110 MCs including 44 MCs of MS major requirements with a minimum CAP of 3.50.", + "corequisite": "" + }, + { + "moduleCode": "MS4660", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "MS4401", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012-2015:\nCompleted 100 MCs, including 60 MCs in MS, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nCompleted 100 MCs, including 44 MCs in MS, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "MS4880", + "title": "Topics in Malay Studies", + "moduleCredit": 5, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in MS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "MS4880A", + "title": "Orientations in Muslim Resurgence Movements", + "moduleCredit": 5, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in MS or 28MCs in SC with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "MS4880B", + "title": "Malays Encountering Globalization: Culture and Identity", + "moduleCredit": 5, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in MS or 28MCs in SC or 28MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "MS4880C", + "title": "Topics in Malay Narrative Art Forms", + "moduleCredit": 5, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in MS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "MS5101", + "title": "Social Science and Malay Studies", + "moduleCredit": 4, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MS5201", + "title": "Critiques in Malay Studies", + "moduleCredit": 4, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MS5660", + "title": "Independent Study", + "moduleCredit": 4, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "MS6660", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MS6101", + "title": "Social Science Theories and Malay Studies", + "moduleCredit": 4, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MS6102", + "title": "Critiques in Malay Studies", + "moduleCredit": 4, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MS6201", + "title": "Literature and Art in Malay Society", + "moduleCredit": 4, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MS6202", + "title": "Elite and Intellectuals in Malay Society", + "moduleCredit": 4, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MS6203", + "title": "Religion and Modernisation", + "moduleCredit": 4, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MS6205", + "title": "Approaches to Islam, Politics and Social Change", + "moduleCredit": 4, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MS6660", + "title": "Independent Study", + "moduleCredit": 4, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MS6770", + "title": "Graduate Research Seminar", + "moduleCredit": 4, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MST5001", + "title": "Structures And Properties Of Materials", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MST5002", + "title": "Materials Characterisation", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MST5666", + "title": "Industrial Attachment", + "moduleCredit": 4, + "department": "Materials Science and Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT2001", + "title": "Experiencing Engineering Leadership", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Engineering students only", + "corequisite": "" + }, + { + "moduleCode": "MT3001", + "title": "Systems Thinking and Engineering", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT4001", + "title": "Innovation and Entrepreneurial Strategy", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT4002", + "title": "Technology Management Strategy", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT4003", + "title": "Engineering Product Development", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "[TR3001 New Product Development] & [EE3031 Innovations & Enterprise 1]", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5001", + "title": "IP Management", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5002", + "title": "Management of Industrial R&D", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5003", + "title": "Creativity and Innovation", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5004", + "title": "User-Centred Engineering & Product Development", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5005", + "title": "IP Law For Engineers and Scientists", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5006", + "title": "Strategic & New Product Development", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "MT5006A New Product Development Process & MT5006B New Product Development and Corporate Strategy", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5006A", + "title": "New Product Development Process", + "moduleCredit": 2, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "MT5006 Strategic and New Product Development", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5006B", + "title": "New Product Development and Corporate Strategy", + "moduleCredit": 2, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "MT5006 Strategic and New Product Development", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5007", + "title": "Management of Technological Innovation", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "MT5007A Types and Patterns of Technological Innovation & MT5007B Technological Innovation Strategies", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5007A", + "title": "Types and Patterns of Technological Innovation", + "moduleCredit": 2, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "MT5007 Management of Technological Innovation", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5007B", + "title": "Technological Innovation Strategies", + "moduleCredit": 2, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "MT5007 Management of Technological Innovation", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5008", + "title": "Corporate Entrepreneurship", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "BMA5404 Entrepreneurship & Innovation, MT5008A Corporate Venture Creation and MT5008B Collaborative Corporate Entrepreneurship", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5008A", + "title": "Corporate Venture Creation", + "moduleCredit": 2, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "MT5008 Corporate Entrepreneurship", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5008B", + "title": "Collaborative Corporate Entrepreneurship", + "moduleCredit": 2, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "MT5008 Corporate Entrepreneurship", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5009", + "title": "Analyzing Hi-Technology Opportunities", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5010", + "title": "Technology Forecasting & Intelligence", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "MT5010A Technological Intelligence & MT5010B Intellectual Property Strategies to Support Technological Intelligence", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5010A", + "title": "Technology Intelligence Process and Methods", + "moduleCredit": 2, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "MT5010 Technology Forecasting & Intelligence", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5010B", + "title": "Technology Intelligence with IP Strategies", + "moduleCredit": 2, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "MT5010 Technology Forecasting & Intelligence", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5011", + "title": "Engineering Business Finance Fundamentals", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5012", + "title": "Marketing of High-Technology Products and Innovations", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5013", + "title": "Global Innovation Management", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "None, but having taken “MT5007 Management of Technological\nInnovation” is desirable.", + "corequisite": "" + }, + { + "moduleCode": "MT5014", + "title": "Systems Approach to Tech and Innov Mgt", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5015", + "title": "The Financial and Business Aspects of Intellectual Property (IP)", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "There are no pre-requisites. But it would be beneficial to the students to have taken the following modules/ programmes:\n�� IP Management (MT5001)\n�� Any foundation-level programme on IP (basics, principles, general application)", + "corequisite": "" + }, + { + "moduleCode": "MT5016", + "title": "Business Models for Hi-Tech Products", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5017", + "title": "Integrative Design Thinking Workshop", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5018", + "title": "Managing and Organizing Open Innovation", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5020", + "title": "Managing the Human elements of Technology Management", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "MT5020A", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5020A", + "title": "Human Aspects of Technological Innovation", + "moduleCredit": 2, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "MT5020 Managing the Human elements of Technology Management", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5021", + "title": "Problem Solving Skills for Engineering Managers", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5022", + "title": "Digital Disruption and Technology Strategy", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5023", + "title": "Technology-Based Entrepreneurial Strategy", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "MT4001 Innovation and Entrepreneurial Strategy", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5024", + "title": "Patent Data Analytics for Innovation Management", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5666", + "title": "Industrial Attachment", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5766", + "title": "Technology Management Internship", + "moduleCredit": 8, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "MT5966 Overseas Industrial Project and Attachment (12 MC),\nMT5866 Industrial Project and Attachment (12MC),\nMT5666 Industrial Attachment (4 MC)\nMT5900 MOT Research Project (8 MC)\nMT5901 Management Practicum (2 MC)\nMT5902 Management Extended Practicum (4 MC)\nMT5903 Technological Innovation Management Practicum (2 MC)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5866", + "title": "Industrial Project and Attachment", + "moduleCredit": 12, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "MT5966 Overseas Industrial Project and Attachment (12 MC)\nMT5666 Industrial Attachment (4 MC)\nMT5900 MOT Research Project (8 MC)\nMT5901 Management Practicum (2 MC)\nMT5902 Management Extended Practicum (4 MC)\nMT5903 Technological Innovation Management Practicum (2 MC)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5880", + "title": "Topics in Management of Technology", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Case by case basis. For AY09/10, a basic understanding\nof economics and numerical analysis is needed.", + "corequisite": "Case by case basis. For AY09/10, there are no" + }, + { + "moduleCode": "MT5880A", + "title": "Topics in Management of Technology - Techno-Economics Systems", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "Case by case basis. For AY09/10, there are no preclusions.", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Case by case basis. For AY09/10, a basic understanding of economics and numerical analysis is needed.", + "corequisite": "" + }, + { + "moduleCode": "MT5880B", + "title": "Topics in Management of Technology - Institutional Innovation", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Basic understanding of economics and management of technology.", + "corequisite": "" + }, + { + "moduleCode": "MT5880C", + "title": "Topics in MOT - Disruptive Technologies and Value Innovation", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5900", + "title": "Mot Research Project", + "moduleCredit": 8, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "MT5910 LaunchPad: Experiential Entrepreneurship, SDM5990 SDM Research Project & MT5903 Technological Innovation Management Practicum", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5901", + "title": "Management Practicum", + "moduleCredit": 2, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5902", + "title": "Management Extended Practicum", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5903", + "title": "Technological Innovation Management Practicum", + "moduleCredit": 2, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "MT5900 MOT Research Project\nSDM5990 SDM Research Project", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5910", + "title": "LaunchPad: Experiential Entrepreneurship", + "moduleCredit": 8, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "MT5900 MOT Research Project\nSDM5990 SDM Research Project", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5911", + "title": "Venture Funding", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "", + "corequisite": "Candidate must demonstrate strong interest and passion in entrepreneurship" + }, + { + "moduleCode": "MT5912", + "title": "Frugal Innovation", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "Product development courses are a plus", + "corequisite": "" + }, + { + "moduleCode": "MT5913", + "title": "TechLaunch - Experiential Entrepreneurship", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5920", + "title": "Enterprise Development", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5921", + "title": "Market Gaps - A Search for Innovation Opportunities", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5966", + "title": "Overseas Industrial Project and Attachment", + "moduleCredit": 12, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "MT5666 Industrial Attachment (8 MC), MT5900 MOT Research Project (8MC), MT5901 Management Practicum (2MC), MT5902 Management Extended Practicum (4MC)", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT5999", + "title": "Graduate Seminars", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT6001", + "title": "Research in Tech & Innovation Management", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MT6999", + "title": "Doctoral Seminars", + "moduleCredit": 8, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MTM5005", + "title": "Intermodal Freight Transport and Logistics", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1101", + "title": "Composition Major Study 1A", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1102", + "title": "Composition Major Study 1B", + "moduleCredit": 6, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA1101 Composition Major Study 1A", + "corequisite": "" + }, + { + "moduleCode": "MUA1103", + "title": "Composition Seminar 1A", + "moduleCredit": 0, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1104", + "title": "Composition Seminar 1B", + "moduleCredit": 0, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1105", + "title": "Music Technology", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1107", + "title": "Large Ensembles 1A", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1108", + "title": "Large Ensembles 1B", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1109", + "title": "Foundations for String Chamber Music", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1110", + "title": "Chamber Ensemble 1B", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1111", + "title": "Piano Ensemble 1A", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1112", + "title": "Piano Ensemble 1B", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1113", + "title": "Desktop Music Production", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1114", + "title": "Introduction to Electronic Music", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1115", + "title": "Foundations of Vocal Accompaniment / Sight-Reading", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1116", + "title": "Foundations of Instrumental Accompaniment", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1117", + "title": "Piano Major Study 1A", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1118", + "title": "First Year Brass Class B", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1119", + "title": "Conservatory Strings 1A", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1120", + "title": "Conservatory Strings 1B", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1121", + "title": "Conservatory Chamber Winds 1A", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1122", + "title": "Conservatory Chamber Winds 1B", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1123", + "title": "Bassoon Major Study 1A", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1124", + "title": "Bassoon Major Study 1B", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1125", + "title": "Clarinet Major Study 1A", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1126", + "title": "Clarinet Major Study 1B", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1127", + "title": "Flute Major Study 1A", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1128", + "title": "Flute Major Study 1B", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1129", + "title": "Oboe Major Study 1A", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1130", + "title": "Oboe Major Study 1B", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1131", + "title": "French Horn Major Study 1A", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1132", + "title": "French Horn Major Study 1B", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1133", + "title": "Trombone Major Study 1A", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1134", + "title": "Trombone Major Study 1B", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1135", + "title": "Trumpet Major Study 1A", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1136", + "title": "Trumpet Major Study 1B", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1137", + "title": "Tuba Major Study 1A", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1138", + "title": "Tuba Major Study 1B", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1139", + "title": "Violin Major Study 1A", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1140", + "title": "Violin Major Study 1B", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1141", + "title": "Viola Major Study 1A", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1142", + "title": "Viola Major Study 1B", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1143", + "title": "Violoncello Major Study 1A", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1144", + "title": "Violoncello Major Study 1B", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1145", + "title": "Double Bass Major Study 1A", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1146", + "title": "Double Bass Major Study 1B", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1147", + "title": "Percussion Major Study 1A", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1148", + "title": "Percussion Major Study 1B", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1149", + "title": "Practical Skills for the Versatile Percussionist A", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1150", + "title": "Practical Skills for the Versatile Percussionist B", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA1180 Basic Mechanics of Percussion A (BMPC-A)", + "corequisite": "" + }, + { + "moduleCode": "MUA1151", + "title": "First Year Jury", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1151A", + "title": "Jury 1A", + "moduleCredit": 1, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1153", + "title": "Noon Recital Series 1A", + "moduleCredit": 0, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1154", + "title": "Noon Recital Series 1B", + "moduleCredit": 0, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1155", + "title": "First Year Woodwinds Class A", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1156", + "title": "First Year Woodwinds Class B", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA1180 First Year Woodwinds Class A", + "corequisite": "" + }, + { + "moduleCode": "MUA1157", + "title": "Solfege 1", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YST students from Year 1 to Year 3 students, Year 4 students by permission only.", + "corequisite": "" + }, + { + "moduleCode": "MUA1158", + "title": "Solfege 2", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA1123", + "corequisite": "" + }, + { + "moduleCode": "MUA1161", + "title": "Foundational Studies on Principal Instrument", + "moduleCredit": 6, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1162", + "title": "Juried Performance Presentation", + "moduleCredit": 6, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1163", + "title": "The Profession of Music 1", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1164", + "title": "Recording as Creative Practice", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1165", + "title": "Music and Machines", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1166", + "title": "Introduction to Computing Media in Max", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1167", + "title": "The Profession of Music 2", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1170", + "title": "Fundamentals of Music Production and Recording 1", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1171", + "title": "Fundamentals of Music Production and Recording 2", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA1170 Fundamental Music Production and Recording 1", + "corequisite": "" + }, + { + "moduleCode": "MUA1172", + "title": "Critical Listening 1", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1173", + "title": "Critical Listening 2", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1180", + "title": "First Year Brass Class A", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1181", + "title": "First Year Brass Class B", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA1180 First Year Brass Class A", + "corequisite": "" + }, + { + "moduleCode": "MUA1190", + "title": "Applied Voice Major Study 1A", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1191", + "title": "Applied Voice Major Studies 1B", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA 1190 or Permission of Instructor", + "corequisite": "" + }, + { + "moduleCode": "MUA1192", + "title": "Chamber Singers 1", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Open to Voice Majors", + "corequisite": "" + }, + { + "moduleCode": "MUA1193", + "title": "Chamber Singers 2", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1196", + "title": "Diction for Singers 1", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1201", + "title": "Rudiments of Musicianship", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1223", + "title": "Desktop Mixing Production", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA1270", + "title": "Interdisciplinary Electronic Arts Survey", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2101", + "title": "Composition Major Study 2A", + "moduleCredit": 6, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA1102 Composition Major Study 1B", + "corequisite": "" + }, + { + "moduleCode": "MUA2102", + "title": "Composition Major Study 2B", + "moduleCredit": 6, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA2101 Composition Major Study 2A", + "corequisite": "" + }, + { + "moduleCode": "MUA2103", + "title": "Composition Seminar 2A", + "moduleCredit": 0, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2104", + "title": "Composition Seminar 2B", + "moduleCredit": 0, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2105", + "title": "Introduction To Computer Music 1", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA1114", + "corequisite": "" + }, + { + "moduleCode": "MUA2106", + "title": "Introduction To Computer Music 2", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA2105", + "corequisite": "" + }, + { + "moduleCode": "MUA2107", + "title": "Large Ensembles 2A", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2108", + "title": "Large Ensembles 2B", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2109", + "title": "Chamber Music", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "MUA1116", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2110", + "title": "Chamber Music in Mixed Ensemble", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "MUA1116", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2111", + "title": "Keyboard Literature I", + "moduleCredit": 1, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2112", + "title": "Keyboard Literature II", + "moduleCredit": 1, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2113", + "title": "Keyboard Skills For Piano Majors I", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2114", + "title": "Keyboard Skills For Piano Majors Ii", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2115", + "title": "Accompanying / Sight Reading A", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2116", + "title": "Accompanying B/Sight Reading", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2117", + "title": "Piano Major Study 2A", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2118", + "title": "Orchestral Repertoire for Brass 2B", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2120", + "title": "Orchestral Repertoire for Double Bass 2B", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA2119 Orchestral Repertoire for Double Bass 2A", + "corequisite": "" + }, + { + "moduleCode": "MUA2121", + "title": "Conservatory Chamber Winds 2A", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2122", + "title": "Conservatory Chamber Winds 2B", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2123", + "title": "Bassoon Major Study 2A", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2124", + "title": "Bassoon Major Study 2B", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2125", + "title": "Clarinet Major Study 2A", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2126", + "title": "Clarinet Major Study 2B", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2128", + "title": "Orchestral Repertoire for Woodwinds 2B", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA2127 Orchestral Repertoire for Woodwinds 2A", + "corequisite": "" + }, + { + "moduleCode": "MUA2129", + "title": "Oboe Major Study 2A", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2130", + "title": "Orchestral Repertoire for Percussion 2B", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2131", + "title": "Contemporary Music Performance", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2135", + "title": "Trumpet Major Study 2A", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2136", + "title": "Trumpet Major Study 2B", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2139", + "title": "Violin Major Study 2A", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2140", + "title": "Violin Major Study 2B", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2141", + "title": "Viola Major Study 2A", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2142", + "title": "Viola Major Study 2B", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2143", + "title": "Violoncello Major Study 2A", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2144", + "title": "Violoncello Major Study 2B", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2145", + "title": "Double Bass Major Study 2A", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2146", + "title": "Double Bass Major Study 2B", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2151", + "title": "Second Year Jury", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2151A", + "title": "Jury 2A", + "moduleCredit": 1, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2153", + "title": "Noon Recital Series 2A", + "moduleCredit": 0, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2154", + "title": "Noon Recital Series 2B", + "moduleCredit": 0, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2155", + "title": "Collaborative Piano Studies", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2156", + "title": "Collaborative Piano Studies", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2161", + "title": "Advanced Juried Performance Presentation", + "moduleCredit": 6, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2162", + "title": "Continuing Studies on Principal Instrument", + "moduleCredit": 6, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2163", + "title": "Leading and Guiding Through Music", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "MUA1167 The Profession of Music 2 or a successful interview", + "corequisite": "" + }, + { + "moduleCode": "MUA2170", + "title": "Multitrack Recording 1", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Basic Recording 2", + "corequisite": "" + }, + { + "moduleCode": "MUA2171", + "title": "Multitrack Recording 2", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Multitrack Recording 1", + "corequisite": "" + }, + { + "moduleCode": "MUA2172", + "title": "Room Acoustics", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "4th year standing", + "corequisite": "" + }, + { + "moduleCode": "MUA2173", + "title": "Acoustics and Psychoacoustics", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Basic Recording 2", + "corequisite": "" + }, + { + "moduleCode": "MUA2174", + "title": "Musical Acoustics", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Acoustics and Psychoacoustics", + "corequisite": "" + }, + { + "moduleCode": "MUA2175", + "title": "AAS Project 1", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2176", + "title": "AAS Project 2", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA2175 AAS Project 1", + "corequisite": "" + }, + { + "moduleCode": "MUA2180", + "title": "Orchestral Repertoire for Brass 2A", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA 1181 First Year Brass Class B", + "corequisite": "" + }, + { + "moduleCode": "MUA2181", + "title": "Orchestral Repertoire for Brass 2B", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA2180 Orchestral Repertoire for Brass 2A", + "corequisite": "" + }, + { + "moduleCode": "MUA2182", + "title": "Percussion Audition Techniques 2A", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA1150 Basic Mechanics of Percussion B", + "corequisite": "" + }, + { + "moduleCode": "MUA2183", + "title": "Percussion Audition Techniques 2B", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA2182 Orchestral Repertoire for Percussion 2A", + "corequisite": "" + }, + { + "moduleCode": "MUA2184", + "title": "Orchestral Repertoire for Double Bass 2A", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA1107 Large Ensembles 1A", + "corequisite": "" + }, + { + "moduleCode": "MUA2185", + "title": "Orchestral Repertoire for Woodwinds 2A", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA1156 First Year Woodwinds Class B", + "corequisite": "" + }, + { + "moduleCode": "MUA2186", + "title": "Orchestral Repertoire for Harp 2A", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA1107 Large Ensembles 1A", + "corequisite": "" + }, + { + "moduleCode": "MUA2187", + "title": "Orchestral Repertoire for Harp 2B", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA2186 Orchestral Repertoire for Harp 2A", + "corequisite": "" + }, + { + "moduleCode": "MUA2190", + "title": "Applied Voice Major Study 2A", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA 1191 or Permission of Instructor", + "corequisite": "" + }, + { + "moduleCode": "MUA2191", + "title": "Applied Voice Major Study 2B", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA 2190 or Permission of Instructor", + "corequisite": "" + }, + { + "moduleCode": "MUA2192", + "title": "Chambers Singers 3", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Open to Voice Majors", + "corequisite": "" + }, + { + "moduleCode": "MUA2193", + "title": "Chambers Singers 4", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Open to Voice Majors", + "corequisite": "" + }, + { + "moduleCode": "MUA2196", + "title": "Diction for Singers 2", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2201", + "title": "Keyboard Literature I", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2202", + "title": "Keyboard Literature II", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2205", + "title": "Rhythmic Devices in Performance 1", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "Only open to students at Yong Siew Toh Conservatory", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "N.A.", + "corequisite": "N.A." + }, + { + "moduleCode": "MUA2206", + "title": "Harmonic Hearing for Performers", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "Only open to students at Yong Siew Toh Conservatory", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "N.A.", + "corequisite": "N.A." + }, + { + "moduleCode": "MUA2207", + "title": "Introduction to World Music", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2208", + "title": "Advanced Contemporary Music Performance", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2209", + "title": "Advanced Contemporary Music Performance", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2210", + "title": "Rhythmical Devices in Performance 2", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA2205", + "corequisite": "" + }, + { + "moduleCode": "MUA2215B", + "title": "Orchestral Excerpts for Violin", + "moduleCredit": 1, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2216B", + "title": "Orchestral Excerpts for Viola", + "moduleCredit": 1, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2217B", + "title": "Orchestral Excerpts for Cello", + "moduleCredit": 1, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2218B", + "title": "Orchestral Excerpts for Double Bass", + "moduleCredit": 1, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2231", + "title": "Orchestral Excerpts for Strings 2A", + "moduleCredit": 1, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2232", + "title": "Orchestral Excerpts for Strings 2B", + "moduleCredit": 1, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2240", + "title": "Collaborative Piano - Piano Ensemble", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "MUA2155", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA1112", + "corequisite": "" + }, + { + "moduleCode": "MUA2241", + "title": "Collaborative Piano - Vocal Accompaniment", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "MUA2155; or\n[MUA2242 and MUA2243]", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA1115", + "corequisite": "" + }, + { + "moduleCode": "MUA2242", + "title": "Collaborative Piano - Instrumental Accompaniment", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "MUA2155; or\n[MUA2241 and MUA2243]", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA1116", + "corequisite": "" + }, + { + "moduleCode": "MUA2243", + "title": "Collaborative Piano - Chamber Music", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "MUA2155; or\n[MUA2241 and MUA2242]", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA1116", + "corequisite": "" + }, + { + "moduleCode": "MUA2251", + "title": "Live Interactivity", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2255", + "title": "Applied Secondary A", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2256", + "title": "Applied Secondary B", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2270", + "title": "Synthesis and Signal Processing", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA2271", + "title": "Virtual Instrument Sound Design", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3101", + "title": "Composition Major Study 3A", + "moduleCredit": 6, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA2102 Composition Major Study 2B", + "corequisite": "" + }, + { + "moduleCode": "MUA3102", + "title": "Composition Major Study 3B", + "moduleCredit": 6, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA3101 Composition Major Study 3A", + "corequisite": "" + }, + { + "moduleCode": "MUA3103", + "title": "Composition Seminar 3A", + "moduleCredit": 0, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3104", + "title": "Composition Seminar 3B", + "moduleCredit": 0, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3105", + "title": "Conducting", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "Any level 2000 modules offered by the conservatory for conservatory students, or CET entry requirements.", + "corequisite": "" + }, + { + "moduleCode": "MUA3107", + "title": "Large Ensembles 3A", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3108", + "title": "Large Ensembles 3B", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3109", + "title": "Chamber Music", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA2109", + "corequisite": "" + }, + { + "moduleCode": "MUA3110", + "title": "Chamber Music in Mixed Ensemble", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA2110", + "corequisite": "" + }, + { + "moduleCode": "MUA3111", + "title": "Keyboard Literature III", + "moduleCredit": 1, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3112", + "title": "Keyboard Literature IV", + "moduleCredit": 1, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3113", + "title": "Keyboard Skills For Piano Majors III", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3114", + "title": "Keyboard Skills For Piano Majors Iv", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3115", + "title": "Orchestral Studies for Pianists", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "The module is compulsory for conservatory piano majors, however admission to the YSTEO would be possible through audition by the Head of Keyboard Studies.", + "corequisite": "" + }, + { + "moduleCode": "MUA3116", + "title": "Pedagogy for Orchestral Instrumentalists", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Any of the Year 2 Major Study modules functions as a prerequisite. The module is compulsory for the fulfilment of the major in any of the orchestral instrument major studies.", + "corequisite": "" + }, + { + "moduleCode": "MUA3120", + "title": "Orchestral Repertoire for Double Bass 3B", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA3119 Orchestral Repertoire for Double Bass 3A", + "corequisite": "" + }, + { + "moduleCode": "MUA3128", + "title": "Orchestral Repertoire for Woodwinds 3B", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA3127 Orchestral Repertoire for Woodwinds 3A", + "corequisite": "" + }, + { + "moduleCode": "MUA3130", + "title": "Percussion Audition Techniques 3B", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA3129 Orchestral Repertoire for Percussion 3A", + "corequisite": "" + }, + { + "moduleCode": "MUA3131", + "title": "Orchestral Excerpts for Strings 3A", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3132", + "title": "Orchestral Excerpts for Strings 3B", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3133", + "title": "Compositional Discourse", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Student must be majoring at YSTCM in music composition.", + "corequisite": "" + }, + { + "moduleCode": "MUA3139", + "title": "Violin Major Study 3A", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3140", + "title": "Violin Major Study 3B", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3143", + "title": "Violoncello Major Study 3A", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3144", + "title": "Violoncello Major Study 3B", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3151", + "title": "Third Year Jury", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3153", + "title": "Noon Recital Series 3A", + "moduleCredit": 0, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3154", + "title": "Noon Recital Series 3B", + "moduleCredit": 0, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3155", + "title": "Collaborative Piano Studies", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3156", + "title": "Collaborative Piano Studies", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3161", + "title": "Junior Recital", + "moduleCredit": 6, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3162", + "title": "Intermediate Studies on Principal Instrument", + "moduleCredit": 6, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3163", + "title": "Musical Pathways", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA2163", + "corequisite": "" + }, + { + "moduleCode": "MUA3164", + "title": "Career Development Project", + "moduleCredit": 3, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Expanding Musical Horizons", + "corequisite": "" + }, + { + "moduleCode": "MUA3170", + "title": "Audio Postproduction I", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA2171 Multitrack Recording 2", + "corequisite": "" + }, + { + "moduleCode": "MUA3171", + "title": "Production Listening", + "moduleCredit": 3, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Multitrack Recording 2, and Acoustics and\nPsychoacoustics", + "corequisite": "" + }, + { + "moduleCode": "MUA3172", + "title": "Audio Postproduction 2", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA3170", + "corequisite": "" + }, + { + "moduleCode": "MUA3173", + "title": "Electroacoustics", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA2172 Room Acoustics", + "corequisite": "" + }, + { + "moduleCode": "MUA3175", + "title": "AAS Project 3", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA2176 AAS Project 2", + "corequisite": "" + }, + { + "moduleCode": "MUA3176", + "title": "AAS Project 4", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA3175 AAS Project 3", + "corequisite": "" + }, + { + "moduleCode": "MUA3177", + "title": "Music Programming & Production", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA2163 Leading and Guiding Through Music, or another\nrelated Level 2000 Music module.", + "corequisite": "" + }, + { + "moduleCode": "MUA3178", + "title": "MS / MCP 3rd Year Project", + "moduleCredit": 6, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must either be enrolled as Majors in Music & Society,\nand Music, Collaboration & Production or to have declared the\nmajor areas as a second major in relation to their principal\ndegree", + "corequisite": "" + }, + { + "moduleCode": "MUA3179", + "title": "Capstone Project for Second Major in Music", + "moduleCredit": 6, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "Restricted to Second Majors in Music students only.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must be enrolled in the Second Major, as agreed\nwith the Conservatory and their home department / faculty,\nand have completed a minimum of 16 MCs in their area of\nmusical concentration.", + "corequisite": "" + }, + { + "moduleCode": "MUA3181", + "title": "Advanced Concepts in Orchestral Repertoire", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3182", + "title": "Percussion Audition Techniques 3A", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA2183 Orchestral Repertoire for Percussion 2B", + "corequisite": "" + }, + { + "moduleCode": "MUA3184", + "title": "Orchestral Repertoire for Double Bass 3A", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA2120 Orchestral Repertoire for Double Bass 2B", + "corequisite": "" + }, + { + "moduleCode": "MUA3185", + "title": "Orchestral Repertoire for Woodwinds 3A", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA2128 Orchestral Repertoire for Woodwinds 2B", + "corequisite": "" + }, + { + "moduleCode": "MUA3186", + "title": "Orchestral Repertoire for Harp 3A", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA2187 Orchestral Repertoire for Harp 2B", + "corequisite": "" + }, + { + "moduleCode": "MUA3187", + "title": "Orchestral Repertoire for Harp 3B", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA3186 Orchestral Repertoire for Harp 3A", + "corequisite": "" + }, + { + "moduleCode": "MUA3188", + "title": "Live Sound Reinforcement", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA2170 Multitrack Recording 1 and MUA2171 Multitrack Recording 2", + "corequisite": "" + }, + { + "moduleCode": "MUA3189", + "title": "Live Sound Reinforcement Project", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA3188 Live Sound Reinforcement", + "corequisite": "" + }, + { + "moduleCode": "MUA3190", + "title": "Applied Voice Major Study 3B", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA 2191 or Permission of Instructor", + "corequisite": "" + }, + { + "moduleCode": "MUA3191", + "title": "Junior Recital in Voice", + "moduleCredit": 6, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA 3190 or Permission of Instructor", + "corequisite": "" + }, + { + "moduleCode": "MUA3194", + "title": "Voice Literature 1", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUT 2118 or Permission of Instructor", + "corequisite": "" + }, + { + "moduleCode": "MUA3195", + "title": "Voice Literature 2", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA 3194 or Permission of Instructor", + "corequisite": "" + }, + { + "moduleCode": "MUA3201", + "title": "Advanced Contemporary Music Performance", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3202", + "title": "Advanced Contemporary Music Performance", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3203", + "title": "Performance Practices of 20thC Composers", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3204", + "title": "Conducting Contemporary Instrumental Music", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA3163 Musical Pathways, or MUA3105 Conducting", + "corequisite": "" + }, + { + "moduleCode": "MUA3205", + "title": "Jazz Study and Performance 1", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUS students (Year 3 & 4). Non-YST students will need to\ntake a music theory placement test to ensure that they\nhave a reasonable command of basic music theory.", + "corequisite": "" + }, + { + "moduleCode": "MUA3206", + "title": "Jazz Study and Performance 2", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA3205", + "corequisite": "" + }, + { + "moduleCode": "MUA3207", + "title": "Collaborative Composition", + "moduleCredit": 3, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MCM 1-IV and Introduction to Professional Studies", + "corequisite": "" + }, + { + "moduleCode": "MUA3209", + "title": "Business for Musicians", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3210", + "title": "Chamber Singers 1", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3211", + "title": "Chamber Singers 2", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3212", + "title": "Improvisational Styles and Techniques", + "moduleCredit": 3, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3213", + "title": "Music Notation and Engraving", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3214", + "title": "Introduction to Pedagogy", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3215", + "title": "World Music for Creative Performance and Workshops", + "moduleCredit": 3, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA1163 or permission of the instructor", + "corequisite": "" + }, + { + "moduleCode": "MUA3216", + "title": "Performance and Interaction", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA3163", + "corequisite": "" + }, + { + "moduleCode": "MUA3218", + "title": "Introduction to Piano Technology", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students will be expected to have knowledge of music theory, ear training and keyboard skills.", + "corequisite": "" + }, + { + "moduleCode": "MUA3219", + "title": "World Music Ensemble", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3220", + "title": "World Music Ensemble", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA3219", + "corequisite": "" + }, + { + "moduleCode": "MUA3221", + "title": "Intensive Music Engagement Practicum", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3222", + "title": "SEAsian Regional Creative Project", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "Students will apply directly to the instructor seeking permission to join. The Professional Integration faculty and administration will decide who is admitted based on their work and drive in other courses and activities. Students must demonstrate genuine interest and capacity for the goals of the course to be considered. Travel to the country where the project is to take place is required, so students must willing and able to travel to the specified country.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3223", + "title": "Cultural Encounters - Bali Excursion and Study Tour", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "Students will apply directly to the instructor seeking permission to join. The Professional Integration faculty and administration will decide who is admitted based on their work and drive in other courses and activities. Students must demonstrate genuine interest and capacity for the goals of the course to be considered.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3224", + "title": "Intermediate Keyboard Studies", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Audition. Approximate four years of piano studying with sight-reading skill.", + "corequisite": "" + }, + { + "moduleCode": "MUA3225", + "title": "Early Advanced Keyboard Studies", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA3204. Or audition. Approximate five years of piano studying with sight-reading skill.", + "corequisite": "" + }, + { + "moduleCode": "MUA3226", + "title": "Collaboratory", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "BMus student at YSTCM", + "corequisite": "" + }, + { + "moduleCode": "MUA3227", + "title": "Collaboratory B", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA 3226 Collaboratory A", + "corequisite": "" + }, + { + "moduleCode": "MUA3228", + "title": "Re-imagining Pianism through Analysis", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This is an elective open to Conservatory piano students and all NUS students. Students are required to be fluent in harmony (functional harmony and chromatic harmony) as the class offers an application of (rather than an introduction to) harmony. As such, NUS students would be advised to have taken either MUA 3224 or MUA 1201. For those seeking direct entry MEP study at Junior College would offer sufficient background as well. However is not a must to have experienced either of the above to be deemed as having sufficient background. Students must decide for themselves after 2 weeks of classes.", + "corequisite": "" + }, + { + "moduleCode": "MUA3230", + "title": "Music Cognition", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Introduction to Psychology (PL1101E) is recommended but not required", + "corequisite": "" + }, + { + "moduleCode": "MUA3240", + "title": "Collaborative Piano - Piano Ensemble", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA2240; or\nMUA2155", + "corequisite": "" + }, + { + "moduleCode": "MUA3241", + "title": "Collaborative Piano - Vocal Accompaniment", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA2241; or MUA2155; or\n[MUA2242 and MUA2243]", + "corequisite": "" + }, + { + "moduleCode": "MUA3242", + "title": "Collaborative Piano - Instrumental Accompaniment", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA2242; or MUA2155; or\n[MUA2241 and MUA2243]", + "corequisite": "" + }, + { + "moduleCode": "MUA3243", + "title": "Collaborative Piano - Chamber Music", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA2243; or MUA2155; or\n[MUA2241 and MUA2242]", + "corequisite": "" + }, + { + "moduleCode": "MUA3255", + "title": "Applied Secondary C", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3256", + "title": "Applied Secondary D", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3260", + "title": "Internship in Music Related Pathways", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3261", + "title": "Career Development Group Project", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Musical Pathways, Leading and Guiding through Music.", + "corequisite": "" + }, + { + "moduleCode": "MUA3263", + "title": "Internship in Music Related Pathways 2", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3264", + "title": "Career Development Independent Project", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Pre-requisite of 5 MCs of Professional Development\nmodules", + "corequisite": "" + }, + { + "moduleCode": "MUA3265", + "title": "Career Development Independent Project 2", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Musical Pathways, Leading and Guiding, Career development independent or Career development group project, Approval of project proposal by Professional Integration faculty committee", + "corequisite": "" + }, + { + "moduleCode": "MUA3270", + "title": "Architectural Acoustics and Acoustical Measurement", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Acoustics and Psychoacoustics", + "corequisite": "" + }, + { + "moduleCode": "MUA3271", + "title": "Acoustics and Sound Production for Performers", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3274", + "title": "Sonic Environments", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3275", + "title": "Sonic Circuits", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "All ECE students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3276", + "title": "Experimental Music Realizations", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3277", + "title": "Computer-Aided Composition", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA3301", + "title": "Preparing for International Competition", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Participation in this module requires approval from the\nHead of Major Area which should normally be based also\non an average grade of A- in relation to instrumental major\nstudy modules.", + "corequisite": "" + }, + { + "moduleCode": "MUA4101", + "title": "Composition Major Study 4A", + "moduleCredit": 6, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA3102", + "corequisite": "" + }, + { + "moduleCode": "MUA4102", + "title": "Composition Major Study 4B", + "moduleCredit": 8, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA4101 Compositional Major Study 4A", + "corequisite": "" + }, + { + "moduleCode": "MUA4103", + "title": "Composition Seminar 4A", + "moduleCredit": 0, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA4104", + "title": "Composition Seminar 4B", + "moduleCredit": 0, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA4105", + "title": "Basic Conducting", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA4107", + "title": "Large Ensembles 4A", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA4108", + "title": "Leadership Skills in an Orchestral Context", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "At least two previous semesters in the 2 MC Large Ensembles module.", + "corequisite": "" + }, + { + "moduleCode": "MUA4109", + "title": "Chamber Music", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA3109", + "corequisite": "" + }, + { + "moduleCode": "MUA4110", + "title": "Chamber Music in Mixed Ensemble", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA3110", + "corequisite": "" + }, + { + "moduleCode": "MUA4113", + "title": "Piano Pedagogy", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA4114", + "title": "Piano Pedagogy B", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA4119", + "title": "Conservatory Strings 4A", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA4139", + "title": "Violin Major Study 4A", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA4140", + "title": "Violin Major Study 4B", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA4143", + "title": "Violoncello Major Study 4A", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA4144", + "title": "Violoncello Major Study 4B", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA4151", + "title": "Senior Recital", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA4151A", + "title": "Jury 4A", + "moduleCredit": 1, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA4153", + "title": "Noon Recital Series 4A", + "moduleCredit": 0, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA4154", + "title": "Noon Recital Series 4B", + "moduleCredit": 0, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA4155", + "title": "Collaborative Piano Studies", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA4161", + "title": "Advanced Studies on Principal Instrument", + "moduleCredit": 6, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA4162", + "title": "Senior Recital - Instrumental Performance Capstone", + "moduleCredit": 10, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA4171", + "title": "Audio for Media", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Multitrack Recording 2", + "corequisite": "" + }, + { + "moduleCode": "MUA4172", + "title": "Internship in Audio Arts and Sciences 1", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "4th year standing", + "corequisite": "" + }, + { + "moduleCode": "MUA4173", + "title": "Audio for Media 1", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA4170 Audio Postproduction II", + "corequisite": "" + }, + { + "moduleCode": "MUA4174", + "title": "Audio for Media 2", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA4173 Audio for Media 1", + "corequisite": "" + }, + { + "moduleCode": "MUA4175", + "title": "AAS Final Project", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA3176 AAS Project 4", + "corequisite": "" + }, + { + "moduleCode": "MUA4176", + "title": "Music Production and Marketing", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA1170 Basic Recording 1, MUA1171 Basic Recording 2, MUA2170 Multitrack Recording 1, MUA2170 Multitrack Recording 2", + "corequisite": "" + }, + { + "moduleCode": "MUA4177", + "title": "Music Production and Marketing II", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA4176 Music Production and Marketing I", + "corequisite": "" + }, + { + "moduleCode": "MUA4178", + "title": "MS / MCP Capstone Project", + "moduleCredit": 10, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Student must be enrolled at YSTC in Music & Society, and Music,\nCollaboration & Production", + "corequisite": "" + }, + { + "moduleCode": "MUA4179", + "title": "Final Project", + "moduleCredit": 8, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "4th year standing", + "corequisite": "" + }, + { + "moduleCode": "MUA4180", + "title": "Internship in Audio Arts and Science 2", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "4th year standing", + "corequisite": "" + }, + { + "moduleCode": "MUA4181", + "title": "Professional Concepts in Orchestral Repertoire", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA4190", + "title": "Applied Voice Major Study 4A", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA 3191 or Permission of Instructor", + "corequisite": "" + }, + { + "moduleCode": "MUA4191", + "title": "Senior Recital in Voice", + "moduleCredit": 10, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA 4190 or Permission of Instructor", + "corequisite": "" + }, + { + "moduleCode": "MUA4203", + "title": "Advanced Conducting I", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA3163, grade must be above A- plus a successful audition", + "corequisite": "" + }, + { + "moduleCode": "MUA4205", + "title": "Advanced Conducting II", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA4203 or MUA4204", + "corequisite": "" + }, + { + "moduleCode": "MUA4208", + "title": "Advanced Leadership in an Orchestral Context", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA4108 Leadership Skills in an Orchestral Context with a grade of at least a B.", + "corequisite": "" + }, + { + "moduleCode": "MUA4209", + "title": "Chamber Music 4", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA4109 Chamber Music", + "corequisite": "" + }, + { + "moduleCode": "MUA4210", + "title": "Chamber Music in Mixed Ensemble 4", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA4110 Chamber Music in Mixed Ensemble", + "corequisite": "" + }, + { + "moduleCode": "MUA4215", + "title": "Vocal Pedagogy", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA4215B", + "title": "Orchestral Excerpts for Violin", + "moduleCredit": 1, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA4216", + "title": "Orchestral Excerpts For Viola", + "moduleCredit": 1, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA4217", + "title": "Orchestral Excerpts For Cello", + "moduleCredit": 1, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA4217B", + "title": "Orchestral Excerpts for Cello", + "moduleCredit": 1, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA4218", + "title": "Orchestral Excerpts For Double Bass", + "moduleCredit": 1, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA4219", + "title": "Advanced Chamber Ensemble", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA4220", + "title": "Advanced Chamber Ensemble", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA4226", + "title": "Collaboratory C", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA3227 Collaboratory B", + "corequisite": "" + }, + { + "moduleCode": "MUA4227", + "title": "Collaboratory D", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA 4226 Collaboratory C", + "corequisite": "" + }, + { + "moduleCode": "MUA4228", + "title": "Advanced Chamber Ensemble", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA4229", + "title": "Advanced Chamber Ensemble", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA4231", + "title": "Orchestral Excerpts for Strings 4A", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA4232", + "title": "Orchestral Excerpts for Strings 4B", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA4231 Orchestral Excerpts for Strings 4A", + "corequisite": "" + }, + { + "moduleCode": "MUA4240", + "title": "Collaborative Piano - Piano Ensemble", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA3240", + "corequisite": "" + }, + { + "moduleCode": "MUA4241", + "title": "Collaborative Piano - Vocal Accompaniment", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA3241", + "corequisite": "" + }, + { + "moduleCode": "MUA4242", + "title": "Collaborative Piano - Instrumental Accompaniment", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA3242", + "corequisite": "" + }, + { + "moduleCode": "MUA4243", + "title": "Collaborative Piano - Chamber Music", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA3243", + "corequisite": "" + }, + { + "moduleCode": "MUA4271", + "title": "Advanced Live Sound Reinforcement 1", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA3188 Live Sound Reinforcement", + "corequisite": "" + }, + { + "moduleCode": "MUA4272", + "title": "Advanced Live Sound Reinforcement 2", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA4271 Advanced Live Sound Reinforcement 1", + "corequisite": "" + }, + { + "moduleCode": "MUA4301", + "title": "Advanced Preparation in International Competition", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Participation in this module requires approval from the\nHead of Major which should normally be based also on an\naverage grade of A- in relation to instrumental major study\nmodules.", + "corequisite": "" + }, + { + "moduleCode": "MUA4309", + "title": "Chamber Music 5", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA4209 Chamber Music", + "corequisite": "" + }, + { + "moduleCode": "MUA4310", + "title": "Chamber Music in Mixed Ensemble 5", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA4210 Chamber Music in Mixed Ensemble", + "corequisite": "" + }, + { + "moduleCode": "MUA4340", + "title": "Collaborative Piano - Piano Ensemble 4", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA4240 Collaborative Piano – Piano Ensemble", + "corequisite": "" + }, + { + "moduleCode": "MUA4341", + "title": "Collaborative Piano - Vocal Accompaniment 4", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA4241 Collaborative Piano – Vocal Accompaniment", + "corequisite": "" + }, + { + "moduleCode": "MUA4342", + "title": "Collaborative Piano - Instrumental Accompaniment 4", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA4242 Collaborative Piano – Instrumental Accompaniment", + "corequisite": "" + }, + { + "moduleCode": "MUA4343", + "title": "Collaborative Piano - Chamber Music 4", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA4243 Collaborative Piano – Chamber Music", + "corequisite": "" + }, + { + "moduleCode": "MUA4409", + "title": "Chamber Music 6", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA4309 Chamber Music", + "corequisite": "" + }, + { + "moduleCode": "MUA4410", + "title": "Chamber Music in Mixed Ensemble 6", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA4310 Chamber Music in Mixed Ensemble", + "corequisite": "" + }, + { + "moduleCode": "MUA4440", + "title": "Collaborative Piano - Piano Ensemble 5", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA4340 Collaborative Piano – Piano Ensemble", + "corequisite": "" + }, + { + "moduleCode": "MUA4441", + "title": "Collaborative Piano - Vocal Accompaniment 5", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA4341 Collaborative Piano – Vocal Accompaniment", + "corequisite": "" + }, + { + "moduleCode": "MUA4442", + "title": "Collaborative Piano - Instrumental Accompaniment 5", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA4342 Collaborative Piano – Instrumental Accompaniment", + "corequisite": "" + }, + { + "moduleCode": "MUA4443", + "title": "Collaborative Piano - Chamber Music 5", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA4343 Collaborative Piano – Chamber Music", + "corequisite": "" + }, + { + "moduleCode": "MUA4540", + "title": "Collaborative Piano - Piano Ensemble 6", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA4440 Collaborative Piano – Piano Ensemble", + "corequisite": "" + }, + { + "moduleCode": "MUA4541", + "title": "Collaborative Piano Vocal Accompaniment 6", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA4441 Collaborative Piano – Vocal Accompaniment", + "corequisite": "" + }, + { + "moduleCode": "MUA4542", + "title": "Collaborative Piano - Instrumental Accompaniment 6", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA4442 Collaborative Piano – Instrumental Accompaniment", + "corequisite": "" + }, + { + "moduleCode": "MUA4543", + "title": "Collaborative Piano - Chamber Music 6", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA4443 Collaborative Piano – Chamber Music", + "corequisite": "" + }, + { + "moduleCode": "MUA5105", + "title": "Leadership in Orchestral Conducting", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA3105 Conducting or MUA3163 Musical Pathways; or permission of instructor.", + "corequisite": "" + }, + { + "moduleCode": "MUA5107", + "title": "Large Ensembles 5A", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA5108", + "title": "Large Ensembles 5B", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA5109", + "title": "Chamber Ensemble 5A", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA5110", + "title": "Chamber Ensemble 5B", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA5111", + "title": "Large Ensembles 5C", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA5112", + "title": "Large Ensembles 5d", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA5113", + "title": "Chamber Ensemble 5C", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA5114", + "title": "Chamber Ensemble 5d", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA5115", + "title": "Ensemble Study 5A", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA5116", + "title": "Ensemble Study 5B", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA5115 Ensemble Study 5A", + "corequisite": "" + }, + { + "moduleCode": "MUA5155", + "title": "Major Study 5A", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA5156", + "title": "Major Study 5B", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA5157", + "title": "Major Study 5C", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA5158", + "title": "Major Study 5d", + "moduleCredit": 5, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA5161", + "title": "Major Study 5A", + "moduleCredit": 8, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA5162", + "title": "Major Study 5B", + "moduleCredit": 8, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA5195", + "title": "Recital A", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA5196", + "title": "Recital B", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUA6115", + "title": "Ensemble Study 6A", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA5116 Ensemble Study 5B", + "corequisite": "" + }, + { + "moduleCode": "MUA6116", + "title": "Ensemble Study 6B", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA6115 Ensemble Study 6A", + "corequisite": "" + }, + { + "moduleCode": "MUA6161", + "title": "Major Study 6A", + "moduleCredit": 8, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA5162 Major Study 5B", + "corequisite": "" + }, + { + "moduleCode": "MUA6162", + "title": "Major Study 6B", + "moduleCredit": 8, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUA6161 Major Study 6A", + "corequisite": "" + }, + { + "moduleCode": "MUH1100", + "title": "Understanding and Describing Music", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUH1101", + "title": "Foundations for Musical Discovery", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUH2201", + "title": "Classical Styles and Romantic Spirits", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUH2202", + "title": "What Was, and Is, Popular Music?", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUH2203", + "title": "Music of the Church and State", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUH3202", + "title": "Musicology", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUH3203", + "title": "The Evolution of Music for the Stage", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUH3205", + "title": "Chamber Music Since 1740", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUH1101 Foundations for Musical Discovery and / or permission of instructor.", + "corequisite": "" + }, + { + "moduleCode": "MUH4203", + "title": "Music Criticism", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "A second-year sequence of modules in either Music History or the history of a related Arts discipline", + "corequisite": "" + }, + { + "moduleCode": "MUH4204", + "title": "Music History for Post-Graduate Placement", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUL1101", + "title": "Patrons Of The Arts", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUL1105", + "title": "Italian for Musicians 1", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUL1106", + "title": "Italian for Musicians 2", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LAI 1731 or MUL1105", + "corequisite": "" + }, + { + "moduleCode": "MUL1107", + "title": "French for Musicians 1", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUL1108", + "title": "French for Musicians 2", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUL1109", + "title": "German for Musicians 1", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUL1110", + "title": "German for Musicians 2", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUL2102", + "title": "Patrons of the Arts", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "GEM1029, GET1019", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUL2101 Critical Thinking for Musicians", + "corequisite": "" + }, + { + "moduleCode": "MUL2202", + "title": "Technology and Artistic Innovations", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUL2203", + "title": "The Art of Rituals and Recreation", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUL3201", + "title": "Art and Identity", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "GEM1030, GEH1038", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUL3202", + "title": "Technology and Artistic Innovators", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "GEM2021 GEH1048", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUL3203", + "title": "The Art of Rituals and Recreation", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "GEM2022, GEH1039", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUT1101", + "title": "Introduction to Musical Concepts and Materials", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Entrance into YSTCM BMus programme or satisfactory grade on the YSTCM theory skills exam", + "corequisite": "" + }, + { + "moduleCode": "MUT1201", + "title": "Introduction to Classical Music Composition", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUT2201", + "title": "Harmonic Practices", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUT1101: Introduction to Musical Concepts and Materials", + "corequisite": "" + }, + { + "moduleCode": "MUT2202", + "title": "Counterpoint Through the Ages", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUT1101: Introduction to Musical Concepts and Materials", + "corequisite": "" + }, + { + "moduleCode": "MUT2203", + "title": "Texture and Timbre", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUT1101 Musical Concepts and Materials", + "corequisite": "" + }, + { + "moduleCode": "MUT2204", + "title": "Formal Practices", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUT1101: Introduction to Musical Concepts and Materials", + "corequisite": "" + }, + { + "moduleCode": "MUT2205", + "title": "Text and Music", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUT1101 Introduction to MCM", + "corequisite": "" + }, + { + "moduleCode": "MUT3113", + "title": "Orchestration A", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUT 2203 Texture and Timbre", + "corequisite": "" + }, + { + "moduleCode": "MUT3114", + "title": "Orchestration B", + "moduleCredit": 3, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUT3201", + "title": "Modern Music", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUT2118 Musical Concepts and Materials IV", + "corequisite": "" + }, + { + "moduleCode": "MUT3201C", + "title": "Compositional Approaches since WWII", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completion of core BMus requirements (MCM 1-IV, CAM, Music and Context)", + "corequisite": "" + }, + { + "moduleCode": "MUT3202", + "title": "Sonata Form", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUT1101 + any 3 out of the following 5 modules:\n(MUT2201, MUT2202, MUT2203, MUT2204, MUT2205)", + "corequisite": "" + }, + { + "moduleCode": "MUT3211", + "title": "Tonal Counterpoint", + "moduleCredit": 3, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUT 1121, MUT 1122, MUT 2117, MUT 2118", + "corequisite": "" + }, + { + "moduleCode": "MUT3212", + "title": "Modal Counterpoint", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUT1101: Introduction to MCM;\n3 Core Compositional Engagement (Theory) Electives and/or permission of the instructor", + "corequisite": "" + }, + { + "moduleCode": "MUT3213", + "title": "Romantic Styles", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUT1101: Introduction to Musical Concepts and Materials 3 Core Compositional Engagement (Theory) Electives and/or permission of the instructor", + "corequisite": "" + }, + { + "moduleCode": "MUT3214", + "title": "Concerto and Cadenza", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUT1101: Introduction to Musical Concepts and Materials 3 Core Compositional Engagement (Theory) Electives and/or permission of the instructor", + "corequisite": "" + }, + { + "moduleCode": "MUT3215", + "title": "Composition for Non-majors", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completion of Core Curriculum in Analysis and Composition (MUT1121 + 3 core electives)\n\nFor students on older curriculum: MUT 1121, MUT 1122, MUT 2117, MUT 2118", + "corequisite": "" + }, + { + "moduleCode": "MUT3216", + "title": "Bach Suites", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUT1101: Introduction to MCM", + "corequisite": "" + }, + { + "moduleCode": "MUT3220", + "title": "Wind Ensemble Arranging/Composition", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUT2203: Texture and Timbre", + "corequisite": "" + }, + { + "moduleCode": "MUT3221", + "title": "Writing for Chinese Ensembles", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MUT3222", + "title": "Choral Composition", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MUT 1101: Intro to MCM\n(Or Placement Test for NUS students)", + "corequisite": "" + }, + { + "moduleCode": "MUT3223", + "title": "Early Twentieth-Century Music", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completion of Core Curriculum in Analysis and Composition (MUT1121 + 3 core electives)\n\nFor students on older curriculum: MUT 1121, MUT 1122, MUT 2117, MUT 2118", + "corequisite": "" + }, + { + "moduleCode": "MUT3224", + "title": "Teaching Music Online", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "Second year status in music or permission of instructor", + "corequisite": "" + }, + { + "moduleCode": "MUT3225", + "title": "Teaching Music Online 2", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "Second year status in music or permission of instructor", + "corequisite": "" + }, + { + "moduleCode": "MUT4201", + "title": "Graduate Theory Preparation", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Core Compositional Engagement modules (MUT1101 Intro to MCM + 3 core elective modules). Student must have 4th (final) year status.", + "corequisite": "" + }, + { + "moduleCode": "MUX2102", + "title": "Exchange Module", + "moduleCredit": 2, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MW5152", + "title": "Communicating Science with the Public", + "moduleCredit": 5, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MW5200", + "title": "MSc Science Communication Project", + "moduleCredit": 12, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MW5201", + "title": "Essentials of Science Communication", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students outside the MSc in Science Communication Programme may be considered on a case by case basis.", + "corequisite": "" + }, + { + "moduleCode": "MW5202", + "title": "Innovative Strategies in Science Communication", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students outside the MSc in Science Communication Programme may be considered on a case-by-case basis.", + "corequisite": "" + }, + { + "moduleCode": "MW5203", + "title": "Frontier Topics in Science", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For students enrolled in the MSc Science Communication programme only. Students outside the MSc in Science Communication Programme may be considered on a caseby-case basis.", + "corequisite": "" + }, + { + "moduleCode": "MW5252", + "title": "Engagement for Policy Impact", + "moduleCredit": 5, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MW5253", + "title": "Science Communication Project Design and Delivery", + "moduleCredit": 5, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MW5254", + "title": "Public Events for Science Engagement", + "moduleCredit": 5, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MW5258", + "title": "Science in Popular Fiction", + "moduleCredit": 5, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MW5259", + "title": "Cross Cultural Perspectives in Science Communication", + "moduleCredit": 5, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MW5264", + "title": "Health Promotion and Protection", + "moduleCredit": 5, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MW5270", + "title": "Strategies in Science Communication", + "moduleCredit": 5, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MW5271", + "title": "Science Communication and the Web", + "moduleCredit": 5, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MW5272", + "title": "Science Dialogue Theory and Practice", + "moduleCredit": 5, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "MW5273", + "title": "Making Modern Science", + "moduleCredit": 5, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NE5999", + "title": "Graduate Seminars", + "moduleCredit": 4, + "department": "Nanoengineering Programme", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM1101E", + "title": "Communications, New Media and Society", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM1101X", + "title": "Communications, New Media and Society", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 2, + 3 + ], + "preclusion": "NM1101E or NM1101FC", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM2101", + "title": "Theories of Communications and New Media", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2008 and before:\nNil.\n\nCohorts 2009 to 2011:\nObtain a grade of B‐ or above in NM1101E Communications, New Media and Society (applies to students from ALL faculties except School of Computing). Students who fail to meet the B‐ criterion in NM1101E will have the opportunity to take a department conducted test, which will act as an alternative prerequisite.\n\nCohort 2012 onwards:\nNil", + "corequisite": "" + }, + { + "moduleCode": "NM2103", + "title": "Quantitative Research Methods", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM2104", + "title": "Qualitative Communication Research Methods", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM2201", + "title": "Intercultural Communication", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 4 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM2203", + "title": "Social Media in Communication Management", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM2207", + "title": "Computational Media Literacy", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "CS1010 and its equivalents; CS1101 and its equivalents; NM2207Y", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM2209", + "title": "Social Psychology of New Media", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM2212", + "title": "Visual Design", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM2213", + "title": "Introduction to Human-Computer Interaction Design", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM2219", + "title": "Principles of Communication Management", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "NM2219Y", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM2219Y", + "title": "Principles of Communication Management", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "NM2219", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM2220", + "title": "Introduction to Media Writing", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM2222", + "title": "Ethics in Communication and New Media", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM2223", + "title": "Media Law and Regulation", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM2224", + "title": "Creativity, Culture and Media", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM2302", + "title": "Mobility and New Media", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM2303", + "title": "Fake News, Lies and Spin: How to Sift Fact from Fiction", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM3205", + "title": "Digital Media Cultures", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM3210", + "title": "Cybercrime and Copyright", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "NM3203, NM3880A", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM3211", + "title": "News Reporting and Writing", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "NM2221", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NM2220 Introduction to Media Writing. Read and pass a minimum of 80 MCs.", + "corequisite": "" + }, + { + "moduleCode": "NM3215", + "title": "Advertising Strategies", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "MKT3420 Promotional Management", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM3216", + "title": "Game Design", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM3217", + "title": "Principles of Communication Design", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "NM2208", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM3219", + "title": "Writing for Communication Management", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NM2220, NM2219", + "corequisite": "" + }, + { + "moduleCode": "NM3221", + "title": "Mobile Interaction Design", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM3222", + "title": "Interactive Storytelling", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM3224", + "title": "Culture Industries", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM3230", + "title": "Digital Storytelling", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + true, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM3232", + "title": "Strategic Communication", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "NM3233, NM3220, NM3232Y", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM3232Y", + "title": "Strategic Communication", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "NM3232", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM3234", + "title": "Leadership, Organisations and New Media", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM3234Y", + "title": "Leadership, Organisations and Communication", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "NM3234 Leadership, Organisations and New Media", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM3237", + "title": "Health Communication", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "NM4880D Health Communications\nNM4220 Health Communications\nNM3237Y Health Communication", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM3237Y", + "title": "Health Communication", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "NM3237", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM3239", + "title": "Retrieving, Exploring and Analysing Data", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM3239Y", + "title": "Retrieving, Exploring and Analysing Data", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "NM3239 Retrieving, Exploring and Analysing Data", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM3241", + "title": "Cultural Studies: Theory and Practice", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "SC3224 Theory and Practice in Cultural Studies", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM3550", + "title": "Communications & New Media Internship", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Any other series-internship modules\n(Note: Students who change major may not do a second internship in their new major)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(1) For NM Major only,\n(2) Read and pass a minimum of 80 MCs AND\n(3) Must read INM3550 concurrently", + "corequisite": "" + }, + { + "moduleCode": "NM3550Y", + "title": "Communications & New Media Internship", + "moduleCredit": 12, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2, + 4 + ], + "preclusion": "NM3550\nINM3550", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(1) For NM Major only,\n(2) Read and passed a minimum of 80 MCs (of which 24 MCs of NM modules)", + "corequisite": "" + }, + { + "moduleCode": "NM3551", + "title": "FASS Undergraduate Research Opportunity (UROP)", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "Students must:\nhave declared a Major, completed a minimum of 24 MCs in that Major, and have a CAP of at least 3.20.", + "corequisite": "" + }, + { + "moduleCode": "NM3880", + "title": "Topics in CNM", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Any IF/NM or recognised modules", + "corequisite": "" + }, + { + "moduleCode": "NM4102", + "title": "Advanced Communications & New Media Research", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "NM4101", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before: \n(1) Completed 80 MCs, including 28 MCs in NM, with a minimum CAP of 3.50 or be on the Honours track. (2) NM2102 or NM2103 or NM2104. \n\nCohort 2012-2019: \n(1) Completed 80MCs, including 28MCs in NM or 28MCs in GL or GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track. (2) NM2101 or NM2103 or NM2104\n\nCohort 2020 onwards: \n(1) Completed 80MCs, including 28MCs in NM, with a minimum CAP of 3.20 or be on the Honours track. (2) NM2101 or NM2103 or NM2104", + "corequisite": "" + }, + { + "moduleCode": "NM4203", + "title": "Infocomm Technology Policy", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "IF5203, NM5203 and NM5203R", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(Not applicable to SOC students) \nCompleted 80 MCs, including 28 MCs in NM with a minimum CAP of 3.50 or be on the Honours track. \n\n(For SOC students) \nCompleted 80 MCs and obtain a minimum CAP of 3.50.\n\nCohort 2012-2019: \nCompleted 80 MCs, including 28 MCs in NM or 28 MCs in GL/GL recognised non‐language modules, with a minimum CAP of 3.20 or be on the Honours track. \n\n(For SOC students) \nCompleted 80 MCs and obtain a minimum CAP of 3.20.\n\n(Not applicable to SOC students) \nCompleted 80 MCs, including 28 MCs in NM with a minimum CAP of 3.50 or be on the Honours track. \n\n(For SOC students) \nCompleted 80 MCs and obtain a minimum CAP of 3.50. \n\nCohort 2020 onwards: \nCompleted 80 MCs, including 28 MCs in NM with a minimum CAP of 3.20 or be on the Honours track. \n\n(For SOC students) \nCompleted 80 MCs and obtain a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "NM4204", + "title": "Media Ethics - Principles and Practices", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in NM or 28 MCs in GL/GL recognised non‐language modules, with a minimum CAP of 3.20 or be on the Honours track. \n\n(For SOC students) \nCompleted 80 MCs and obtain a minimum CAP of 3.20\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in NM, with a minimum CAP of 3.20 or be on the Honours track. \n\n(For SOC students) \nCompleted 80 MCs and obtain a minimum CAP of 3.20", + "corequisite": "" + }, + { + "moduleCode": "NM4206", + "title": "Media Regulation and Governance", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "NM3202, NM2202", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in NM or 28 MCs in GL/GL recognised non‐language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\n(For SOC students) Completed 80 MCs and obtain a minimum CAP of 3.20.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in NM, with a minimum CAP of 3.20 or be on the Honours track. \n\n(For SOC students) Completed 80 MCs and obtain a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "NM4207", + "title": "Managing Communication Campaigns", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "NM4217", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(1) Completed 80MCs, including 28MCs in NM, with a minimum CAP of 3.20 or be on the Honours track.\n(2) NM2219 Principles of Communication Management", + "corequisite": "" + }, + { + "moduleCode": "NM4208", + "title": "Strategic Communication Design", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(1) Completed 80 MCs, including 28 MCs in NM, with a minimum CAP of 3.20 or be on the Honours track.\n(2) NM3217", + "corequisite": "" + }, + { + "moduleCode": "NM4210", + "title": "User Experience Design", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before:\n(Not applicable to SOC/SDE/ENG students)\nCompleted 80 MCs , including 28 MCs in NM, with a minimum CAP of 3.50 or be on the Honours track.\n\n(For SOC/SDE/ENG students)\nCompleted 80 MCs and obtain a minimum CAP of 3.50.\n\nCohort 2012 onwards:\n(Not applicable to SOC/SDE/ENG students)\nCompleted 80 MCs , including 28 MCs in NM, with a minimum CAP of 3.20 or be on the Honours track.\n\n(For SOC/SDE/ENG students)\nCompleted 80 MCs and obtain a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "NM4211", + "title": "Online Journalism", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "NM4880B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before:\n(1) Completed 80 MCs, including 28 MCs in NM, with a minimum CAP of 3.50 or be on the Honours track.\n(2) NM3211 News Reporting and Editing.\n\nCohort 2012 onwards:\n(1) Completed 80 MCs, including 28 MCs in NM, with a minimum CAP of 3.20 or be on the Honours track.\n(2) NM3211 News Reporting and Editing.", + "corequisite": "" + }, + { + "moduleCode": "NM4212", + "title": "Race, Media and Representation", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: (1) Completed 80 MCs, including 28 MCs in NM or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track. (2) NM2101\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in NM, with a minimum CAP of 3.20 or be on the Honours track. (2) NM2101", + "corequisite": "" + }, + { + "moduleCode": "NM4213", + "title": "Digital Economies", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "NM3206", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before: (Not applicable to SOC students) Completed 80 MCs, including 28 MCs in NM, with a minimum CAP of 3.50 or be on the Honours track. \n\n(For SOC students) Completed 80 MCs and obtain a minimum CAP of 3.50. \n\nCohort 2012-2019: (Not applicable to SOC students) Completed 80 MCs, including 28 MCs in NM or 28 MCs in GL/GL recognised non‐language modules, with a minimum CAP of 3.20 or be on the Honours track. \n\n(For SOC students) Completed 80 MCs and obtain a minimum CAP of 3.20.\n\nCohort 2020 onwards: (Not applicable to SOC students) Completed 80 MCs, including 28 MCs in NM, with a minimum CAP of 3.20 or be on the Honours t7rack. \n\n(For SOC students) Completed 80 MCs and obtain a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "NM4219", + "title": "New Media in Health Communication", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before: Completed 80 MCs, including 28 MCs in NM, with a minimum CAP of 3.50 or be on the Honours track. \n\nCohort 2012-2019: Completed 80 MCs, including 28 MCs in NM or 28MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in NM, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "NM4223", + "title": "New Media and Organizations", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "NM5213 and NM5213R", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before: Completed 80 MCs, including 28 MCs in NM, with a minimum CAP of 3.50 or be on the Honours track. \n\nCohort 2012-2019: Completed 80 MCs, including 28 MCs in NM or 28 MCs in GL/GL recognised non‐language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in NM, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "NM4225", + "title": "Speculative and Critical Design", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(Not applicable to SOC/SDE/ENG students)\nCompleted 80 MCs, including 28 MCs in NM, with a minimum CAP of 3.20 or be on the Honours track.\n\n(For SOC/SDE/ENG students)\nCompleted 80 MCs and obtain a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "NM4227", + "title": "Game Studies", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "NM3227 Critical Game Design", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(Not applicable to SOC/SDE/ENG students) Completed 80 MCs, including 28 MCs in NM, with a minimum CAP of 3.20 or be on the Honours track. (For SOC/SDE/ENG students) Completed 80 MCs and obtain a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "NM4228", + "title": "Crisis Communication", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before: Completed 80 MCs, including 28 MCs in NM, with a minimum CAP of 3.50 or be on the Honours track. \n\nCohort 2012-2019: Completed 80 MCs, including 28 MCs in NM or 28 MCs in GL/GL recognised non‐language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in NM, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "NM4230", + "title": "Communication for Social Change", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before: Completed 80 MCs, including 28 MCs in NM, with a minimum CAP of 3.50 or be on the Honours track.\n\nCohort 2012-2019: Completed 80 MCs, including 28 MCs in NM or 28 MCs in GL/GL recognised non‐language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in NM, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "NM4231", + "title": "Advanced Digital Storytelling", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in NM, with a minimum CAP of 3.20 or been on the Honours track.\nNM3230", + "corequisite": "" + }, + { + "moduleCode": "NM4238", + "title": "Software Studies", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "NM3238", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before:\nCompleted 80MCs, including 28MCs in NM, with a minimum CAP of 3.50 or be on the Honours track.\n(For SOC students)\nCompleted 80 MCs and obtain a minimum CAP of 3.50.\n\nCohort 2012 onwards:\nCompleted 80MCs, including 28MCs in NM, with a minimum CAP of 3.20 or be on the Honours track.\n(For SOC students)\nCompleted 80 MCs and obtain a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "NM4239", + "title": "Digital Propaganda and Public Opinion", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012 onwards:\nCompleted 80MCs, including 28MCs in NM, with a\nminimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "NM4240", + "title": "Risk Perception and Communication", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012 onwards\nCompleted 80MCs, including 28MCs in NM, with a\nminimum CAP of 3.2 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "NM4242", + "title": "Critical Perspectives on Technology", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "NM3207", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(Not applicable to SOC/SDE/ENG students)\nCompleted 80 MCs, including 28 MCs in NM, with a minimum CAP of 3.20 or be on the Honours track.\n(For SOC/SDE/ENG students)\nCompleted 80 MCs and obtain a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "NM4243", + "title": "Writing Commentaries and Columns", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(1) Completed 80MCs, including 28MCs in NM, with a minimum CAP of 3.20 or be on the Honours track. (2) NM2220 Introduction to Media Writing", + "corequisite": "" + }, + { + "moduleCode": "NM4244", + "title": "Sex in the Media", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(1) Completed 80 MCs, including 28 MCs in NM, with a minimum CAP of 3.20 or be on the Honours track. \n(2) NM2101 or NM2103 or NM2104", + "corequisite": "" + }, + { + "moduleCode": "NM4245", + "title": "Political Communication and Digital Media", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "NM3240", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(Not applicable to SOC/SDE/ENG students)\nCompleted 80 MCs, including 28 MCs in NM, with a minimum CAP of 3.20 or be on the Honours track.\n(For SOC/SDE/ENG students)\nCompleted 80 MCs and obtain a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "NM4246", + "title": "Learning Innovation in the Digital Age", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "NM3204", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(Not applicable to SOC/SDE/ENG students)\nCompleted 80 MCs, including 28 MCs in NM, with a minimum CAP of 3.20 or be on the Honours track.\n(For SOC/SDE/ENG students)\nCompleted 80 MCs and obtain a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "NM4247", + "title": "Creative Writing in the Marketplace", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(1) Completed 80 MCs, including 28 MCs in NM, with a minimum CAP of 3.20 or be on the Honours track.\n(2) NM2220 Introduction to Media Writing", + "corequisite": "" + }, + { + "moduleCode": "NM4248", + "title": "Lifestyle Writing", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(1) Completed 80MCs, including 28MCs in NM, with a minimum CAP of 3.20 or be on the Honours track. (2) NM2220 Introduction to Media Writing", + "corequisite": "" + }, + { + "moduleCode": "NM4249", + "title": "Media & Audiences", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012 onwards: Completed 80 MCs, including 28 MCs in NM, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "NM4250", + "title": "Data Journalism and Analysis", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(1) Completed 80MCs, including 28MCs in NM, with a minimum CAP of 3.20 or be on the Honours track. (2) NM2220 Introduction to Media Writing", + "corequisite": "" + }, + { + "moduleCode": "NM4251", + "title": "Critical Theory and Cultural Studies in New Media", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "NM4881C Critical Theory and Cultural Studies in New Media", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in NM, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "NM4401", + "title": "Honours Thesis", + "moduleCredit": 15, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "NM4660", + "attributes": [ + false, + false, + false, + false, + true, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2015 and before:\n(1) Completed 110 MCs including 60 MCs of NM major requirements with a minimum SJAP of 4.00 and CAP of 3.50. Students may seek a waiver of the SJAP pre-requisite from the department if they have a minimum CAP of 4.25 after completing 110 MCs.\n(2) Pass NM4101 or NM4102\n\nCohort 2016 onwards:\n(1) Completed 110 MCs including 44 MCs of NM major requirements with a minimum SJAP of 4.00 and CAP of 3.50. Students may seek a waiver of the SJAP pre-requisite from the department if they have a minimum CAP of 4.25 after completing 110 MCs.\n(2) Pass NM4101 or NM4102", + "corequisite": "NM4102" + }, + { + "moduleCode": "NM4660", + "title": "Independent Study", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "NM4401 or XFA4403", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2015 and before:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in NM, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in NM, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "NM4851", + "title": "Department Exchange Module", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM4852", + "title": "Department Exchange Module", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM4880", + "title": "Topics in CNM", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2006 and before: Read and passed a minimum of 80MCs. \nCohort 2007 onwards:Completed 80MCs, including 28MCs in NM, with a minimum CAP of 3.5 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "NM4880G", + "title": "Election Reporting", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012 onwards: Completed 80MCs, including\n28MCs in NM, with a minimum CAP of 3.20 or be on\nthe Honours track.\n\nNM2220 Introduction to Media Writing", + "corequisite": "" + }, + { + "moduleCode": "NM4881", + "title": "Topics in Media Studies", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2006 and before: Read and passed a minimum of 80MCs.\nCohort 2007 onwards: Completed 80MCs, including 28MCs in NM, with a minimum CAP of 3.5 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "NM4881A", + "title": "Topics in Media Studies: Social Media", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before:\nCompleted 80 MCs, including 28 MCs in NM, with a minimum CAP of 3.50 or be on the Honours track.\n\nCohort 2012 onwards:\nCompleted 80 MCs, including 28 MCs in NM, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "NM4881D", + "title": "Media, Rhetoric, and the Public Sphere", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Complete 80MCs, including 28MCs in NM or 28MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Complete 80MCs, including 28MCs in NM, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "NM4881E", + "title": "Photography, Visual Rhetoric, and Public Culture", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012 onwards:\nCompleted 80MCs, including 28MCs in NM, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "NM4882A", + "title": "Topics in Media Design: Playable Worlds", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before:\n(Not applicable to SOC students)\nCompleted 80 MCs, including 28 MCs in NM, with a minimum CAP of 3.50 or be on the Honours track.\n\n(For SOC students)\nCompleted 80 MCs and obtain a minimum CAP of 3.50.\n\nCohort 2012 onwards:\n(Not applicable to SOC students)\nCompleted 80 MCs, including 28 MCs in NM, with a minimum CAP of 3.20 or be on the Honours track.\n\n(For SOC students)\nCompleted 80 MCs and obtain a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "NM4883", + "title": "Topics in Communication Management", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(1) Completed 80 MCs, including 28 MCs in NM, with a minimum CAP of 3.5 or be on the Honours track\n(2) NM2219", + "corequisite": "" + }, + { + "moduleCode": "NM4883D", + "title": "New Media Production and Public Engagement", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before:\nCompleted 80 MCs, including 28 MCs in NM, with a minimum CAP of 3.50 or be on the Honours track.\n\nCohort 2012 onwards:\nCompleted 80 MCs and obtain a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "NM4883F", + "title": "Financial Journalism", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: (1) Completed 80MCs, including 28MCS in NM or 28MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track. \n(2) NM2220 Introduction to Media Writing\n\nCohort 2020 onwards: (1) Completed 80MCs, including 28MCS in NM, with a minimum CAP of 3.20 or be on the Honours track. \n(2) NM2220 Introduction to Media Writing", + "corequisite": "" + }, + { + "moduleCode": "NM4883G", + "title": "Financial Communication", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012-2019: (1) Completed 80MCs, including 28MCs in NM or 28MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: (1) Completed 80MCs, including 28MCs in NM, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "NM5201", + "title": "State and Civil Society in the Information Age", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "IF4880A, IF5201", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM5201R", + "title": "State and Civil Society in the Information Age", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "IF4880A, IF5201", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) For CNM major who has accumulated 120 MCs\n(b) For CNM, FASS, and SoC graduate students.", + "corequisite": "" + }, + { + "moduleCode": "NM5204", + "title": "Computer-Mediated Environments", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "IF5204", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM5204R", + "title": "Computer-Mediated Environments", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "IF5204", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For CNM undergraduate major who has accumulated 120 MC, or for FASS and SoC graduate students.", + "corequisite": "" + }, + { + "moduleCode": "NM5205", + "title": "Cognition and Media", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM5205R", + "title": "Cognition and Media", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For CNM major who has accumulated 120 MCs.\nFor CNM, FASS, and SoC graduate students", + "corequisite": "" + }, + { + "moduleCode": "NM5209", + "title": "Interactive Media Arts", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM5209R", + "title": "Interactive Media Arts", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) For CNM major who has accumulated 120 MCs\n\n(b) For CNM, FASS, and SoC graduate students.", + "corequisite": "" + }, + { + "moduleCode": "NM5212R", + "title": "Theories of Public Relations", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(a) For CNM major who has accumulated 120 MCs\n(b) For CNM, FASS, and SoC graduate students", + "corequisite": "" + }, + { + "moduleCode": "NM5216", + "title": "Advanced Health Communication", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM5216R", + "title": "Advanced Health Communication", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM5218", + "title": "Cultural Policy", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM5218R", + "title": "Cultural Policy", + "moduleCredit": 5, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM5660", + "title": "Independent Study", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "IF5660", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM5881", + "title": "Topics in Media Studies", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM5882", + "title": "Topics in Media Design", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM5883", + "title": "Topics in Communication Management", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM6101", + "title": "Advanced Theories in Cnm", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM6103", + "title": "Quantitative Research Methods in Communications and New Media", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM6104", + "title": "Qualitative Research Methods in Communications and New Media", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM6201", + "title": "Communication as Culture", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "IF6201", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM6211", + "title": "Political Communication", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM6660", + "title": "Independent Study", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "IF6660", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM6770", + "title": "Graduate Research Seminar", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NM6882", + "title": "Advanced Topics in Media Design", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Successful completion of 5000-level CNM media design module (or equivalent).", + "corequisite": "" + }, + { + "moduleCode": "NM6882A", + "title": "Intelligent Interactive Media", + "moduleCredit": 4, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Successful completion of 5000-level CNM media design module (or equivalent). Note: This module is intended for advanced graduate students from all faculties and thus does not require a background in computer science and engineering (although it will be possible for such students to develop and evaluate more technically advanced\nprototypes).", + "corequisite": "" + }, + { + "moduleCode": "NUR1107A", + "title": "Nursing Practice Experience 1.1", + "moduleCredit": 2, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "NUR1107 Clinical Practicum 1.1", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "NUR1114 Fundamentals of Nursing" + }, + { + "moduleCode": "NUR1107B", + "title": "Clinical Practice: Community Care I", + "moduleCredit": 2, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "NUR1107A Nursing Practice Experience 1.1", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "NUR1114A Fundamentals of Care" + }, + { + "moduleCode": "NUR1108A", + "title": "Nursing Practice Experience 1.2", + "moduleCredit": 7, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR1108B", + "title": "Clinical Practice: Medical/Surgical I", + "moduleCredit": 6, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "NUR1108A Nursing Practice Experience 1.2", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR1110", + "title": "Effective Communication for Health Professionals", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "NUR1114 Fundamentals of Nursing" + }, + { + "moduleCode": "NUR1110A", + "title": "Communication and Cultural Diversity", + "moduleCredit": 3, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "NUR1110 Effective Communication for Health Professionals", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR1113", + "title": "Health and Wellness for Older Adults", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR1113A", + "title": "Healthy Ageing and Well-being", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "NUR1201C Health Continuum for Older Adults", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR1114", + "title": "Fundamentals of Nursing", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "NUR1110 Effective Communication for Health Professionals, NUR1113 Health and Well-being for Older Adults, NUR1107A Nursing Practice Experience 1.1" + }, + { + "moduleCode": "NUR1114A", + "title": "Fundamentals of Care", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "NUR1114 Fundamentals of Nursing", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR1117", + "title": "Anatomy and Physiology I", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "AY1104 Anatomy\nPY1105 Physiology I\nPY1106 Physiology II", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR1118", + "title": "Anatomy and Physiology II", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "AY1104 Anatomy\nPY1105 Physiology I\nPY1106 Physiology II", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR1119", + "title": "Medical-Surgical Nursing I", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "NUR2114 Medical/Surgical Nursing is precluded.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUR1114 Fundamentals of Nursing to replace existing pre-requisite of NUR1108.", + "corequisite": "NUR1120 Comprehensive Health Assessment to replace existing co-requisites of NUR2106 and NUR2117." + }, + { + "moduleCode": "NUR1120", + "title": "Comprehensive Health Assessment", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "NUR2115 Comprehensive Health Assessment is precluded.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR1121", + "title": "Pathophysiology and Pharmacology for Nurses I", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "NUR2117 Pathophysiology and Pharmacology I is precluded.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR1122C", + "title": "Health Assessment", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR1123", + "title": "Anatomy, Physiology and Physical Assessment I", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "NUR1117 Anatomy and Physiology I\nNUR1120 Comprehensive Health Assessment", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR1124", + "title": "Anatomy, Physiology and Physical Assessment II", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "NUR1118 Anatomy and Physiology II\nNUR1120 Comprehensive Health Assessment", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR1125", + "title": "Pathophysiology, Pharmacology and Nursing Practice I", + "moduleCredit": 6, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1, + 2 + ], + "preclusion": "NUR2201C Pathophysiology, Pharmacology and Nursing Practice I", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR1126", + "title": "Pathophysiology, Pharmacology and Nursing Practice II", + "moduleCredit": 6, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "NUR2202C Pathophysiology, Pharmacology and Nursing\nPractice II", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR1127", + "title": "Psychology for Nurses", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "NUR2122 Psychology for Nurses", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR1201C", + "title": "Health Continuum for Older Adults", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "NUR1113", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR1202C", + "title": "Clinical Experience I", + "moduleCredit": 2, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR2106A", + "title": "Nursing Practice Experience 2.1", + "moduleCredit": 2, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "NUR2106 Clinical Practicum 2.1 is precluded.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "NUR2116 Medical/Surgical Nursing II, NUR2118 Pathophysiology and Pharmacology for Nurses II" + }, + { + "moduleCode": "NUR2106B", + "title": "Clinical Practice: Medical/Surgical II", + "moduleCredit": 3, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1, + 2 + ], + "preclusion": "NUR2106A Nursing Practice Experience 2.1", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR2107A", + "title": "Nursing Practice Experience 2.2", + "moduleCredit": 8, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "NUR2107 Clinical Practicum 2.2 is precluded", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "NUR2113 Mental Health Nursing, NUR2121 Maternal and Child Health Nursing" + }, + { + "moduleCode": "NUR2107B", + "title": "Clinical Practice: Specialty Care", + "moduleCredit": 7, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1, + 2 + ], + "preclusion": "NUR2107A Nursing Practice Experience 2.2", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR2113", + "title": "Mental Health Nursing", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUR1116 Psychology for Health Professionals", + "corequisite": "" + }, + { + "moduleCode": "NUR2116", + "title": "Medical-Surgical Nursing II", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUR1108A Nursing Practice Experience 1.2 to replace existing pre-requisite.", + "corequisite": "NUR2118 Pathophysiology & Pharmacology for Nurses II, NUR2106A Nursing Practice Experience 2.1" + }, + { + "moduleCode": "NUR2118", + "title": "Pathophysiology and Pharmacology for Nurses II", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUR1121 Pathophysiology and Pharmacology for Nurses 1 is now a pre-requisite.", + "corequisite": "" + }, + { + "moduleCode": "NUR2120", + "title": "Professional Nursing Practice, Ethics and Law", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUR1110 Effective Communication for Health\nProfessionals", + "corequisite": "" + }, + { + "moduleCode": "NUR2121", + "title": "Maternal and Child Health Nursing", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "NUR1115 Maternal and Child Health Nursing", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUR1114 Fundamentals of Nursing", + "corequisite": "" + }, + { + "moduleCode": "NUR2122", + "title": "Psychology for Nurses", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "NUR1116", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR2123", + "title": "Pathophysiology, Pharmacology and Nursing Practice III", + "moduleCredit": 6, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1, + 2 + ], + "preclusion": "NUR3203C", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR2124", + "title": "Healthy Community Living", + "moduleCredit": 2, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR2125", + "title": "Pathophysiology, Pharmacology and Nursing Practice II", + "moduleCredit": 6, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "NUR2202C Pathophysiology, Pharmacology and Nursing\nPractice II", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR2201C", + "title": "Pathophysiology, Pharmacology and Nursing Practice I", + "moduleCredit": 8, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "NUR1119 and NUR1121", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR2202C", + "title": "Pathophysiology, Pharmacology and Nursing Practice II", + "moduleCredit": 8, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "NUR2116 and NUR2118", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR2203C", + "title": "Clinical Experience II", + "moduleCredit": 10, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR2204C", + "title": "Women and Children Health", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "NUR2121", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR2441A", + "title": "Cross-cultural Experience for Nursing Students I", + "moduleCredit": 2, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "NUR2441B Cross-cultural Experience for Nursing Students II (4MC)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For BSc (Nursing) and BSc (Nursing)(Honours) students\nonly.", + "corequisite": "" + }, + { + "moduleCode": "NUR2441B", + "title": "Cross-cultural Experience for Nursing Students II", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "NUR2441A Cross-cultural Experience for Nursing Students I (2MC)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For BSc (Nursing) and BSc (Nursing)(Honours) students only.", + "corequisite": "" + }, + { + "moduleCode": "NUR2442", + "title": "Cross-cultural Experience for Nursing Students (OCIP)", + "moduleCredit": 2, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For BSc (Nursing) and BSc (Nursing)(Honours) students only.", + "corequisite": "" + }, + { + "moduleCode": "NUR2500", + "title": "Applied Pathophysiology and Clinical Pharmacology", + "moduleCredit": 6, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR2501", + "title": "Clinical Health Assessment and Reasoning", + "moduleCredit": 6, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR2502", + "title": "Healthcare Policy", + "moduleCredit": 6, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR2503", + "title": "Global and Community Health", + "moduleCredit": 8, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR3103", + "title": "Clinical Decision Making", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUR2116 Medical/Surgical Nursing II", + "corequisite": "" + }, + { + "moduleCode": "NUR3105A", + "title": "Nursing Practice Experience 3.1", + "moduleCredit": 2, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "NUR3105 Clinical Practicum 3.1 is precluded.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR3105B", + "title": "Clinical Practice: Community Care II", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1, + 2 + ], + "preclusion": "NUR3105A Nursing Practice Experience 3.1", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR3106B", + "title": "Clinical Practice: Medical/Surgical II", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR3109", + "title": "Introduction to Research, Evidence and Nursing Practice", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR3113", + "title": "Medical-Surgical Nursing III", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR3114", + "title": "Leadership and Management", + "moduleCredit": 3, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR3116", + "title": "Transition-to-Practice", + "moduleCredit": 9, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "NUR3116A", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUR3105 Clinical Practicum 3.1", + "corequisite": "NUR3115 Issues for Contemporary Nursing Practice" + }, + { + "moduleCode": "NUR3116A", + "title": "Transition to Professional Practice Experience", + "moduleCredit": 10, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "NUR3116 Transition-to-Practice is precluded.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "NUR3118 Consolidated Clinical Simulation Nursing Practice is now a co-requisite." + }, + { + "moduleCode": "NUR3116B", + "title": "Transition to Professional Practice Experience", + "moduleCredit": 12, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "NUR3116A Transition to Professional Practice Experience", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR3117", + "title": "Community Integrated Health Care", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR3117A", + "title": "Public and Community Health", + "moduleCredit": 3, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "NUR3117 Community Integrated Health Care", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR3118", + "title": "Consolidated Clinical Simulation Nursing Practice", + "moduleCredit": 3, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUR3105A Nursing Practice Experience 3.1", + "corequisite": "NUR3114 Leadership and Management NUR3116A Transition to Professional Practice Experience" + }, + { + "moduleCode": "NUR3119", + "title": "Palliative and End-of-Life Care", + "moduleCredit": 2, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR3120", + "title": "Pathophysiology, Pharmacology and Nursing Practice III", + "moduleCredit": 6, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "NUR3203C", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR3202C", + "title": "Research and Evidence-based Healthcare", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "NUR3109", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR3203C", + "title": "Pathophysiology, Pharmacology and Nursing Practice III", + "moduleCredit": 8, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR3204C", + "title": "Clinical Experience III", + "moduleCredit": 3, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR3205C", + "title": "Clinical Experience IV", + "moduleCredit": 10, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR3206C", + "title": "Transition to Practice", + "moduleCredit": 8, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR3206D", + "title": "Transition to Practice", + "moduleCredit": 9, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR3500", + "title": "Practice of Palliative and End-of-Life Care", + "moduleCredit": 6, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR3501", + "title": "Professionalism, Ethics and Law in Healthcare", + "moduleCredit": 8, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR3502", + "title": "Teaching and Learning in Clinical Practice", + "moduleCredit": 6, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR3503", + "title": "Leadership, Innovation and Change in Healthcare", + "moduleCredit": 6, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR3504", + "title": "Chronic Disease Management", + "moduleCredit": 6, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR3505", + "title": "Research Methodology and Statistics", + "moduleCredit": 8, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR3506", + "title": "Translation of Evidence into Practice", + "moduleCredit": 6, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR3507", + "title": "Clinical Practice Development Project", + "moduleCredit": 8, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR4101B", + "title": "Evidence-based Health Care Practice", + "moduleCredit": 6, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "NUR4101", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUR3109", + "corequisite": "" + }, + { + "moduleCode": "NUR4102B", + "title": "Consolidated Clinical Practice", + "moduleCredit": 10, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "NUR4102\nNUR4102A", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR4103B", + "title": "Applied Research Methods", + "moduleCredit": 6, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "NUR4103 Applied Research Methods is precluded\nNUR4103A", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR4104B", + "title": "Honours Project in Nursing", + "moduleCredit": 14, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1, + 2 + ], + "preclusion": "NUR4104", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "Module codes of Consolidated Clinical Practicum and Applied Research Methods will be updated to NUR4102A and NUR4103A respectively.", + "corequisite": "" + }, + { + "moduleCode": "NUR5001", + "title": "Evidence Based Practice", + "moduleCredit": 8, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5002", + "title": "Statistics for Health Research", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5003", + "title": "Independent Study", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5004", + "title": "Leadership in healthcare", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5005", + "title": "Seminar in Translational Medicine", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5009", + "title": "Principles & Practice of Palliative Care", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5013", + "title": "Grant Writing and Writing for Publications", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5201", + "title": "Professional Development and Transformation", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5203", + "title": "Evidence-based Healthcare", + "moduleCredit": 8, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5207", + "title": "Ethics in Healthcare", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5301", + "title": "Approaches to Clinical Symptom", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5302", + "title": "Advanced Gerontological Nursing (Adult Health)", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5303", + "title": "Integrated Primary and Community Care (Adult Health)", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5311", + "title": "Clinical Practicum I (AH, AC & MH)", + "moduleCredit": 12, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5312", + "title": "Clinical Practicum II (AH, AC & MH)", + "moduleCredit": 8, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5401", + "title": "Applied Psychopathology", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5402", + "title": "Advanced Psychosocial Interventions", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5502", + "title": "Advanced Critical Care Nursing I", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5503", + "title": "Advanced Critical Care Nursing II", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5512", + "title": "Clinical Practicum II (Acute Care)", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5601", + "title": "Advanced Health Assessment (Paediatrics)", + "moduleCredit": 8, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5602", + "title": "Applied Pathophysiology (Paediatrics)", + "moduleCredit": 8, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5606", + "title": "Integrated Primary and Community Care for Paediatrics", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5607", + "title": "Approaches to Clinical Signs and Symptoms(Paediatrics)", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUR5601 Advanced Health Assessment (Paediatrics)\nNUR5602 Applied Pathophysiology (Paediatrics)", + "corequisite": "" + }, + { + "moduleCode": "NUR5608", + "title": "Management of the Acute Paediatric Patients", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUR5601 Advanced Health Assessment (Paediatrics)\nNUR5602 Applied Pathophysiology (Paediatrics)", + "corequisite": "" + }, + { + "moduleCode": "NUR5609", + "title": "Integrated Clinical Decision Making I (Paediatric)", + "moduleCredit": 8, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5610", + "title": "Integrated Clinical Decision Making II (Paediatric)", + "moduleCredit": 8, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5611", + "title": "Clinical Practicum I (PAED)", + "moduleCredit": 12, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5612", + "title": "Clinical Practicum II (Paediatrics)", + "moduleCredit": 8, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUR5601 Advanced Health Assessment (Paediatrics)\nNUR5602 Advanced Pathophysiology (Paediatrics)", + "corequisite": "" + }, + { + "moduleCode": "NUR5613", + "title": "Paediatric Care Across Care Continuum", + "moduleCredit": 8, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5701", + "title": "Learning Needs Analysis", + "moduleCredit": 2, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5702", + "title": "Curriculum Design", + "moduleCredit": 2, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5703", + "title": "Assessment and Evaluation", + "moduleCredit": 2, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5704", + "title": "Capstone Project", + "moduleCredit": 2, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5801G", + "title": "Integrated Clinical Decision Making and Management I", + "moduleCredit": 8, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5802G", + "title": "Integrated Clinical Decision Making and Management II", + "moduleCredit": 8, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5803G", + "title": "Community Health Practice", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5804G", + "title": "Chronic Disease Management in the Community", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5805G", + "title": "Chronic Wound Management in the Community", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5806G", + "title": "Evidence-based Practice", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5807", + "title": "Professional Development and Ethical Healthcare", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5808", + "title": "Adult Care Across Care Continuum", + "moduleCredit": 8, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5811A", + "title": "Clinical Practicum I", + "moduleCredit": 10, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5811B", + "title": "Clinical Practicum II", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR5811C", + "title": "Clinical Practicum III", + "moduleCredit": 16, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR6001", + "title": "Graduate Research Seminar", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR6002", + "title": "Qualitative Research in Health Sciences", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR6003", + "title": "Research Methods", + "moduleCredit": 8, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR6004", + "title": "Systematic Review and Meta-Analysis", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR6005", + "title": "Measurement Theory and Instrument Validation", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR6006", + "title": "Intervention Research in Nursing and Health Sciences", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "NUR6007", + "title": "Research Leadership and Professional Development", + "moduleCredit": 4, + "department": "Alice Lee Center for Nursing Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OL1000", + "title": "Oral Biology", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OMS2100", + "title": "Oral & Maxillofacial Medicine, Pathology & Radiology", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "a. Anatomy (AY1111)\nb. Oral Biology [Dental Anatomy & Histology] (OL1000)\nc. Microbiology (MD2112A)\nd. Oral Radiology/Radiation Physics (RY2000)", + "corequisite": "" + }, + { + "moduleCode": "OMS3010", + "title": "Oral & Maxillofacial Surgery", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OMS3100", + "title": "Oral & Maxillofacial Medicine, Pathology & Radiology", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "a. Anatomy (AY1111)\nb. Oral Biology [Dental Anatomy & Histology] (OL1000)\nc. Microbiology (MD2112A)\nd. Oral Radiology/Radiation Physics (RY2000)", + "corequisite": "" + }, + { + "moduleCode": "OMS4000", + "title": "Oral & Maxillofacial Surgery", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OMS4010", + "title": "Oral & Maxillofacial Surgery", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OMS4020", + "title": "Oral Medicine", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5001", + "title": "Independent Study Module", + "moduleCredit": 8, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "OT5001A & OT5001B", + "attributes": [ + false, + false, + false, + false, + false, + true, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5001A", + "title": "Independent Study Module: Subsea Engineering", + "moduleCredit": 8, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "OT5001 & OT5001B", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5001B", + "title": "Independent Study Module: Petroleum Engineering", + "moduleCredit": 8, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "OT5001 & OT5001A", + "attributes": [ + false, + false, + false, + false, + false, + true, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5001C", + "title": "Independent Study Module: Offshore Structures", + "moduleCredit": 8, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "OT5001, OT5001A, OT5001B", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5101", + "title": "Exploration and Production of Petroleum", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE4-standing or higher", + "corequisite": "" + }, + { + "moduleCode": "OT5102", + "title": "Oil & Gas Technology", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5201", + "title": "Marine Statics & Dynamics", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "CE5307 Offshore Hydrodynamics (title before AY2010/2011),\nCE5887 Topics in Offshore Engineering: Marine Statics & Dynamics (Sem1, AY2010/2011)", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE-4 standing or higher", + "corequisite": "" + }, + { + "moduleCode": "OT5202", + "title": "Analysis & Design of Fixed Offshore Structures", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "TCE5202", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE2155 or CE4 standing or higher", + "corequisite": "" + }, + { + "moduleCode": "OT5202A", + "title": "Analysis of Fixed Offshore Structures", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5202B", + "title": "Design of Fixed Offshore Structures", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5203", + "title": "Analysis & Design of Floating Offshore Structures", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "OT5201 Marine Statics and Dynamics (as of AY2011/12 onwards) or an equivalent, or CE5887 Topics in Offshore Engineering: Marine Statics & Dynamics (in AY2010/2011)", + "corequisite": "" + }, + { + "moduleCode": "OT5203A", + "title": "Analysis of Floating Offshore Structures", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5203B", + "title": "Design of Floating Offshore Structures", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5204", + "title": "Offshore pipelines, risers and moorings", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "CE5711, CE5712 and OT5205", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CVE, EVE & ME Year 3/ Year 4 – standing, or graduate-standing", + "corequisite": "" + }, + { + "moduleCode": "OT5204A", + "title": "Pipeline System", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2, + 3, + 4 + ], + "preclusion": "CE5711, CE5712 and OT5204", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5204B", + "title": "Mooring and Riser Systems", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2, + 3 + ], + "preclusion": "CE5711, CE5712 and OT5204", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5205", + "title": "Offshore Pipelines", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE4 standing", + "corequisite": "" + }, + { + "moduleCode": "OT5206", + "title": "Offshore Foundations", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "TCE5206", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE2112 Basic Undergraduate Soil Mechanics", + "corequisite": "" + }, + { + "moduleCode": "OT5206A", + "title": "Shallow Offshore Foundations", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "Basic undergraduate soil mechanics and foundation engineering", + "corequisite": "" + }, + { + "moduleCode": "OT5206B", + "title": "Deep Offshore Foundations", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "Basic undergraduate soil mechanics and foundation engineering", + "corequisite": "" + }, + { + "moduleCode": "OT5207", + "title": "Arctic Offshore Engineering", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE4 standing", + "corequisite": "" + }, + { + "moduleCode": "OT5208", + "title": "Fatigue and Fracture for Offshore Structures", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE4257: Linear Finite Element Methods or Equivalent", + "corequisite": "" + }, + { + "moduleCode": "OT5301", + "title": "Subsea Systems Engineering", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5302", + "title": "Flow Assurance", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "OT5882A Topics in Subsea Engineering - Flow Assurance", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5303", + "title": "Subsea Control", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5304", + "title": "Subsea Construction & Operational Support", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5305", + "title": "Pressures Surges in Oil & Gas Flow Systems", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "ME5708", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "ME3233 or equivalent", + "corequisite": "" + }, + { + "moduleCode": "OT5400", + "title": "Engineering Fundamentals for Petroleum Engineering", + "moduleCredit": 0, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5401", + "title": "Geoscience for Petroleum Exploration", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5401A", + "title": "General and Sedimentary Geology", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5401B", + "title": "Petroleum Geology", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5402", + "title": "Geophysical Imaging of the Earth Interior", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "OT5402A and OT5402B\n(i.e. Both completed as a pair)", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5402A", + "title": "Seismic Acquisition", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5402B", + "title": "Seismic Processing and Imaging", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5403", + "title": "Petrophysics and Downhole Measurements", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5403A", + "title": "Petrophysics for Petroleum Engineering", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5403B", + "title": "Downhole Measurements for Petroleum Engineering", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5404", + "title": "Reservoir Characterization and Rock Physics", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5405", + "title": "Enhanced Oil Recovery", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "OT5405A and OT5405B\n(i.e. Both completed as a pair)", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5405A", + "title": "Fundamentals of Enhanced Oil Recovery", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5405B", + "title": "Enhanced Oil Recovery Methods and Application", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5406", + "title": "Petroleum Production Engineering", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5406A", + "title": "Petroleum Production Engineering", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5406B", + "title": "Petroleum Production Engineering - Wellbore", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5407", + "title": "Petroleum Geomechanics", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5408", + "title": "Unconventional and Renewable Energy Resources", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CVE4, EVE4, MPE4, CHE4 or equivalent", + "corequisite": "" + }, + { + "moduleCode": "OT5409", + "title": "Drilling and Completion Engineering", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5881", + "title": "Topics in Offshore Engineering", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE4 standing", + "corequisite": "" + }, + { + "moduleCode": "OT5882", + "title": "Topics in Subsea Engineering", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental Approval (depending on the title)", + "corequisite": "" + }, + { + "moduleCode": "OT5882A", + "title": "Topics in Subsea Engineering - Flow Assurance", + "moduleCredit": 4, + "department": "Mechanical Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5883", + "title": "Topics in Petroleum Engineering", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Departmental Approval", + "corequisite": "" + }, + { + "moduleCode": "OT5883B", + "title": "Topics in Petroleum Engineering: Petroleum Reservoir", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5883C", + "title": "Topics in Petroleum Engineering: Geophysical Inverse methods", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "Basic programming and mathematics are required.", + "corequisite": "" + }, + { + "moduleCode": "OT5901", + "title": "Reservoir Fluid Characterization", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5902", + "title": "Petroleum Geoscience & Drilling", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5903", + "title": "From Reservoir to Wellhead", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5904", + "title": "Petroleum Process", + "moduleCredit": 5, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5905", + "title": "Petroleum Fluid Valorisation", + "moduleCredit": 3, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5906", + "title": "Offshore Field Architecture and Subsea System", + "moduleCredit": 3, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5907", + "title": "Design of Offshore Structures", + "moduleCredit": 3, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5908", + "title": "Subsea Umbilicals, Risers and Flowlines Design", + "moduleCredit": 3, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5909", + "title": "From Construction to Decommissioning", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5910", + "title": "Special Topics on Energy", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5911", + "title": "Offshore Materials, Welding and Corrosion", + "moduleCredit": 2, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5912", + "title": "Development of Offshore Upstream Projects", + "moduleCredit": 7, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OT5913", + "title": "Professional Integration (Internship)", + "moduleCredit": 12, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "OY3000", + "title": "Oral Pathology", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PA1113", + "title": "Basic Pharmacology", + "moduleCredit": 4, + "department": "Pharmacology", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AY1130", + "corequisite": "PY1131" + }, + { + "moduleCode": "PA1113A", + "title": "Basic Pharmacology", + "moduleCredit": 4, + "department": "Pharmacology", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "NUR5102 Advanced Pathophysiology", + "corequisite": "" + }, + { + "moduleCode": "PA2106", + "title": "Pharmacology 1", + "moduleCredit": 4, + "department": "Pharmacology", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR1908", + "corequisite": "" + }, + { + "moduleCode": "PA2106A", + "title": "Pharmacology 1", + "moduleCredit": 4, + "department": "Pharmacology", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PA2107", + "title": "Pharmacology 2", + "moduleCredit": 4, + "department": "Pharmacology", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PP2106", + "corequisite": "" + }, + { + "moduleCode": "PA2107A", + "title": "Pharmacology 2", + "moduleCredit": 4, + "department": "Pharmacology", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PA2131", + "title": "Pharmacology", + "moduleCredit": 1, + "department": "Pharmacology", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "BDS I year Pass", + "corequisite": "" + }, + { + "moduleCode": "PC1141", + "title": "Introduction to Classical Mechanics", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "STUDENTS WHO HAVE PASSED PC1431 OR PC1431FC or PC1431X OR PC1433 ARE NOT ALLOWED TO TAKE THIS MODULE.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "‘A' level or H2 pass in Physics or PC1221/PC1221FC/PC1221X & PC1222/PC1222X", + "corequisite": "" + }, + { + "moduleCode": "PC1142", + "title": "Introduction to Thermodynamics and Optics", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "STUDENTS WHO HAVE PASSED PC1431 OR PC1431FC or PC1431X ARE NOT ALLOWED TO TAKE THIS MODULE.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "‘A' level or H2 pass in Physics or PC1221/PC1221FC/PC1221X & PC1222/PC1222X", + "corequisite": "" + }, + { + "moduleCode": "PC1143", + "title": "Introduction to Electricity & Magnetism", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "Students who have passed PC1432/PC1432X are not allowed to take this module.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "‘A' level or H2 pass in Physics or PC1221/PC1221FC/PC1221X & PC1222/PC1222X", + "corequisite": "" + }, + { + "moduleCode": "PC1144", + "title": "Introduction to Modern Physics", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "Students who have passed PC1432/PC1432X are not allowed to take this module.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "‘A' level or H2 pass in Physics or PC1221/PC1221FC/PC1221X & PC1222/PC1222X", + "corequisite": "" + }, + { + "moduleCode": "PC1221", + "title": "Fundamentals of Physics I", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "A' LEVEL OR H2 PASS IN PHYSICS OR PC1141, OR PC1142 OR PC1431 OR PC1431FC or PC1431X OR PC1221FC or PC1221X, YSC1213", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "'O' level pass in Physics or Combined Science (Physics & Chemistry OR Physics & Biology).", + "corequisite": "" + }, + { + "moduleCode": "PC1221X", + "title": "Fundamentals of Physics 1", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "A' level or H2 pass in Physics or PC1141, or PC1142 or PC1431 or PC1431FC or PC1431X or PC1221 or PC1221FC", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "'O' level pass in Physics or Combined Science (Physics & Chemistry OR Physics & Biology) or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "PC1222", + "title": "Fundamentals of Physics II", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "'A' Level OR H2 Pass in Physics or PC1143, or PC1144 or PC1432/PC1432X, YSC1213", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "'O' level pass in Physics or Combined Science (Physics & Chemistry OR Physics & Biology).", + "corequisite": "" + }, + { + "moduleCode": "PC1222X", + "title": "Fundamentals of Physics II", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "'A' level or H2 pass in Physics or PC1222 or PC1143, or PC1144 or PC1432 or PC1432X", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "'O' level pass in Physics or Combined Science (Physics & Chemistry OR Physics & Biology) or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "PC1322", + "title": "Understanding the Universe", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "GEH1031. Students majoring in Physics are not allowed to take this module.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PC1326", + "title": "Physics in the Life Sciences", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "GET1013. Students majoring in Physics are not allowed to take this module", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PC1327", + "title": "Science of Music", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "GEK1519, GEH1030", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PC1346", + "title": "A Basic Introduction to Medical Physics", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "GEH1032/GEK1540", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PC1421", + "title": "Physics for Life Sciences", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "N.A.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Life-sciences majors who have at least an ‘O’ Level pass in Physics", + "corequisite": "N.A." + }, + { + "moduleCode": "PC1431", + "title": "Physics IE", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "Students majoring in Physics or students who have passed in PC1141 or PC1142 or PC1433 or PC1431FC or PC1431X are not allowed to take this module.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students from FOE (i.e. Civil Eng, Environmental Eng, Common Engineering, Mechanical Eng, Bioengineering, Industrial & Systems Eng and Material Science & Eng) with ‘A’ level or H2 pass in Physics; or 'A' level or H2 pass in Physics; or PC1221/PC1221FC/PC1221X & PC1222/PC1222X", + "corequisite": "" + }, + { + "moduleCode": "PC1431X", + "title": "Physics IE", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "Students majoring in Physics. Students must not have passed PC1431 or PC1431FC.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students from FOE (i.e. Civil Eng, Environmental Eng, Common Engineering, Mechanical Eng, Bioengineering, Industrial & Systems Eng and Material Science & Eng) with ‘A’ level or H2 pass in Physics; or 'A' level or H2 pass in Physics", + "corequisite": "" + }, + { + "moduleCode": "PC1432", + "title": "Physics IIE", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "Students majoring in Physics or students who have passed in PC1143 or PC1144 or PC1432X are not allowed to take this module.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students from FOE ( i.e. Computer Eng, Common Engineering, Bioengineering, Industrial & Systems Eng and Material Science & Eng) with ‘A’ level or H2 pass in Physics; or 'A' level or H2 pass in Physics; or PC1221/PC1221FC/PC1221X & PC1222/PC1222X", + "corequisite": "" + }, + { + "moduleCode": "PC1432X", + "title": "Physics IIE", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "Students majoring in Physics or students who have passed in PC1143 or PC1144 or PC1432 are not allowed to take this module.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students from FOE ( i.e. Computer Eng, Common\nEngineering, Bioengineering, Industrial & Systems Eng and Material Science & Eng) with ‘A’ level or H2 pass in Physics; or 'A' level or H2 pass in Physics; or PC1221/PC1221FC/PC1221X & PC1222/PC1222X", + "corequisite": "" + }, + { + "moduleCode": "PC1433", + "title": "Mechanics and Waves", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "STUDENTS WHO HAVE PASSED EITHER PC1141 OR PC1431 OR PC1431FC OR PC1431X ARE NOT ALLOWED TO TAKE THIS MODULE.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "A Level or H2 Physics. This module is only for ESP students.", + "corequisite": "" + }, + { + "moduleCode": "PC1601", + "title": "Physics Advanced Placement", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PC1602", + "title": "Physics Advanced Placement", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PC2020", + "title": "Electromagnetics for Electrical Engineers", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "PC2131, PC2232", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1511 and MA1512", + "corequisite": "" + }, + { + "moduleCode": "PC2130", + "title": "Quantum Mechanics I", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "Students who have passed PC2130B are not allowed to take this module, YSC3210", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students who have either passed (PC1144 or PC1432/PC1432X) and (MA1101R or MA1513 or MA1508E) and (MA1102R or MA1505 or MA1511 or MA1512) or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "PC2130B", + "title": "Applied Quantum Physics", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "Students who passed PC2130 cannot take this module.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students who passed one of the following modules. PC1144 or PC1432/PC1432X or PC1433", + "corequisite": "" + }, + { + "moduleCode": "PC2131", + "title": "Electricity & Magnetism I", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "YSC3211", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students who have either passed (PC1143 or PC1432/PC1432X) and (MA1101R or MA1513 or MA1508E) and (MA1102R or MA1505 or MA1511 or MA1512) or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "PC2132", + "title": "Classical Mechanics", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students who have either passed (PC1141 or PC1431/ PC1431X or PC1433) and (MA1101R or MA1513 or MA1508E) and (MA1102R or MA1505 or MA1511 or MA1512) or equivalent.", + "corequisite": "" + }, + { + "moduleCode": "PC2133", + "title": "Applied Solid State Physics", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "Students who have passed PC3235 are not allowed to take PC2133", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students who have passed either PC1144 or PC1433.", + "corequisite": "" + }, + { + "moduleCode": "PC2134", + "title": "Mathematical Mtds in Physics I", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "MA1511 and MA1512", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1101R and MA1102R or equivalent", + "corequisite": "" + }, + { + "moduleCode": "PC2193", + "title": "Experimental Physics I", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students who have passed one of these modules PC1141, PC1142, PC1143, PC1144, PC1431, PC1431FC, PC1431X, PC1432/PC1432X or PC1433.", + "corequisite": "" + }, + { + "moduleCode": "PC2230", + "title": "Thermodynamics and Statistical Mechanics", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC1142, PC1144 or PC1431/PC1431FC/PC1431X, and (MA1102R or equivalent)", + "corequisite": "" + }, + { + "moduleCode": "PC2232", + "title": "Physics for Electrical Engineers", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "N.A.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EE2011", + "corequisite": "N.A." + }, + { + "moduleCode": "PC2239", + "title": "Special Problems in Undergrad Physics I", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental Approval", + "corequisite": "" + }, + { + "moduleCode": "PC2267", + "title": "Biophysics I", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC1143 or PC1432/PC1432X or PC1421 or Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "PC2288", + "title": "Basic UROPS in Physics I", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "PC1141 or PC1142, and Departmental Approval", + "corequisite": "" + }, + { + "moduleCode": "PC2289", + "title": "Basic UROPS in Physics II", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "PC1141 or PC1142; and Departmental Approval", + "corequisite": "" + }, + { + "moduleCode": "PC3130", + "title": "Quantum Mechanics II", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students who have passed either PC2130 or PC2130B, and PC2134 or equivalent", + "corequisite": "" + }, + { + "moduleCode": "PC3193", + "title": "Experimental Physics II", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC2193", + "corequisite": "" + }, + { + "moduleCode": "PC3231", + "title": "Electricity & Magnetism II", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "ESP2104", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC2131", + "corequisite": "" + }, + { + "moduleCode": "PC3232", + "title": "Nuclear & Particle Physics", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "PC3232B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC2130 or PC2130B", + "corequisite": "" + }, + { + "moduleCode": "PC3232B", + "title": "Applied Nuclear Physics", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "PC3232", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC1144 or PC1432/PC1432X or PC2232 or PC2020 or PC2130B", + "corequisite": "" + }, + { + "moduleCode": "PC3233", + "title": "Atomic & Molecular Physics I", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC2130 or PC2130B", + "corequisite": "" + }, + { + "moduleCode": "PC3235", + "title": "Solid State Physics I", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "EE3406 or PC2133", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC2130 or PC2130B", + "corequisite": "" + }, + { + "moduleCode": "PC3236", + "title": "Computational Methods in Physics", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students who have passed PC2134 or equivalent", + "corequisite": "" + }, + { + "moduleCode": "PC3238", + "title": "Fluid Dynamics", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students who have passed either PC2134 or PC3236 or equivalent", + "corequisite": "" + }, + { + "moduleCode": "PC3239", + "title": "Special Problems in Undergrad Physics II", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental Approval.", + "corequisite": "" + }, + { + "moduleCode": "PC3240", + "title": "Atmosphere, Ocean and Climate Dynamics", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC3238 or by departmental approval", + "corequisite": "" + }, + { + "moduleCode": "PC3241", + "title": "Solid State Devices", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "EE2004", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC2131 or PC2231 or PC3235 or MLE2104 or PC2133 or EE2005.", + "corequisite": "" + }, + { + "moduleCode": "PC3242", + "title": "Nanofabrication and Nanocharacterization", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "EE4411", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "PC2131 or PC3235 or MLE2104 or PC2133 or EE2005", + "corequisite": "" + }, + { + "moduleCode": "PC3243", + "title": "Photonics", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC2131 or PC2231 or PC3130 or PC3241 or PC3235 or PC2133 or EE2005", + "corequisite": "" + }, + { + "moduleCode": "PC3246", + "title": "Astrophysics I", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "N.A", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC2130 or PC2132", + "corequisite": "" + }, + { + "moduleCode": "PC3247", + "title": "Modern Optics", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "PC2231", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students who have passed either PC2131 or EE2005", + "corequisite": "" + }, + { + "moduleCode": "PC3251", + "title": "Nanophysics", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SP2251", + "corequisite": "" + }, + { + "moduleCode": "PC3267", + "title": "Biophysics II", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students who have passed either PC2131 or PC2267 or EE2011 or Departmental Approval", + "corequisite": "" + }, + { + "moduleCode": "PC3270", + "title": "Machine Learning for Physicists", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "CS3244 Machine Learning; IT3011 Introduction to Machine Learning and Applications", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC2134 Mathematical Methods in Physics I", + "corequisite": "" + }, + { + "moduleCode": "PC3274", + "title": "Mathematical Methods in Physics II", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC2134", + "corequisite": "" + }, + { + "moduleCode": "PC3280", + "title": "Senior Student Seminar", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PC3288", + "title": "Advanced UROPS in Physics I", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "Departmental Approval", + "corequisite": "" + }, + { + "moduleCode": "PC3289", + "title": "Advanced UROPS in Physics II", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "Departmental Approval", + "corequisite": "" + }, + { + "moduleCode": "PC3294", + "title": "Radiation Laboratory", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC3232 or PC3232B", + "corequisite": "" + }, + { + "moduleCode": "PC3295", + "title": "Radiation for Imaging and Therapy in Medicine", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC1144 Physics IV OR PC1432/PC1432X Physics IIE OR PC2232 Physics for Electrical Engineers OR PC2020 Electromagnetics for Electrical Engineers OR PC2130B Applied Quantum Physics.", + "corequisite": "" + }, + { + "moduleCode": "PC3310", + "title": "Undergraduate Professional Internship Programme", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 3, + 4 + ], + "preclusion": "XX3310 modules offered in Science, where XX stands for the subject prefix of the respective major", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed 3 regular semesters of study, having declared Physics as first major and have completed a minimum of 32 MCs in Physics major at the time of application.", + "corequisite": "" + }, + { + "moduleCode": "PC3311", + "title": "Undergraduate Professional Internship", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 3, + 4 + ], + "preclusion": "XX3311 modules offered in Science, where XX stands for the subject prefix for the respective major.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed 3 regular semesters of study, have declared Physics as first major and have completed a minimum of 32 MCs in Physics major at time of application.", + "corequisite": "" + }, + { + "moduleCode": "PC3312", + "title": "Enhanced Undergraduate Professional Internship Programme", + "moduleCredit": 12, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "XX3312 modules offered in Science, where XX stands for the subject prefix for the respective major.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed 3 regular semesters of study, have declared Physics as first major and have completed a minimum of 32 MCs in Physics major at time of application.", + "corequisite": "" + }, + { + "moduleCode": "PC3313", + "title": "Undergraduate Professional Internship Programme Extended", + "moduleCredit": 12, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "This module XX3313 Extended Undergraduate Professional Internship Programme, where XX stands for the subject prefix of the respective major", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed 3 regular semesters of study, having declared PC as first major and have completed a minimum of 32 MCs in PC major at the time of application and have completed PC3312", + "corequisite": "Students should be in their 3rd year of studies (SCI3)" + }, + { + "moduleCode": "PC4130", + "title": "Quantum Mechanics III", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC3130", + "corequisite": "" + }, + { + "moduleCode": "PC4199", + "title": "Honours Project in Physics", + "moduleCredit": 12, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "For Cohort 2011 and before- At least an overall CAP of 3.50, on fulfillment of 100 MC or more; and major requirements under the B.Sc. programme. For Cohort 2012 and after- At least one major at B.Sc./B.Appl.Sc. level; and minimum overall CAP of 3.20 on completion of 100 MCs or more.", + "corequisite": "" + }, + { + "moduleCode": "PC4199R", + "title": "Integrated B.ENG./B.SC. (Hons) Dissertation", + "moduleCredit": 16, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PC4228", + "title": "Device Physics for Quantum Technology", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC3130 or Departmental Approval", + "corequisite": "" + }, + { + "moduleCode": "PC4230", + "title": "Quantum Mechanics III", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "PC4130", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC3130", + "corequisite": "" + }, + { + "moduleCode": "PC4232", + "title": "Cosmology", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC3246 or PC4248 or PC3274", + "corequisite": "" + }, + { + "moduleCode": "PC4236", + "title": "Computational Condensed Matter Physics", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC3235", + "corequisite": "" + }, + { + "moduleCode": "PC4240", + "title": "Solid State Physics II", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC3235 or equivalent", + "corequisite": "" + }, + { + "moduleCode": "PC4241", + "title": "Statistical Mechanics", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC2230 or Departmental Approval", + "corequisite": "" + }, + { + "moduleCode": "PC4242", + "title": "Electricity and Magnetism III", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC3231", + "corequisite": "" + }, + { + "moduleCode": "PC4243", + "title": "Atomic & Molecular Physics II", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC3233", + "corequisite": "" + }, + { + "moduleCode": "PC4245", + "title": "Particle Physics", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students who have passed PC3130 and PC3232", + "corequisite": "" + }, + { + "moduleCode": "PC4246", + "title": "Quantum Optics", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students who have passed either PC3130 or PC3243", + "corequisite": "" + }, + { + "moduleCode": "PC4248", + "title": "General Relativity", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students who have passed PC3274 or Departmental Approval", + "corequisite": "" + }, + { + "moduleCode": "PC4249", + "title": "Astrophysics II", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students who have passed either PC3246 or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "PC4253", + "title": "Thin Film Technology", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "EEE or CPE or CEG or MLE5201 students are not allowed to take this module.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students who have passed either PC3235 or PC3241 or PC3242", + "corequisite": "" + }, + { + "moduleCode": "PC4259", + "title": "Surface Physics", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students who have passed one of these modules: PC3130, PC3242, EE2004, EE3431C or EE2143", + "corequisite": "" + }, + { + "moduleCode": "PC4262", + "title": "Remote Sensing", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC3231 or Departmental Approval", + "corequisite": "" + }, + { + "moduleCode": "PC4264", + "title": "Advanced Solid State Devices", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC3241", + "corequisite": "" + }, + { + "moduleCode": "PC4267", + "title": "Biophysics III", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students who have passed either PC3267 or Departmental Approval", + "corequisite": "" + }, + { + "moduleCode": "PC4268", + "title": "Biophysical Instrumentation & Biomolecular Electronics", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students who have passed either PC3267 or Departmental Approval", + "corequisite": "" + }, + { + "moduleCode": "PC4274", + "title": "Mathematical Methods in Physics III", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students who have passed PC3274", + "corequisite": "" + }, + { + "moduleCode": "PC5198", + "title": "Graduate Seminar Module in Physics", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PC5201", + "title": "Advanced Quantum Mechanics", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students who have passed PC3130 or Departmental Approval", + "corequisite": "" + }, + { + "moduleCode": "PC5202", + "title": "Advanced Statistical Mechanics", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students who have passed PC4241 or departmental approval.", + "corequisite": "" + }, + { + "moduleCode": "PC5203", + "title": "Advanced Solid State Physics", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC3130 and PC4240 (Solid State Physics II) or Departmental Approval.", + "corequisite": "" + }, + { + "moduleCode": "PC5204", + "title": "Magnetism and Spintronics", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC3235, PC4240, and PC4241 or equivalent modules approved by the lecturer or Department Approval", + "corequisite": "" + }, + { + "moduleCode": "PC5204A", + "title": "Soft Materials and Flexible Devices", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PC5204B", + "title": "Selected Topics in Physics: Analytic Approximations", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC3274 or PC4274 or department approval.", + "corequisite": "" + }, + { + "moduleCode": "PC5205", + "title": "Topics in Surface Physics", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students who have passed either PC4223 or PC4259 or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "PC5206", + "title": "Selected Topics in Quantum Field Theory", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC4130/PC4230, PC5201, or Departmental Approval.", + "corequisite": "" + }, + { + "moduleCode": "PC5207", + "title": "Topics in Optical Physics", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC4258 or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "PC5208", + "title": "Superconductivity", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students who have passed either PC4214 or PC4240, or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "PC5209", + "title": "Accelerator Based Materials Characterisation", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students who have passed either one of these modules. PC4244, PC4212, PC4261, or Departmental Approval", + "corequisite": "" + }, + { + "moduleCode": "PC5210", + "title": "Advanced Dynamics", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students who have passed both PC3274 and PC3130, or Departmental Approval", + "corequisite": "" + }, + { + "moduleCode": "PC5212", + "title": "Physics of Nanostructures", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students who have passed one of these modules. PC4130, PC4240, PC4201 (old code), PC4214 (old code), or Departmental Approval", + "corequisite": "" + }, + { + "moduleCode": "PC5213", + "title": "Advanced Biophysics", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students with a general background in physics and have learnt thermal dynamics.", + "corequisite": "" + }, + { + "moduleCode": "PC5214", + "title": "Essential techniques in experimental physics", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "A basic background in optics is recommended", + "corequisite": "" + }, + { + "moduleCode": "PC5215", + "title": "Numerical Recipes With Applications", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC3236 or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "PC5216", + "title": "Advanced Atomic & Molecular Physics", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PC5220", + "title": "The Physics and Technology of 2D-Materials and Devices", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Introduction to solid state physics, QM2", + "corequisite": "" + }, + { + "moduleCode": "PC5228", + "title": "Quantum Information and Computation", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC3130 or Departmental Approval", + "corequisite": "" + }, + { + "moduleCode": "PC5239", + "title": "Special Problems in Physics", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "PC5239B", + "title": "Variational Principles", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This module is open to all students at the Dept of Physics\nand CQT. Students from other departments and faculties\nare welcome, but it is advisable that they discuss their\nbackground with the lecturer before registering. Enrolled\nstudents are expected to have the usual background of a\nphysics graduate student.", + "corequisite": "" + }, + { + "moduleCode": "PC5247", + "title": "Photonics II", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC3247: Modern Optics, or equivalent.", + "corequisite": "Familiar with electromagnetism (including Maxwell’s equations), and with the mathematics of differential equations, complex number, basic Fourier transform theory." + }, + { + "moduleCode": "PC5288", + "title": "M.sc Coursework Thesis For Physics", + "moduleCredit": 12, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PC5289", + "title": "M.sc.(coursework) Thesis For Applied Physics", + "moduleCredit": 16, + "department": "Physics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PC5731", + "title": "Smart Devices for A-Level Physics Teachers", + "moduleCredit": 1, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed a Bachelor’s degree in Physics or a related subject", + "corequisite": "" + }, + { + "moduleCode": "PE2101P", + "title": "Introduction to Philosophy, Politics, and Economics", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PE3101P", + "title": "Decision and Social Choice", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "PH3249", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM2006/GET1028 Logic", + "corequisite": "" + }, + { + "moduleCode": "PE3551E", + "title": "FASS Undergraduate Research Opportunity (UROP)", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must:\nhave declared the PPE major, with the Economics specialization, completed a minimum of 24 MC of PPE graduation requirements, and have a CAP of at least 3.50.", + "corequisite": "" + }, + { + "moduleCode": "PE3551P", + "title": "FASS Undergraduate Research Opportunity (UROP)", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must:\nhave declared the PPE major, with the Philosophy specialization, completed a minimum of 24 MC of PPE graduation requirements, and have a CAP of at least\n3.50.", + "corequisite": "" + }, + { + "moduleCode": "PE3551S", + "title": "FASS Undergraduate Research Opportunity (UROP)", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must:\nhave declared the PPE major, with the Political Science specialization, completed a minimum of 24 MC of PPE graduation requirements, and have a CAP of at least\n3.50.", + "corequisite": "" + }, + { + "moduleCode": "PE4101P", + "title": "The Ethics and Politics of Nudging", + "moduleCredit": 5, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28 MCs in PH, PS, EC, PE or PE-recognised modules. Achieve a minimum CAP of 3.20 or be on the Honours track. PE2101P and EC2101.", + "corequisite": "" + }, + { + "moduleCode": "PE4102P", + "title": "Welfare and Distribution", + "moduleCredit": 5, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28 MCs in PH, PS, EC, PE or PE-recognised modules. Achieve a minimum CAP of 3.20 or be on the Honours track. PE2101P.", + "corequisite": "" + }, + { + "moduleCode": "PE4401E", + "title": "Honours Thesis", + "moduleCredit": 15, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PH4401 Honours Thesis,\nPS4401 Honours Thesis,\nEC4401 Honours Thesis,\nPE4401P Honours Thesis,\nPE4401S Honours Thesis,\nPH4660 Independent Study,\nPS4660 Independent Study,\nEC4660 Independent Study,\nPE4660P Independent Study,\nPE4660S Independent Study,\nPE4660E Independent Study", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "To be offered PPE Majors with the Economics Specialization who completed 110 MCs including 44 MCs in PH, PS, EC, PE or PE-recognized modules, with a minimum CAP of 3.50.", + "corequisite": "" + }, + { + "moduleCode": "PE4401P", + "title": "Honours Thesis", + "moduleCredit": 15, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PH4401 Honours Thesis,\nPS4401 Honours Thesis,\nEC4401 Honours Thesis,\nPE4401S Honours Thesis,\nPE4401E Honours Thesis,\nPH4660 Independent Study,\nPS4660 Independent Study,\nEC4660 Independent Study,\nPE4660P Independent Study,\nPE4660S Independent Study,\nPE4660E Independent Study", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "To be offered PPE Majors with the Philosophy Specialization who completed 110 MCs including 44 MCs in PH, PS, EC, PE or PE-recognized modules, with a minimum CAP of 3.50.", + "corequisite": "" + }, + { + "moduleCode": "PE4401S", + "title": "Honours Thesis", + "moduleCredit": 15, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PH4401 Honours Thesis,\nPS4401 Honours Thesis,\nEC4401 Honours Thesis,\nPE4401P Honours Thesis,\nPE4401E Honours Thesis,\nPH4660 Independent Study,\nPS4660 Independent Study,\nEC4660 Independent Study,\nPE4660P Independent Study,\nPE4660S Independent Study,\nPE4660E Independent Study", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "To be offered PPE Majors with the Political Science Specialization who completed 110 MCs including 44 MCs in PH, PS, EC, PE or PE-recognized modules, with a minimum CAP of 3.50.", + "corequisite": "" + }, + { + "moduleCode": "PE4660E", + "title": "Independent Study", + "moduleCredit": 5, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PH4401 Honours Thesis,\nPS4401 Honours Thesis,\nEC4401 Honours Thesis,\nPE4401P Honours Thesis,\nPE4401S Honours Thesis,\nPE4401E Honours Thesis,\nPH4660 Independent Study,\nPS4660 Independent Study,\nEC4660 Independent Study,\nPE4660P Independent Study,\nPE4660S Independent Study", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "To be offered subject to the agreement of the Supervisor to PPE Majors with the Economics specialization who completed 100 MCs including 44 MCs in PH, PS, EC, PE or PE-recognized modules, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "PE4660P", + "title": "Independent Study", + "moduleCredit": 5, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PH4401 Honours Thesis,\nPS4401 Honours Thesis,\nEC4401 Honours Thesis,\nPE4401P Honours Thesis,\nPE4401S Honours Thesis,\nPE4401E Honours Thesis,\nPH4660 Independent Study,\nPS4660 Independent Study,\nEC4660 Independent Study,\nPE4660S Independent Study,\nPE4660E Independent Study", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "To be offered subject to the agreement of the Supervisor to PPE Majors with the Philosophy specialization who completed 100 MCs including 44 MCs in PH, PS, EC, PE or PE-recognized modules, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "PE4660S", + "title": "Independent Study", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PH4401 Honours Thesis,\nPS4401 Honours Thesis,\nEC4401 Honours Thesis,\nPE4401P Honours Thesis,\nPE4401S Honours Thesis,\nPE4401E Honours Thesis,\nPH4660 Independent Study,\nPS4660 Independent Study,\nEC4660 Independent Study,\nPE4660P Independent Study,\nPE4660E Independent Study", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "To be offered subject to the agreement of the Supervisor to PPE Majors with the Political Science specialization who completed 100 MCs including 44 MCs in PH, PS, EC, PE or PE-recognized modules, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "PF1101", + "title": "Fundamentals of Project Management", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF1103", + "title": "Digital Construction", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF1106", + "title": "Introduction to Measurement", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "PF1102", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF1107", + "title": "Project And Facilities Management Law", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "PF2101", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF1108", + "title": "Introduction to Building Performance", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "PF1104", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF2102", + "title": "Structural Systems", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "Students from Civil Engineering, PF2501", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF2103", + "title": "Measurement (Building Works)", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF2107", + "title": "Construction Technology", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF2108", + "title": "Project Cost Management", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF2109", + "title": "Project Feasibility", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "PF2201", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF2110", + "title": "Fundamentals of Facilities Management", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "PF1105", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF2203", + "title": "Quality and Productivity Management", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF2205", + "title": "Project Finance", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "PF2204", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF2304", + "title": "Operations and Maintenance Management", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "PF4309, PFM students from AY2018/19 intake and after", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF2305", + "title": "Event Management", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "PF4307, PFM students from AY2017/18 intake and before", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF2306", + "title": "Event Management Case Studies", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "PF4308, PFM students from AY2017/18 intake and before", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF2402", + "title": "Work Experience Internship", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 3, + 4 + ], + "preclusion": "Full-time undergraduate students who have accumulated more than 12MCs for previous internship stints.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This internship module is open to full-time undergraduate students who have completed at least 60MCs as at 1 January of that year and plan to proceed on an approved internship of at least 10 weeks in duration in the vacation period.", + "corequisite": "" + }, + { + "moduleCode": "PF2502", + "title": "Development Technology and Management", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF2504", + "title": "Materials Technology", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF2505", + "title": "M&E Systems", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "PF2104,PF2503", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF3104", + "title": "Project Execution", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "PF3101,PF3206,PF4207", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF3105", + "title": "Research Methods", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "PF2105", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF3201", + "title": "Measurement (Specialist Works)", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PF2503 M&E Engineering Systems/ PF2505 M&E Systems (AY2014/15 to AY2017/18 intakes)", + "corequisite": "" + }, + { + "moduleCode": "PF3205", + "title": "Advanced Measurement", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PF2102/ PF2501 Structural Systems (AY2014/15 to AY2017/18 intakes)", + "corequisite": "" + }, + { + "moduleCode": "PF3207", + "title": "Project Management Law", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF3208", + "title": "Project Leadership", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "PF2106", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF3209", + "title": "Building Information Modelling", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF3210", + "title": "Total Building Performance", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "PF4501", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF3211", + "title": "AI Applications for the Built Environment", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF3301", + "title": "Maintainability of Facilities", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF3305", + "title": "Facilities Planning and Design", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF3306", + "title": "Facilities Management Law And Contracts", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "PF3304", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF3307", + "title": "Strategic Facilities Management", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "PF4301, PFM students from AY2017/18 intake and before", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF3401", + "title": "Practical Training Scheme", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF3502", + "title": "Smart Facilities", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "PF3501", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF3504", + "title": "Energy Management", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "PF3302, PFM students from AY2017/18 intake and before", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF4101", + "title": "Dissertation", + "moduleCredit": 8, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF4102", + "title": "Contract and Procurement Management", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF4203", + "title": "Project Dispute Management", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF4206", + "title": "Building Information Modelling", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF4207", + "title": "Project Risk Management", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "PF3104, PFM students from AY2018/19 intake and after", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF4208", + "title": "Safety and Health Management", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "PF4202", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF4209", + "title": "Construction Enterprise Management", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF4211", + "title": "Addictive Manufacturing for Construction", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF4212", + "title": "Advanced Building Information Modelling", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PF3209 Building Information Modelling", + "corequisite": "" + }, + { + "moduleCode": "PF4213", + "title": "Building Energy Analysis and Simulation", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF4301", + "title": "Strategic Facilities Management", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "PF3307, PFM students from AY2018/19 intake and after", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF4305", + "title": "Green Development", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "PF4502, PFM students from AY2018/19 intake and after", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF4306", + "title": "REITs Facilities Management", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF4307", + "title": "Event Management", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "PF2305, PFM students from AY2018/19 intake and after", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF4308", + "title": "Event Management Case Studies", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "PF2306, PFM students from AY2018/19 intake and after", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF4309", + "title": "Infrastructure Operations and Maintenance", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "PF2304, PFM students from AY2017/18 intake and before", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF4501", + "title": "Total Building Performance", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PF4502", + "title": "Green Development", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "PF4305, PFM students from AY2017/18 intake and before", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH2112", + "title": "Non-Classical Logic", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GET1028 Logic", + "corequisite": "" + }, + { + "moduleCode": "PH2113", + "title": "Computation and Philosophy", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH2201", + "title": "Introduction to Philosophy Of Science", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "GEM2025", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH2202", + "title": "Major Political Philosophers", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH2203", + "title": "Major Moral Philosophers", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH2204", + "title": "Introduction to Indian Thought", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "GEK2027, SN2273", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH2206", + "title": "Founders of Modern Philosophy", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "GEK2028", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH2207", + "title": "Hume and Kant", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH2208", + "title": "Applied Ethics", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEK2029", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH2209", + "title": "Philosophy of Art", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEK2002", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH2211", + "title": "Philosophy of Religion", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH2212", + "title": "Introduction to Continental Philosophy", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EU2214, GEK2030", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH2213", + "title": "Metaphysics", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH2216", + "title": "Environmental Philosophy", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "UPI2205, GEK2031", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH2218", + "title": "Business Ethics", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEK2033", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH2219", + "title": "Critical Theory and Hermeneutics", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EU2222", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH2220", + "title": "Social Philosophy and Policy", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEK2034", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH2221", + "title": "Medical Ethics", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PH2208, GEK2035", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH2222", + "title": "Greek Philosophy (Socrates and Plato)", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PH3209, GEK2036", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH2223", + "title": "Introduction to the Philosophy of Technology", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEK2037", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH2224", + "title": "Philosophy and Film", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "PH2880A, GEK2040", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH2226", + "title": "Concept of Nature in Inquiry", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH2241", + "title": "Philosophy of Mind", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "PH3212 Philosophy of Mind", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH2242", + "title": "Philosophy of Language", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "PH3210", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH2243", + "title": "Epistemology", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "PH3211 Theory of Knowledge", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH2301", + "title": "Classical Chinese Philosophy I", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PH2205, GEK2038", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH2302", + "title": "Chinese Philosophical Traditions I", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEK2039", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH2880", + "title": "Topics in Philosophy", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH3201", + "title": "Philosophy of Social Science", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH3202", + "title": "Philosophy of Law", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "LL4639E, LL4404 or an equivalent course", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH3203", + "title": "Moral Philosophy", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH3204", + "title": "Issues in Indian Philosophy", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "SN3272", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH3206", + "title": "Recent Philosophy", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH3207", + "title": "Continental European Philosophy", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EU3227", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH3208", + "title": "Buddhist Philosophy", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH3213", + "title": "Knowledge, Modernity and Global Change", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH3214", + "title": "Philosophy and Literature", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH3216", + "title": "Comparative Environmental Ethics", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH3217", + "title": "Women in Philosophy", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "One PH module", + "corequisite": "" + }, + { + "moduleCode": "PH3218", + "title": "Introduction to Comparative Philosophy", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed at least one Western philosophy module and at least one relevant Asian philosophy module (depending on whether Chinese or Indian Philosophy is the focus of a particular session), and the department’s permission.", + "corequisite": "" + }, + { + "moduleCode": "PH3222", + "title": "Greek Philosophy (Aristotle)", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PH2222", + "corequisite": "" + }, + { + "moduleCode": "PH3230", + "title": "Normative Ethical Theory", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH3241", + "title": "Consciousness", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PH3212", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PH2241 or PH2242 or PH3210", + "corequisite": "" + }, + { + "moduleCode": "PH3242", + "title": "The Self", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PH2213 or PH2241", + "corequisite": "" + }, + { + "moduleCode": "PH3243", + "title": "Chance and Uncertainty", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PH2110/GEM2006 or PH2201/GEM2025 or PH2243 or PH3211", + "corequisite": "" + }, + { + "moduleCode": "PH3244", + "title": "Appearance and Reality", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PH2213 or PH2241 or PH2242", + "corequisite": "" + }, + { + "moduleCode": "PH3245", + "title": "Language and Thought", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PH2241 or PH3212 or PH2242 or PH3210", + "corequisite": "" + }, + { + "moduleCode": "PH3246", + "title": "Paradoxes", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PH2110/GEM2006", + "corequisite": "" + }, + { + "moduleCode": "PH3247", + "title": "Philosophical Logic", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PH2214", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM2006/PH2110 or GET1028", + "corequisite": "" + }, + { + "moduleCode": "PH3248", + "title": "Social and Formal Epistemology", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PH2111/GEK2048 or PH2243", + "corequisite": "" + }, + { + "moduleCode": "PH3250", + "title": "Quantification and Modality", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PH2112 Non-Classical Logic", + "corequisite": "" + }, + { + "moduleCode": "PH3261", + "title": "Kant's Critique of Pure Reason", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must have completed a minimum of 4 MC in PH.", + "corequisite": "" + }, + { + "moduleCode": "PH3301", + "title": "Classical Chinese Philosophy II", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PH2301 or GEK2038", + "corequisite": "" + }, + { + "moduleCode": "PH3302", + "title": "Chinese Philosophical Traditions 2", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PH2302", + "corequisite": "" + }, + { + "moduleCode": "PH4201", + "title": "Philosophy of Science", + "moduleCredit": 5, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28 MCs in PH, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PH4202", + "title": "Political Philosophy", + "moduleCredit": 5, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28 MCs in PH or 28 MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PH4203", + "title": "Issues in Moral Philosophy", + "moduleCredit": 5, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28 MCs in PH or 28 MCs in NM, or 28MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PH4204", + "title": "Topics in Indian Philosophy", + "moduleCredit": 5, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80MCs, including 28 MCs in PH or 28MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80MCs, including 28 MCs in PH modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PH4205", + "title": "Topics in East Asian Philosophy", + "moduleCredit": 5, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80MCs, including 28 MCs in PH, or 28MCs in PS, or 28MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track. PH2301 or PH2302.\n\nCohort 2020 onwards: Completed 80MCs, including 28 MCs in PH or 28MCs in PS, with a minimum CAP of 3.20 or be on the Honours track. PH2301 or PH2302.", + "corequisite": "" + }, + { + "moduleCode": "PH4206", + "title": "A Major Philosopher", + "moduleCredit": 5, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012-2014: \nCompleted 80MCs, including 28 MCs in PH or 28 MCs in EU/LA (French/German)/recog nised modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2015 onwards: \nCompleted 80MCs, including 28 MCs in PH or 28 MCs in EU/LA (French/German/Spanis h)/recognised modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PH4207", + "title": "Phenomenology", + "moduleCredit": 5, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012-2014: \nCompleted 80MCs, including 28 MCs in PH or 28 MCs in EU/LA (French/German)/recognised modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2015 onwards: \nCompleted 80MCs, including 28 MCs in PH or 28 MCs in EU/LA (French/German/Spanis h)/ recognised modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PH4208", + "title": "Topics in Buddhism", + "moduleCredit": 5, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80MCs, including 28 MCs in PH or 28MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80MCs, including 28 MCs in PH modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PH4209", + "title": "Greek Thinkers", + "moduleCredit": 5, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012-2014 Completed 80MCs, including 28 MCs in PH or 28 MCs in EU/LA(French/German)/ recognised modules or 28MCs in GL/GL recognised non- language modules, with a minimum CAP of 3.20 or be on the Honours track. \n\nCohort 2015-2019: Completed 80MCs, including 28 MCs in PH or 28 MCs in EU/LA(French/German/ Spanish)/recognised modules or 28MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80MCs, including 28 MCs in PH or 28 MCs in EU/LA(French/German/ Spanish)/recognised modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PH4210", + "title": "Topics in Western Philosophy", + "moduleCredit": 5, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012-2014: \nCompleted 80MCs, including 28 MCs in PH, or 28MCs in PS, or 28 MCs in EU/LA (French/German)/ recognised modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2015 onwards: \nCompleted 80MCs, including 28 MCs in PH, or 28MCs in PS, or 28 MCs in EU/LA (French/German/ Spanish)/recognised modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PH4211", + "title": "Issues in Epistemology", + "moduleCredit": 5, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28 MCs in PH, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PH4212", + "title": "Issues in Philosophy of Mind", + "moduleCredit": 5, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28 MCs in PH, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PH4213", + "title": "Comparative Philosophy", + "moduleCredit": 5, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012-2014: \nCompleted 80MCs, including 28 MCs in PH or 28 MCs in EU/LA (French/German)/recognised modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2015 onwards: \nCompleted 80MCs, including 28 MCs in PH or 28 MCs in EU/LA (French/German/Spanis h)/recognised modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PH4214", + "title": "Recent Continental European Philosophy", + "moduleCredit": 5, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80MCs, including 28 MCs in PH or 28 MCs in GL/GL recognized non- language modules, with a minimum CAP of 3.2 or be on the Honours track\n\nCohort 2020 onwards: Completed 80MCs, including 28 MCs in PH modules, with a minimum CAP of 3.2 or be on the Honours track", + "corequisite": "" + }, + { + "moduleCode": "PH4215", + "title": "Freedom and Moral Responsibility", + "moduleCredit": 5, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28 MCs in PH, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PH4216", + "title": "Topics in Environmental Philosophy", + "moduleCredit": 5, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28 MCs in PH, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PH4217", + "title": "History of Philosophy", + "moduleCredit": 5, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28 MCs in PH, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PH4240", + "title": "Issues in Metaphysics", + "moduleCredit": 5, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28 MCs in PH, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PH4241", + "title": "Issues in Philosophical Logic", + "moduleCredit": 5, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28 MCs in PH, with a minimum CAP of 3.20 or be on the Honours track. PH2110/GEM2006", + "corequisite": "" + }, + { + "moduleCode": "PH4242", + "title": "Issues in Philosophy of Language", + "moduleCredit": 5, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012-2014: \nCompleted 80MCs, including 28 MCs in PH, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2015 onwards:\nCompleted 80 MCs, including 28 MCs in PH or 28 MCs in EL, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PH4243", + "title": "Issues in Aesthetics", + "moduleCredit": 5, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28 MCs in PH, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PH4261", + "title": "Kant", + "moduleCredit": 5, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012-2014: \nCompleted 80MCs, including 28 MCs in PH or 28 MCs in EU/LA (French/German)/recog nised modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2015 onwards:\n Completed 80MCs, including 28 MCs in PH or 28 MCs in EU/LA (French/German/Spanis h)/recognised modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PH4262", + "title": "Nietzsche", + "moduleCredit": 5, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012-2014: \nCompleted 80MCs, including 28 MCs in PH, or 28MCs in PS, or 28 MCs in EU/LA (French/ German)/ recognised modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2015 onwards: \nCompleted 80MCs, including 28 MCs in PH, or 28MCs in PS, or 28 MCs in EU/LA (French/German/Span ish)/recognised modules, with a minimum CAP of 3.20 or be on the Honours", + "corequisite": "" + }, + { + "moduleCode": "PH4311", + "title": "Classical Chinese Through Philosophical Texts", + "moduleCredit": 5, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "CL3204. This is taught in Mandarin, those who could do this module should not be taking the proposed module. Reverse preclusion is not needed, as someone who\npassed the proposed module, if their Mandarin improved sufficiently, could still benefit from CL3204 and will not find that too easy.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80MC, including 28 MCs in PH or 28MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track. \nPH2301 or PH2302.\n\nCohort 2020 onwards: Completed 80MC, including 28 MCs in PH modules, with a minimum CAP of 3.20 or be on the Honours track. \nPH2301 or PH2302.", + "corequisite": "" + }, + { + "moduleCode": "PH4312", + "title": "Contemporary Readings in East Asian Philosophy", + "moduleCredit": 5, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80MC, including 28 MCs in PH or 28MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track. \nPH2301 or PH2302 or PH2321 or PH3208 or PH3218 or PH3301 or PH3302 or PH3303 or PH3304 or CH2252 or CH3253.\n\nCohort 2020 onwards: Completed 80MC, including 28 MCs in PH modules, with a minimum CAP of 3.20 or be on the Honours track. \nPH2301 or PH2302 or PH2321 or PH3208 or PH3218 or PH3301 or PH3302 or PH3303 or PH3304 or CH2252 or CH3253.", + "corequisite": "" + }, + { + "moduleCode": "PH4401", + "title": "Honours Thesis", + "moduleCredit": 15, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "PH4660", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "Cohort 2015 and before:\nCompleted 110 MCs including 60 MCs of PH major requirements with a minimum CAP of 3.50.\n\nCohort 2016 onwards:\nCompleted 110 MCs including 44 MCs of PH major requirements with a minimum CAP of 3.50.", + "corequisite": "" + }, + { + "moduleCode": "PH4550", + "title": "Internship: Philosophy for Teaching", + "moduleCredit": 5, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in PH, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PH4660", + "title": "Independent Study", + "moduleCredit": 5, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "PH4401", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in PH, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in PH, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in PH, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "PH5420", + "title": "Advanced Political Philosophy", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH5420R", + "title": "Advanced Political Philosophy", + "moduleCredit": 5, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH5423", + "title": "Philosophy of Science and Technology", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH5423R", + "title": "Philosophy of Science & Technology", + "moduleCredit": 5, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH5430", + "title": "Ethics", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH5430R", + "title": "Ethics", + "moduleCredit": 5, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2006 and before: Completed 80MCs, of which at least 28MCs are PH shared major Cohort 2007 onwards: Completed 80MCs, including 28MCs in PH, with a minimum CAP of 3.5 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PH5510", + "title": "Comparative Philosophy", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH5650", + "title": "Topics In Continental Philosophy", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Offered to Graduate students only and admission of others by permission of instructor", + "corequisite": "" + }, + { + "moduleCode": "PH5650R", + "title": "Topics in Continental Philosophy", + "moduleCredit": 5, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH5660", + "title": "Independent Study", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH6210", + "title": "Topics in History of Western Philosophy", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH6211", + "title": "Advanced Epistemology", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH6212", + "title": "Advanced Philosophy of Mind", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH6216", + "title": "Advanced Environmental Philosophy", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Nil (Those who are not graduate students in NUS’s Dept.\nof Phil. must obtain instructor’s approval.)", + "corequisite": "" + }, + { + "moduleCode": "PH6240", + "title": "Advanced Metaphysics", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH6241", + "title": "Advanced Philosophical Logic", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH6242", + "title": "Advanced Philosophy of Language", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH6243", + "title": "Advanced Aesthetics", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH6320", + "title": "Traditions in Asian Philosophy", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH6540", + "title": "Topics in Analytic Philosophy", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH6660", + "title": "Independent Study", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Offered to Graduate students only and admission of others by permission of instructor", + "corequisite": "" + }, + { + "moduleCode": "PH6760", + "title": "Philosophical Topics", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PH6770", + "title": "Graduate Research Seminar", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PHS1110", + "title": "Foundation for Medicinal and Synthetic Chemistry", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "PR1110A Foundations for Medicinal Chemistry and PR1110 Foundations for Medicinal Chemistry and Pharmacy Major", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "H2 Chemistry or equivalent", + "corequisite": "" + }, + { + "moduleCode": "PHS1111", + "title": "Fundamental Biochemistry for Pharmaceutical Science", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "PR1111A Pharmaceutical Biochemistry and PR1111 Pharmaceutical Biochemistry and Pharmacy Major and LSM1106 Molecular Cell Biology", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "H2 Chemistry or equivalent", + "corequisite": "" + }, + { + "moduleCode": "PHS1114", + "title": "Principles of Pharmaceutical Formulations I", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "PR2114A Formulation & Technology I and PR2114 Formulation & Technology I and Pharmacy Major", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "H2 Chemistry or equivalen", + "corequisite": "" + }, + { + "moduleCode": "PHS1120", + "title": "Essential Topics in Pharmaceutical Chemistry", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "Pharmacy Major", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PHS1110 Foundation for Medicinal and Synthetic Chemistry", + "corequisite": "" + }, + { + "moduleCode": "PHS1130", + "title": "Human Physiology", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "AY1130 Human Anatomy & Physiology I and PY1131 Human Anatomy & Physiology II and Pharmacy Major", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Pharmaceutical Science Major or by departmental approval", + "corequisite": "" + }, + { + "moduleCode": "PHS2120", + "title": "Drug Product Development and Lifecycle Management", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR1110A", + "corequisite": "" + }, + { + "moduleCode": "PHS2143", + "title": "Analytical Techniques and Pharmaceutical Applications", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "PR2143 Pharmaceutical Analysis for Quality Assurance", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR1110A Foundations for Medicinal Chemistry or PR1110 Foundations for Medicinal Chemistry", + "corequisite": "" + }, + { + "moduleCode": "PHS2191", + "title": "Laboratory Techniques in Pharmaceutical Science I", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PHS1120, PHS2143", + "corequisite": "" + }, + { + "moduleCode": "PHS3122", + "title": "Pharmaceutical Quality Management", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PHS2120", + "corequisite": "" + }, + { + "moduleCode": "PHS3191", + "title": "Laboratory Techniques in Pharmaceutical Science II", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PHS2191 Laboratory Techniques in Pharmaceutical Science I", + "corequisite": "" + }, + { + "moduleCode": "PHS3220", + "title": "Microbiology for Pharmaceutical Science", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "PR1120 Microbiology in Pharmacy", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR2114/PR2114A Formulation and Technology I or PHS1114 Principles of Pharmaceutical Formulations I or PR1152 Pharmacy Foundations: Science and Therapeutics I or by departmental approval", + "corequisite": "" + }, + { + "moduleCode": "PHS3310", + "title": "Undergraduate Professional Internship Programme", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "Any other XX3310 or modules offered in Science, where XX stands for the subject prefix for the respective major", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed 3 regular semesters of study, having declared PHS as first major and have completed a minimum of 32 MCs in PHS major at the time of application.", + "corequisite": "" + }, + { + "moduleCode": "PHS3311", + "title": "Undergraduate Professional Internship", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "Any other XX3311 or modules offered in Science, where XX stands for the subject prefix for the respective major", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed 3 regular semesters of study, having declared PHS as first major and have completed a minimum of 32 MCs in PHS major at the time of application and have completed PHS3310.", + "corequisite": "" + }, + { + "moduleCode": "PHS3312", + "title": "Enhanced Undergraduate Professional Internship Programme", + "moduleCredit": 12, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "Any other XX3312 or modules offered in Science, where XX stands for the subject prefix for the respective major", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed 3 regular semesters of study, having declared PHS as first major and have completed a minimum of 32 MCs in PHS major at the time of application and have completed PHS3310", + "corequisite": "" + }, + { + "moduleCode": "PHS3313", + "title": "Undergraduate Professional Internship Programme Extended", + "moduleCredit": 12, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "This module XX3313 Extended Undergraduate Professional Internship Programme, where XX stands for the subject prefix of the respective major", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed 3 regular semesters of study, having declared PHS as first major and have completed a minimum of 32 MCs in PHS major at the time of application and have completed PHS3312", + "corequisite": "Students should be in their 3rd year of studies (SCI3)" + }, + { + "moduleCode": "PHS4220", + "title": "Synthetic Strategies for Drug Substances", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR1110/PR1110A Foundations for Medicinal Chemistry or PHS1110 Foundation for Medicinal and Synthetic Chemistry.", + "corequisite": "" + }, + { + "moduleCode": "PL1101E", + "title": "Introduction to Psychology", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PL2131", + "title": "Research and Statistical Methods I", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "UQF2101B", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2017 and before: Obtained a minimum grade of 'C6' in G.C.E. 'O' level Mathematics, or passed at least IB Mathematical Studies SL, or equivalent.\n\nCohort 2018 onwards: Nil", + "corequisite": "" + }, + { + "moduleCode": "PL2132", + "title": "Research and Statistical Methods II", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2017 and before: At least a B- in both PL1101E and PL2131, OR has declared Psychology as a major. Students who fail to meet the B- criterion in either of the modules, or both, will have the opportunity to take a department-conducted test, the passing of which will act as an alternative prerequisite.\n\nCohort 2018 onwards: At least a B- in both PL1101E and PL2131, OR has declared Psychology as a major.", + "corequisite": "" + }, + { + "moduleCode": "PL3231", + "title": "Independent Research Project", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E, PL2131, PL2132 and consent of Supervisor. Students must have at least a 'C' grade in one of the prerequisites.", + "corequisite": "" + }, + { + "moduleCode": "PL3232", + "title": "Biological Psychology", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E", + "corequisite": "" + }, + { + "moduleCode": "PL3233", + "title": "Cognitive Psychology", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E", + "corequisite": "" + }, + { + "moduleCode": "PL3234", + "title": "Developmental Psychology", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E", + "corequisite": "" + }, + { + "moduleCode": "PL3235", + "title": "Social Psychology", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E", + "corequisite": "" + }, + { + "moduleCode": "PL3236", + "title": "Abnormal Psychology", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "SW3217", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E", + "corequisite": "" + }, + { + "moduleCode": "PL3237", + "title": "Language & Cognitive Processes", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E and PL3233", + "corequisite": "" + }, + { + "moduleCode": "PL3238", + "title": "Social Cognition", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E, PL2131, PL2132 and PL3235", + "corequisite": "" + }, + { + "moduleCode": "PL3239", + "title": "Industrial and Organisational Psychology", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E, PL2131 and PL2132", + "corequisite": "" + }, + { + "moduleCode": "PL3240", + "title": "Group Dynamics", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E and PL3235", + "corequisite": "" + }, + { + "moduleCode": "PL3241", + "title": "Personality & Individual Differences", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E and PL2131", + "corequisite": "" + }, + { + "moduleCode": "PL3242", + "title": "Health Psychology", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E", + "corequisite": "" + }, + { + "moduleCode": "PL3243", + "title": "Sensation and Perception", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E and PL3233", + "corequisite": "" + }, + { + "moduleCode": "PL3244", + "title": "Adolescent Psychology", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E and PL3234", + "corequisite": "" + }, + { + "moduleCode": "PL3248", + "title": "Learning and Conditioning", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E, PL2131, PL2132, and PL3232 or PL3233", + "corequisite": "" + }, + { + "moduleCode": "PL3249", + "title": "Memory", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E, PL3232 and PL3233", + "corequisite": "" + }, + { + "moduleCode": "PL3250", + "title": "Human Performance", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E and PL3233", + "corequisite": "" + }, + { + "moduleCode": "PL3251", + "title": "Atypical Development and Language", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PL3880A", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E and PL3234", + "corequisite": "" + }, + { + "moduleCode": "PL3252", + "title": "Social-Cognitive Perspectives on Emotion", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PL3880B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E and PL3235", + "corequisite": "" + }, + { + "moduleCode": "PL3253", + "title": "Psychobiological Perspectives on Emotion", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E, PL2131, PL2132 and PL3232", + "corequisite": "" + }, + { + "moduleCode": "PL3254", + "title": "Introduction to Trauma Psychology", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E and PL3236", + "corequisite": "" + }, + { + "moduleCode": "PL3255", + "title": "Introduction to Paediatric Psychology", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E, PL2131, PL2132 and PL3234.", + "corequisite": "" + }, + { + "moduleCode": "PL3256", + "title": "Infant Development", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E, PL2131, PL2132, and PL3234", + "corequisite": "" + }, + { + "moduleCode": "PL3257", + "title": "Introduction to Clinical Psychology", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E and PL3236", + "corequisite": "" + }, + { + "moduleCode": "PL3258", + "title": "Decision Neuroscience", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E, PL2131, PL2132 and PL3232", + "corequisite": "" + }, + { + "moduleCode": "PL3259", + "title": "Psychology of Ageing", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E, PL2131, PL3234 and PL3235", + "corequisite": "" + }, + { + "moduleCode": "PL3260", + "title": "Moral Development", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "YSS4221", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E, PL2131 and PL2132.", + "corequisite": "" + }, + { + "moduleCode": "PL3261", + "title": "Statistical Techniques in Psychological Research", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL2131, PL2132, and (PL3231 or one of the PL328x modules)", + "corequisite": "" + }, + { + "moduleCode": "PL3281", + "title": "Lab in Cognitive Psychology", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E, PL2131, PL2132 and PL3233", + "corequisite": "" + }, + { + "moduleCode": "PL3281A", + "title": "Lab in Perception and Attention", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E, PL2131, PL2132 and PL3233", + "corequisite": "" + }, + { + "moduleCode": "PL3281B", + "title": "Lab in Memory and Cognition", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E, PL2131, PL2132 and PL3233.", + "corequisite": "" + }, + { + "moduleCode": "PL3281C", + "title": "Lab in Reading Processes", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E, PL2131, PL2132 and PL3233", + "corequisite": "" + }, + { + "moduleCode": "PL3281D", + "title": "Lab in Music Perception and Cognition", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students would need to have completed PL1101E, PL2131, PL2132, and PL3233. In addition, students would normally have attained a musical backdrop or competence level in music literacy that is comparable to Grade 5 Performance/Music Theory from the Associated Board of the Royal Schools of Music, Trinity Guildhall School of Music & Drama, London College of Music & Media, Australian Music Examination Board, Dublin Institute of Technology, University of Africa, Royal Conservatory of Music (Toronto), Royal Irish Academy of Music, or an approved international music examinations board.", + "corequisite": "" + }, + { + "moduleCode": "PL3281E", + "title": "Lab in Speech and Language Processes", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E, PL2131, PL2132 and PL3233", + "corequisite": "" + }, + { + "moduleCode": "PL3282", + "title": "Lab in Social Psychology", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E, PL2131, PL2132 and PL3235", + "corequisite": "" + }, + { + "moduleCode": "PL3282A", + "title": "Lab in Interpersonal Relationships", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E, PL2131, PL2132 and PL3235", + "corequisite": "" + }, + { + "moduleCode": "PL3282C", + "title": "Lab in Attitudes", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E, PL2131, PL2132 and PL3235", + "corequisite": "" + }, + { + "moduleCode": "PL3282D", + "title": "Lab in Mindsets and Motivation", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E, PL2131, PL2132 and PL3235", + "corequisite": "" + }, + { + "moduleCode": "PL3283", + "title": "Lab in Developmental Psychology", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E, PL2131, PL2132 and PL3234", + "corequisite": "" + }, + { + "moduleCode": "PL3283A", + "title": "Lab in Adolescent Psychology", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E, PL2131, PL2132 and PL3234", + "corequisite": "" + }, + { + "moduleCode": "PL3283B", + "title": "Lab in Development of Communication", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E, PL2131, PL2132 and PL3234", + "corequisite": "" + }, + { + "moduleCode": "PL3284", + "title": "Lab in Applied Psychology (Scale Construction)", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E, PL2131 and PL2132", + "corequisite": "" + }, + { + "moduleCode": "PL3285", + "title": "Lab in Biological Psychology", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E, PL2131, PL2132 and PL3232", + "corequisite": "" + }, + { + "moduleCode": "PL3286", + "title": "Lab in Health Psychology", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E, PL2131, PL2132 and PL3242", + "corequisite": "" + }, + { + "moduleCode": "PL3287", + "title": "Lab in Clinical/Abnormal Psychology", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E, PL2131, PL2132 and PL3236", + "corequisite": "" + }, + { + "moduleCode": "PL3287A", + "title": "Lab in Personality and Psychopathology", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E, PL2131, PL2132 and PL3236", + "corequisite": "" + }, + { + "moduleCode": "PL3289", + "title": "Lab in Decision Science", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E, PL2131, PL2132 and PL3235", + "corequisite": "" + }, + { + "moduleCode": "PL3551", + "title": "FASS Undergraduate Research Opportunity (UROP)", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "Students must:\nhave declared a Major, completed a minimum of 24 MCs in that Major, and have a CAP of at least 3.20.", + "corequisite": "" + }, + { + "moduleCode": "PL3880", + "title": "Topics in Psychology", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PL3880C", + "title": "Alcohol, Drugs and Behaviour", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL1101E", + "corequisite": "" + }, + { + "moduleCode": "PL4201", + "title": "Psychometrics and Psychological Testing", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "PL5223", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 ‐ PL3236), with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4202", + "title": "History and Systems of Psychology", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 - PL3236), with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4203", + "title": "Cognition", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 - PL3236), in which one must be PL3233, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4205", + "title": "Developmental Processes", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 - PL3236), in which one must be PL3234, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4206", + "title": "Cognitive Neuroscience", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 - PL3236), in which one must be PL3232, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4207", + "title": "Social Psychology: Theories and Methods", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 ‐ PL3236), in which one must\nbe PL3235, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4208", + "title": "Introduction to Counselling Psychology", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 - PL3236), in which one must be PL3236, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4213", + "title": "Cognitive Neuropsychology", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 - PL3236), in which one must be PL3233, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4214", + "title": "Evolutionary Psychology", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "UAS3006", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 - PL3236), with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4216", + "title": "Personnel Selection", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 - PL3236), with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4218", + "title": "Psychological Assessment", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 - PL3236), in which one must be PL3236, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4219", + "title": "Advanced Abnormal Psychology", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "PL4880A", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 - PL3236), in which one must be PL3236, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4221", + "title": "Early Language Development", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 - PL3236), in which one must be PL3234, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4222", + "title": "Neuroscience of Memory", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 - PL3236), which should include PL3232 and PL3233, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4223", + "title": "Introduction to Clinical Neuropsychology", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 - PL3236), in which one must be PL3236, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4224", + "title": "Child Abnormal Psychology", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 - PL3236), in which one must be PL3236, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4225", + "title": "Psychology of Gender", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 - PL3236), with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4226", + "title": "Correctional Psychology", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 - PL3236), in which one must be PL3236, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4227", + "title": "Behavioral Genetics for Social Scientists", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 - PL3236), with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4228", + "title": "Criminal Forensic Psychology", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 - PL3236), which should include PL3235 and PL3236, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4229", + "title": "Psychological Therapies", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 - PL3236), in which one must be PL3236, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4230", + "title": "Mindful Psychology", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed a minimum of 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 - PL3236), in which one must be PL3236, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4231", + "title": "Personality Biology, Economics and Wellbeing", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132, PL3241 and 4 out of the 5 core modules (PL3232 - PL3236), which should include PL3235 and PL3236, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4232", + "title": "Psychology of Organizational Processes", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132, PL3239 and 4 out of the 5 core modules (PL3232 - PL3236), with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4233", + "title": "Psychology of Negotiation", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "SW3208", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 ‐ PL3236), with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4234", + "title": "Patient and Health Care", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132, PL3242 and 4 out of the 5 core modules (PL3232 - PL3236), with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4235", + "title": "The Psychology of Moral Judgments", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "YSS4206A Topics in Psychology: Moral Judgements", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 - PL3236), which should include PL3234 and PL3235, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4236", + "title": "Autism Spectrum and Related Conditions", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 - PL3236), which should include PL3234 and PL3236, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4237", + "title": "Evidence-Based Treatments for Trauma", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132, PL3254 and 4 out of the 5 core modules (PL3232 - PL3236), in which one must be PL3236, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4238", + "title": "Social Neuroscience", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 ‐ PL3236), which should include PL3232 and PL3235, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4239", + "title": "Social Psychology of the Unconscious", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "PL4880I", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 - PL3236), in which one must be PL3235, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4240", + "title": "Emotion and Psychopathology", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PL4880N", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 - PL3236), with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4241", + "title": "Exploring Consciousness – Theory and Neuroscience", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 - PL3236), which should include PL3232 and PL3233, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4242", + "title": "Historical Controversies in Psychology", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "PL4880U Historical Controversies in Psychology", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 ‐ PL3236), which should include PL3234 and PL3235, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4243", + "title": "Intellectual Developmental Disorder", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed a minimum of 80 MCs of which student must have passed PL1101E, PL2131, PL2132, and 4 out of the 5 core modules (PL3232-PL3236), in which one must be PL3233 or PL3234, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4244", + "title": "Sleep: A Cognitive Neuroscience Perspective", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 - PL3236), which should include PL3232 and PL3233, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4245", + "title": "Data Science for Psychology: Methods and Applications", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "DSA1101 Introduction to Data Science \nBT1101 Introduction to Business Analytics", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 - PL3236), with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4401", + "title": "Honours Thesis", + "moduleCredit": 15, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "PL4660", + "attributes": [ + false, + false, + false, + false, + true, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2015 and before: Completed 110 MCs, including 60 MCs of PL major requirements, with a minimum CAP of 3.50. \n\nCohorts 2016 and 2017: Completed 110 MCs, including 44 MCs of PL major requirements, with a minimum CAP of 3.50. \n\nCohort 2018 onwards: Completed 110 MCs, including 44 MCs of PL major requirements, with a minimum SJAP of 4.00 and CAP of 3.50. Students may seek a waiver of the SJAP pre-requisite from the department if they have a minimum CAP of 4.25 after completing 110 MCs.", + "corequisite": "" + }, + { + "moduleCode": "PL4501", + "title": "Integrated Thesis", + "moduleCredit": 15, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "PL4401", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2015 and before:\nCompleted 110 MCs, including 60 MCs of PL major requirements, with a minimum CAP of 3.50. Students should be enrolled in the Concurrent Degree Programme and be in good standing. Registration is subject to departmental consent.\n\nCohort 2016 onwards:\nCompleted 110 MCs, including 44 MCs of PL major requirements, with a minimum CAP of 3.50. Students should be enrolled in the Concurrent Degree Programme and be in good standing. Registration is subject to departmental consent.", + "corequisite": "" + }, + { + "moduleCode": "PL4660", + "title": "Independent Study", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "PL4401 or XFA4405", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012-2015:\nCompleted 100 MCs, including 60 MCs in PL, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nCompleted 100 MCs, including 44 MCs in PL, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "PL4880", + "title": "Topics in Psychology", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 - PL3236), with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4880C", + "title": "Issues in Testing and Research", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 - PL3236), with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4880F", + "title": "Addictive Behaviours", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 - PL3236), in which one must be PL3236, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4880G", + "title": "Positive Psychology", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 - PL3236), in which one must be PL3235, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4880H", + "title": "Sport Psychology", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 - PL3236), with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4880J", + "title": "The Right and Left Brain", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 - PL3236), in which one must be PL3232, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4880K", + "title": "Parenting and Child Development", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 - PL3236), in which one must be PL3234, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4880L", + "title": "Applying Cognitive Psychology to Learning & Instruction", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 – PL3236), in which one must be PL3233, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4880M", + "title": "Social Psychology and Technology", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules PL3232 - PL3236), in which one must be PL3235, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4880P", + "title": "Psychology of Religion", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 - PL3236), with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4880Q", + "title": "Psychology of Bilingualism", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 - PL3236), in which one must be PL3233, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4880R", + "title": "Issues in Adolescent Developmt", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 - PL3236), in which one must be PL3234, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4880S", + "title": "Programme Evaluation in the Social Service Sector", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 - PL3236), with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4880T", + "title": "Applying Psychology In Education", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 ‐ PL3236), with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL4880U", + "title": "Historical Controversies in Psychology", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs of which student must have passed PL1101E, PL2131, PL2132 and 4 out of the 5 core modules (PL3232 ‐ PL3236), which should include\nPL3234 and PL3235, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PL5221", + "title": "Analysis of Psychological Data Using Glm", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "PL5102/PL6102", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL2101Y/PL2131 and PL2132 or consent of Instructor", + "corequisite": "" + }, + { + "moduleCode": "PL5221R", + "title": "Analysis of Psychological Data using GLM", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "PL5102/PL6102", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL2101Y/PL2131 and PL2132 or consent of instructor", + "corequisite": "" + }, + { + "moduleCode": "PL5222", + "title": "Multivariate Statistics in Psychology", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "PL4204", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL2101Y/PL2131 and PL2102Y/PL2132 or consent of Instructor", + "corequisite": "" + }, + { + "moduleCode": "PL5222R", + "title": "Multivariate Statistics in Psychology", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "PL4204", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL2101Y/PL2131 and PL2102Y/PL2132 or consent of Instructor", + "corequisite": "" + }, + { + "moduleCode": "PL5225", + "title": "Structural Equation Modeling", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL2101Y/PL2131, PL2102Y/PL2132 and PL5221, or consent of the instructor", + "corequisite": "" + }, + { + "moduleCode": "PL5225R", + "title": "Structural Equation Modeling", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL2101Y/PL2131, PL2102Y/PL2132 and PL5221, or consent of the instructor", + "corequisite": "" + }, + { + "moduleCode": "PL5303", + "title": "Advanced Cognitive Psychology", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "PL6222", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL3233 or consent of instructor", + "corequisite": "" + }, + { + "moduleCode": "PL5303R", + "title": "Advanced Cognitive Psychology", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "PL6222", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL3233 or consent of instructor", + "corequisite": "" + }, + { + "moduleCode": "PL5304", + "title": "Advanced Developmental Psychology", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PL6205", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PL5304R", + "title": "Advanced Developmental Psychology", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PL6205", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PL5305", + "title": "Advanced Social Psychology", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PL6223", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL3235 or consent of instructor", + "corequisite": "" + }, + { + "moduleCode": "PL5305R", + "title": "Advanced Social Psychology", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PL6223", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PL3235 or consent of instructor", + "corequisite": "" + }, + { + "moduleCode": "PL5306", + "title": "Advanced Clinical Psychology", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PL6210", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PL5306R", + "title": "Advanced Clinical Psychology", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PL6210", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PL5307", + "title": "Advanced Health Psychology", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PL6202", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PL5307R", + "title": "Advanced Health Psychology", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PL6202", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PL5308", + "title": "Advanced Social and Cognitive Neuroscience", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PL6204", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Admission to the NUS psychology graduate program or approval by the lecturer", + "corequisite": "" + }, + { + "moduleCode": "PL5308R", + "title": "Advanced Social and Cognitive Neuroscience", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PL6204", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Admission to the NUS psychology graduate program or approval by the lecturer", + "corequisite": "" + }, + { + "moduleCode": "PL5309", + "title": "Motivation and Behaviour Change", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For graduate students:\nConsent of instructor\n\nFor Honours year students:\nEnforced pre‐requisites: PL2131, PL2132, PL3235, and consent of instructor.", + "corequisite": "" + }, + { + "moduleCode": "PL5309R", + "title": "Motivation and Behaviour Change", + "moduleCredit": 5, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For graduate students:\nConsent of instructor\n\nFor Honours year students:\nEnforced pre‐requisites: PL2131, PL2132, PL3235, and consent of instructor.", + "corequisite": "" + }, + { + "moduleCode": "PL5660", + "title": "Independent Study", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "PL5220", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PL6208", + "title": "Empirical Research Project", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Admission to the NUS psychology PhD program", + "corequisite": "" + }, + { + "moduleCode": "PL6215", + "title": "Selected Applications in Psychology", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Consent of instructor", + "corequisite": "" + }, + { + "moduleCode": "PL6660", + "title": "Independent Study", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "PL6220, PL6220A, PL6220B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PL6770", + "title": "Graduate Research Seminar", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PL6883", + "title": "Selected Topics in Cognitive Psychology", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Admission to the NUS psychology graduate program or approval by the lecturer", + "corequisite": "" + }, + { + "moduleCode": "PL6885", + "title": "Selected Topics in Social, Personality, I-O Psychology", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Admission to the NUS psychology graduate program or approval by the lecturer.", + "corequisite": "" + }, + { + "moduleCode": "PL6888", + "title": "Selected Topics in Social and Cognitive Neuroscience", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Admission to the NUS psychology graduate program or approval by the lecturer.", + "corequisite": "" + }, + { + "moduleCode": "PL6889", + "title": "Selected Topics in Emotion Psychology", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Admission to the NUS psychology graduate program or approval by the lecturer.", + "corequisite": "" + }, + { + "moduleCode": "PLB1201", + "title": "Psychology in Everyday Life", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "GEK1064 and PL1101E. Students who take PLB1201 and subsequently go on to major in Psychology will not be able to count PLB1201 towards their graduation requirements.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PLC5001", + "title": "Psychological Assessment", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Admission to Clinical Psychology training programme", + "corequisite": "" + }, + { + "moduleCode": "PLC5002", + "title": "Adult Psychopathology", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Admission to Clinical Psychology training programme", + "corequisite": "" + }, + { + "moduleCode": "PLC5003", + "title": "Health across the lifespan", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Admission to Clinical Psychology programme or with permission of the instructor", + "corequisite": "" + }, + { + "moduleCode": "PLC5004", + "title": "Psychological Intervention and Therapy", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PLC5005", + "title": "Child Psychopathology", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PLC5002 Introduction to Psychological Disorders", + "corequisite": "" + }, + { + "moduleCode": "PLC5006", + "title": "Ethics and Professional Issues", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PLC5011 (Clinical Placement 1)", + "corequisite": "" + }, + { + "moduleCode": "PLC5007", + "title": "Advanced Psychological Practice", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PLC5011 (Clinical Placement 1) and PLC5004 (Psychological Intervention and Therapy)", + "corequisite": "" + }, + { + "moduleCode": "PLC5008", + "title": "Graduate Research Methods", + "moduleCredit": 2, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Admission to Clinical Psychology training programme", + "corequisite": "" + }, + { + "moduleCode": "PLC5009", + "title": "Research Proposal", + "moduleCredit": 8, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Admission to Clinical Psychology training programme", + "corequisite": "" + }, + { + "moduleCode": "PLC5010", + "title": "Research Project", + "moduleCredit": 12, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Research Proposal", + "corequisite": "" + }, + { + "moduleCode": "PLC5011", + "title": "Clinical Placement 1", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PLC5004 (Psychological Intervention and Therapy), PLC5001 (Psychological Assessment and Diagnosis)", + "corequisite": "" + }, + { + "moduleCode": "PLC5011A", + "title": "Clinical Placement 1", + "moduleCredit": 6, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PLC5004 (Psychological Intervention and Therapy), PLC5001 (Psychological Assessment and Diagnosis)", + "corequisite": "" + }, + { + "moduleCode": "PLC5012", + "title": "Clinical Placement 2", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PLC5011 (Clinical Placement 1), PLC5002 (Psychopathology & Pharmacotherapy), PLC5003 (Clinical Health Psychology), PLC5005 (Advanced Psychopathology)", + "corequisite": "" + }, + { + "moduleCode": "PLC5012B", + "title": "Clinical Placement 2", + "moduleCredit": 6, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PLC5013", + "title": "Clinical Placement 3", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PLC5012 (Clinical Placement 2); Pass on the Professional Competency Examination", + "corequisite": "" + }, + { + "moduleCode": "PLC5013C", + "title": "Clinical Placement 3", + "moduleCredit": 6, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PLC5012 (Clinical Placement 2); Pass on the Professional Competency Examination", + "corequisite": "" + }, + { + "moduleCode": "PLC5014", + "title": "Clinical Placement 4", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PLC5013 (Clinical Placement 3)", + "corequisite": "" + }, + { + "moduleCode": "PLC5014D", + "title": "Clinical Placement 4", + "moduleCredit": 6, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PLC5013C Clinical Placement 3", + "corequisite": "" + }, + { + "moduleCode": "PLC5015E", + "title": "Clinical Placement 5", + "moduleCredit": 6, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PLC5014D Clinical Placement 4", + "corequisite": "" + }, + { + "moduleCode": "PLC5016 ", + "title": "Advanced Intervention and Therapy I", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PLC5004 Psychological Intervention and Therapy", + "corequisite": "" + }, + { + "moduleCode": "PLC5017 ", + "title": "Advanced Intervention and Therapy II", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PLC5016 Advanced Intervention and Therapy I", + "corequisite": "" + }, + { + "moduleCode": "PLC5018", + "title": "Specialised Applications in Clinical Psychology I", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PLC5008 Graduate Research Methods", + "corequisite": "" + }, + { + "moduleCode": "PLC5019", + "title": "Specialised Applications in Clinical Psychology II", + "moduleCredit": 4, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PLC5018 Specialised Applications in Clinical Psychology I", + "corequisite": "" + }, + { + "moduleCode": "PLC5020", + "title": "Research Project 2", + "moduleCredit": 12, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PLC5009 Research Proposal \nPLC5010 Masters research project", + "corequisite": "" + }, + { + "moduleCode": "PLS8001", + "title": "Cultivating Collaboration", + "moduleCredit": 1, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PLS8002", + "title": "Cultivating the Self", + "moduleCredit": 1, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PLS8003", + "title": "Cultivating Resilience", + "moduleCredit": 1, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PLS8004", + "title": "Optimizing Performance", + "moduleCredit": 1, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PM5000", + "title": "Dissertation", + "moduleCredit": 8, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PM5101", + "title": "Project Management", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PM5103", + "title": "Contract Management", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PM5105", + "title": "Development Finance", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PM5106", + "title": "Design Management", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PM5107", + "title": "Time and Cost Management", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PM5109", + "title": "Project Management Law", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PM5111", + "title": "Special Topics in Project Management", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PM5112", + "title": "Research Methods", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PM5113", + "title": "Managing Projects using BIM", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PM5114", + "title": "Managing Complex Projects", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PM5115", + "title": "Project Finance Contracts and Agreements", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PM5116", + "title": "Project Finance Case Studies", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PM6103", + "title": "Construction Management", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PM6104", + "title": "International Project Management", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP2106", + "title": "Pharmacology 1", + "moduleCredit": 4, + "department": "Pharmacology", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PY1106", + "corequisite": "" + }, + { + "moduleCode": "PP2106A", + "title": "Pharmacology I", + "moduleCredit": 4, + "department": "Pharmacology", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP2107", + "title": "Pharmacology 2", + "moduleCredit": 4, + "department": "Pharmacology", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PP2106", + "corequisite": "" + }, + { + "moduleCode": "PP2107A", + "title": "Pharmacology Ii", + "moduleCredit": 4, + "department": "Pharmacology", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP2131", + "title": "Pharmacology", + "moduleCredit": 1, + "department": "Pharmacology", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5010", + "title": "The LKY School Course", + "moduleCredit": 0, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5011", + "title": "Leading Stakeholders", + "moduleCredit": 1, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + true, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5012", + "title": "Leading Innovation and Change", + "moduleCredit": 1, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + true, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5013", + "title": "Ethical Leadership", + "moduleCredit": 1, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + true, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5014", + "title": "Leading Collaboration", + "moduleCredit": 1, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + true, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5015", + "title": "Principles and Applications of Risk Management", + "moduleCredit": 1, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "PP5194 Natural Disasters, Environment and Climate Change", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5016", + "title": "Environmental Threats and Management Response", + "moduleCredit": 1, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "PP5194 Natural Disasters, Environment and Climate Change", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PP5015 Principles and Applications of Risk Management is a pre-requisite. Participants should have taken this module or demonstrate a plan to cover its content at the outset of taking this module.", + "corequisite": "" + }, + { + "moduleCode": "PP5017", + "title": "Climate Change and Managing Uncertainty", + "moduleCredit": 1, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "PP5194 Natural Disasters, Environment and Climate Change", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PP5015 Principles and Applications of Risk Management is a pre-requisite. Participants should have taken this module or demonstrate a plan to cover its content at the outset of taking this module.", + "corequisite": "" + }, + { + "moduleCode": "PP5018", + "title": "Disaster Scenarios and Resilience Building", + "moduleCredit": 1, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "PP5194 Natural Disasters, Environment and Climate Change", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PP5015 Principles and Applications of Risk Management is a pre-requisite. Participants should have taken this module or demonstrate a plan to cover its content at the outset of taking this module.", + "corequisite": "" + }, + { + "moduleCode": "PP5019", + "title": "Economic Development Strategy", + "moduleCredit": 1, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "PP5216 Economic Growth in Developing Asia", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5020", + "title": "Analysis of Economic Growth", + "moduleCredit": 1, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "PP5216 Economic Growth in Developing Asia", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5021", + "title": "Digital Transformation and Economic Prosperity", + "moduleCredit": 1, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "PP5216 Economic Growth in Developing Asia", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5022", + "title": "Embracing Globalisation for Economic Growth", + "moduleCredit": 1, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "PP5216 Economic Growth in Developing Asia", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5023", + "title": "Artificial Intelligence, Data and Public Policy", + "moduleCredit": 1, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5024", + "title": "Bitcoin, Ethereum, Digital Currencies and Public Policy", + "moduleCredit": 1, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5025", + "title": "Cloud, 5G, IoT and Public Policy", + "moduleCredit": 1, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5026", + "title": "3D Printing, Robots and Public Policy", + "moduleCredit": 1, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5027", + "title": "Food Security", + "moduleCredit": 1, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "PP5169 Global Food Security", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5028", + "title": "Food System Resilience", + "moduleCredit": 1, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "PP5169 Global Food Security", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5029", + "title": "Agricultural Economics and Policy", + "moduleCredit": 1, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "PP5169 Global Food Security", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Introduction to Economics (or Principles of Economics)", + "corequisite": "" + }, + { + "moduleCode": "PP5030", + "title": "Sustainable Urban Food System", + "moduleCredit": 1, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "PP5169 Global Food Security", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5103", + "title": "Politics and Public Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5104", + "title": "Empirical Analysis For Public Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "MP5104", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5105", + "title": "Cost Benefit Analysis in Public Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5110A", + "title": "Policy Analysis Exercise", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5136", + "title": "Applied Public Sector Economics", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "MP5136", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5137", + "title": "Public Management and Organisational Behaviour", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5138", + "title": "Econometrics for Public Policy Analysis", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5141", + "title": "The Global Financial Crisis-Policy Implications in Asia", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5142", + "title": "Liveable & Sustainable Cities - Lessons from Singapore & Other Cities", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5143", + "title": "Games, Decisions and Social Choice", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5144", + "title": "Decision and Game Theory for Public Managers", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5145", + "title": "Political Economy of Reform", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5146", + "title": "Decentralization, Governance & Sustainable Development", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 3 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5147", + "title": "Asian Global Cities", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5148", + "title": "Macroeconomics in an Open Economy with Focus on Asia", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Ideally should have completed the core courses in Macroeconomics.", + "corequisite": "" + }, + { + "moduleCode": "PP5149", + "title": "Big Data, Official Statistics, and Public Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5150", + "title": "Social Welfare in East Asia", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5151", + "title": "Comparative Case Study Method", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5152", + "title": "International Political Economy of Energy and Climate", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5153", + "title": "Urban Development Policy and Planning in Asia", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5154", + "title": "The Global Change Agent", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5155", + "title": "International Political Economy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5156", + "title": "Moral Reasoning in the Policy Process", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5157", + "title": "Economics of Environmental Regulation", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5158", + "title": "International Relations of Asia after WWII", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5159", + "title": "Introduction to International Relations Theory", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5160", + "title": "America and Asia", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5161", + "title": "Mindful Transformations in Public Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5162", + "title": "Economics of the Family for Public Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5163", + "title": "The Economics and Governance of Climate Change", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students are expected to have taken at least taken at least a Principles of Economics or Principles of Microeconomics course or equivalent at the graduate/undergraduate level.", + "corequisite": "" + }, + { + "moduleCode": "PP5164", + "title": "International Conflict Analysis and Resolution", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5165", + "title": "Markets and Growth", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "No pre-requisite. Required economic concepts would be taught as part of the course.", + "corequisite": "" + }, + { + "moduleCode": "PP5166", + "title": "Globalization, Health, and Human Development", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5167", + "title": "Public Policy and Economics of Health Systems", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "Applicable to those who have taken PP5246 and PP5278", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5168", + "title": "Public Service Leadership", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5169", + "title": "Global Food Security", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students are expected to have taken at least one economics course at graduate/undergraduate level.", + "corequisite": "" + }, + { + "moduleCode": "PP5170", + "title": "Microeconomic Theory for Public Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PP5403 Economic Foundations for Public Policy or Principles of Microeconomics", + "corequisite": "" + }, + { + "moduleCode": "PP5171", + "title": "Advanced Applied Econometrics for Policy Analysis", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5172", + "title": "Applications of Statistical Methods to Public Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PP5406 Quantitative Research Methods for Public Policy 1 (4MC) and PP5407 Quantitative Research Methods for Public Policy 2 (4MC) or PP6706 Quantitative Methods for Public Policy Research or equivalent. Good knowledge of statistical methods in theory and knowledge of at least one computer package for statistical analysis, for example STATA.", + "corequisite": "" + }, + { + "moduleCode": "PP5173", + "title": "Economics and Health in Developing Countries", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students should have taken a course covering basic microeconomic theory.", + "corequisite": "" + }, + { + "moduleCode": "PP5174", + "title": "International Politics: The Rules of the Game", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5175", + "title": "Decision-Making: Political and Psychological Influences", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5176", + "title": "China and the Global Economy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5177", + "title": "Progressive Cities in Asia", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5178", + "title": "Leadership and Decision-making Skills", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5179", + "title": "Air and Water Pollution", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5180", + "title": "Trade Policy and Global Value Chains", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5181", + "title": "State Fragility and Peacemaking", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This module is open to upper-level NUS\nundergraduates. If so, undergraduates should\nsufficient background in political science and\ninternational relations – for example they are single\nor double major in political science/IR or have a\ndeclared minor in political science/IR. If the students\nare from a liberal arts background, such as from\nYale-NUS, they should have a declared major in\nGlobal Affairs or Politics, Philosophy and\nEconomics.\nFor graduate students, students registering for this\nmodule should ideally have an undergraduate\ndegree in government, political science,\ninternational relations or Law. If the undergraduate\ndegree is general, they should have a declared\nundergraduate major/minor in government, political\nscience and/or international relations or have ac\nbasic background in political science or IR.", + "corequisite": "" + }, + { + "moduleCode": "PP5182", + "title": "Asia's Ascent: The Economics of World Order", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5183", + "title": "International Economic Development", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5184", + "title": "Communications for Public Leadership", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5185", + "title": "Energy Policy and Politics", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5186", + "title": "Japan and ASEAN", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5187", + "title": "The Foreign Policy of Global Business", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5188", + "title": "Social Entrepreneurship", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5189", + "title": "Practices in Better and Effective Governance", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5190", + "title": "Managing People", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5191", + "title": "Public Administration, Technology and Innovation", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5192", + "title": "Data Analytics: Science, Art and Applications", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5193", + "title": "Asian International and Strategic Thought", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5194", + "title": "Natural Disasters, Environment and Climate Change", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Basic economics", + "corequisite": "" + }, + { + "moduleCode": "PP5195", + "title": "Russia in Eurasian and World Politics", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5196", + "title": "Education Economics and Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5197", + "title": "Cultural Competence", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5198", + "title": "Chinese Political Leadership and Economic Development", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5199", + "title": "The Economics of Corruption in Growth and Development", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students need to have knowledge in basic statistics and\nlinear regression.", + "corequisite": "" + }, + { + "moduleCode": "PP5201", + "title": "Singapore: Global City, Global Risks", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5202", + "title": "'Soft' power in the Asia-Pacific", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5203", + "title": "Behavioral Economics and Public Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PP5101 Economics and Public Policy I, or\nPP5301 Economic Reasoning and Policy, or\nPP5501 Economic Applications for Public Organisations", + "corequisite": "" + }, + { + "moduleCode": "PP5204", + "title": "Evolving Practices of Governance in Singapore", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5205", + "title": "Economic Policy in a Global Economy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5206", + "title": "Politics and Policy in Southeast Asia", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5208", + "title": "Water Law, Governance and Management in Asia", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5209", + "title": "Exercising Leadership", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5210", + "title": "UN and Global Governance", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5211", + "title": "Analytical Issues in Money & Banking", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Need to have completed PP5101 Economics and Public Policy I and PP5102 Economics and Public Policy II and basic statistics. Students are expected to know how to manipulate data (i.e. calculate means, variances, standard deviation etc.).", + "corequisite": "" + }, + { + "moduleCode": "PP5212", + "title": "Financial Issues, Trade and Investment in Asia", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Need to have completed PP5101 Economics and Public Policy I, PP5102 Economics and Public Policy II and basic statistics.", + "corequisite": "" + }, + { + "moduleCode": "PP5213", + "title": "Contemporary Financial Policy Issues in Emerging Asia", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Need to have completed PP5101 Economics and Public Policy I and PP5102 Economics and Public Policy II.", + "corequisite": "" + }, + { + "moduleCode": "PP5214", + "title": "Ethics & the Public Official", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "MP5214", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5215", + "title": "Changes in Singapore Political Economy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "EC2373/SSA2220", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5216", + "title": "Economic Growth in Developing Asia", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Introductory courses on microeconomics and macroeconomics", + "corequisite": "" + }, + { + "moduleCode": "PP5217", + "title": "Innovation", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "PP5242M", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5218", + "title": "Foresight Methods and Analysis for Public Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5220", + "title": "Innovation and Technology Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5221", + "title": "The EU: Special Topics", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "PP5242L", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5222", + "title": "Population, Health and Social Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5223", + "title": "Population Ageing, Public Policy, and Family", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5224", + "title": "Value- Focused Negotiations", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5225", + "title": "India's Foreign Policy and National Security", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "PP5242N", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5226", + "title": "Social Policy Design", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5227", + "title": "Environmental and Natural Resource Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "MP5227A, MP5227B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5228", + "title": "Evidence-Informed Policy Development", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "None required. Statistics or research methods background can be helpful.", + "corequisite": "" + }, + { + "moduleCode": "PP5229", + "title": "Education policy in Singapore: comparative perspectives", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5230", + "title": "Strategic Management in Public Organisations", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5231", + "title": "Ethics and Global Governance", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5232", + "title": "Applied Environmental Economics", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PP5451: Foundations of Sustainable Development and Environmental Economics OR Approval by Instructor", + "corequisite": "" + }, + { + "moduleCode": "PP5233", + "title": "Organization Theory and Management", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5234", + "title": "Economics of Developing Countries", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Introductory statistics and econometrics, intermediate microeconomics. Working knowledge of statistics and econometrics is essential for this course. Doing well in this course requires good understanding of microeconomic theory.", + "corequisite": "" + }, + { + "moduleCode": "PP5235", + "title": "Development Policy in Southeast Asia", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5236", + "title": "Poverty, Inequality, and Public Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5237", + "title": "Strategies for Poverty Alleviation", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5238", + "title": "Urban Growth and Development", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5239", + "title": "Understanding and Managing Corruption", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5240", + "title": "Topics in Applied Policy Analysis", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5240A", + "title": "Comparative Strategic Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5240B", + "title": "Measuring and Monitoring Governance", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5241", + "title": "India's Economic Development and Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5241A", + "title": "Topics in Economics or Quantitative Analysis: Developmenteconomics", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5241D", + "title": "Role of Microfinance in Developing Countries", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5241E", + "title": "Special Topics on Development Policy in SE Asia", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5241F", + "title": "India's development: a comparative perspective with China", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5241G", + "title": "Asean", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5241H", + "title": "Social Movements and Social Markets", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5241J", + "title": "Asia in the World Economy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5241K", + "title": "Political Economy of International Trade", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5242", + "title": "Policy Responses to Disasters", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5242A", + "title": "Integrated Approaches To Sustainable Development", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5242C", + "title": "Human Rights and International Relations", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5242E", + "title": "Change Agents and Public Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5242F", + "title": "Strategic Thinking in Business & Government", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5242H", + "title": "Perspectives on the Global War on Terror: Implications for policy-making", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5242I", + "title": "Return of Great Power Politics in the Age of Globalisation", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5242J", + "title": "Effective Implementation: Learning from Effective Implementers", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5242K", + "title": "Policies for Urban Intervention", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5242L", + "title": "The EU as an International Actor", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5242P", + "title": "Asian Regionalism and Regional Order", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5242Q", + "title": "Non-traditional Security Issues and Global Governance", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5243", + "title": "Infrastructure Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5244", + "title": "Public Sector Reform in Developing Countries", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5245", + "title": "Network Economics & Strategies", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5246", + "title": "Public Policy and Management of Health Systems", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5247", + "title": "International Economic Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5248", + "title": "International Conflict Resolution", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5249", + "title": "Media, Public Opinion & Public Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5250", + "title": "Economic Development Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5251", + "title": "Institutions and Public Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5252", + "title": "Ethnic Politics and Governance in Asia", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5253", + "title": "International Financial Policy and Issues", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5254", + "title": "WMD Proliferation and International Security", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5255", + "title": "Energy Policy & Security in Asia", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5256", + "title": "Financial Regulation and Development", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5257", + "title": "Urban Water Governance", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5258", + "title": "International Relations and Diplomacy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5259", + "title": "Crisis Management", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5260", + "title": "Intelligence, National Security & Policymaking", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5261", + "title": "International Security - Concepts, Issues & Policies", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5262", + "title": "Public Roles of the Private Sector", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5263", + "title": "Global Issues and Institutions", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5264", + "title": "States, Markets and International Governance", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5265", + "title": "Law & Public Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5266", + "title": "Global Health Policy and Issues", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5267", + "title": "Urban Transport Policy: A Global View", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5268", + "title": "Institutional Design and Analysis", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5269", + "title": "Environmental Economics and Public Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5270", + "title": "Economic Policy in China", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5271", + "title": "Political Risk Analysis", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5272", + "title": "Energy Systems and Climate Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5273", + "title": "Political Islam and Governance", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5274", + "title": "Financial Management for Policy Makers", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 3 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5275", + "title": "Central Banks and Economic Management", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5276", + "title": "Dialogue, Facilitation and Consensus Building", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5277", + "title": "Singapore's Development: A Comparative Analysis", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5278", + "title": "Health Economics and Public Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5279", + "title": "Clusters and National Competitiveness", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5280", + "title": "Politics and Development: Approaches, Issues and Cases", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5281", + "title": "Business and the Environment", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5282", + "title": "Macroeconomic Programming and Policies", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5285", + "title": "State-Society Relations in Singapore", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5286", + "title": "Comparative Public Management Reform", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5287", + "title": "Leadership and Teamwork", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5288", + "title": "Labour Market Issues and Public Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Knowledge of college-level calculus, advanced-statistics, and introductory microeconomics is desirable to grasp the models and the findings in the readings.", + "corequisite": "" + }, + { + "moduleCode": "PP5289", + "title": "Women, Leadership & Public Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5290", + "title": "Policymaking in China: Structure & Process", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5291", + "title": "Security in Asia-Pacific", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5292", + "title": "The EU, ASEAN and Regional Integration", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5293", + "title": "Ruling the Net: It and Policy Making", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5294", + "title": "Dynamic Modelling of Public Policy Systems", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5295", + "title": "Aid Governance", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5296", + "title": "Trade, Investment and Integration Issues in ASEAN", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PP5101, PP5501 or prior training in basic microeconomic theory", + "corequisite": "" + }, + { + "moduleCode": "PP5297", + "title": "Public Policy for Sustainability", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5298", + "title": "Singapore's Development Experience", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5299", + "title": "Singapore: The City", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5301", + "title": "Economic Reasoning and Policy", + "moduleCredit": 2, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5303", + "title": "Public Management", + "moduleCredit": 2, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5304", + "title": "Attachment Programme in Singapore", + "moduleCredit": 8, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "MPM5004", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5308", + "title": "Frameworks For Policy Analysis", + "moduleCredit": 2, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5310", + "title": "Public Management Seminars", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5311", + "title": "Globalisation and Public Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5312", + "title": "Public Financial Management", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5313", + "title": "Topics in Public Management", + "moduleCredit": 2, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5401", + "title": "Policy Challenges", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5402", + "title": "Policy Process and Institutions", + "moduleCredit": 2, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5403", + "title": "Economic Foundations for Public Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5405", + "title": "Public Administration and Politics", + "moduleCredit": 2, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PP5402 Policy Process and Institutions", + "corequisite": "" + }, + { + "moduleCode": "PP5406", + "title": "Quantitative Research Methods for Public Policy 1", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5407", + "title": "Quantitative Research Methods for Public Policy 2", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PP5406", + "corequisite": "" + }, + { + "moduleCode": "PP5408", + "title": "Qualitative Research Methods for Public Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5409", + "title": "Foundations of Public Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "PP5402 Policy Process and Institutions and PP5405 Public Administration and Politics", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5410", + "title": "Working with clients: PAE Basics", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed Year 1 of the MPP or MIA programme", + "corequisite": "" + }, + { + "moduleCode": "PP5414", + "title": "Foundations of Sustainable Development and Environmental Economics", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5415", + "title": "Foundations of Public Management (Gateway)", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5417", + "title": "Globalization, Nation-Building, & Singapore’s Identity", + "moduleCredit": 12, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Preceeded by a year at Science Po (Part One of the capstone)", + "corequisite": "Preceeded by a year at Science Po (Part One of the capstone)" + }, + { + "moduleCode": "PP5504", + "title": "Public Finance and Budgeting", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5507", + "title": "Policy Innovation Lab", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5508", + "title": "Regional Integration - the cases of ASEAN and EU", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5509", + "title": "Pensions and Retirement Policies", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5510", + "title": "Governing Cities of Tomorrow", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5511", + "title": "Systemic and Integrated Policy Design and Analysis", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5512", + "title": "US-China Relations and Great Power Policy Making", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5513", + "title": "Governing Nation-State and Global-City Singapore", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5514", + "title": "ASEAN and Regionalism in Southeast Asia", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5515", + "title": "Gender and Development", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5516", + "title": "Practical Political Risk Analysis", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students should take essential skills workshops or international relations and political economy modules prior to enrolling in the module.", + "corequisite": "" + }, + { + "moduleCode": "PP5517", + "title": "Gender and Public Policy: The life course approach", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5518", + "title": "Pragmatism and Public Morality in Singapore", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5519", + "title": "Financial Management for Nonprofit Organisations", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5520", + "title": "The Political Economy of Reform in China", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5521", + "title": "The Economic Analysis of Law", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5522", + "title": "The Rule of Law", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5524", + "title": "Diversity Management in Public Organizations", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5660", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5661", + "title": "Internship", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5662", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5663", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5664", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5701", + "title": "Economic Applications for Public Organizations", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5702", + "title": "Public Administration in Theory and Practice", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5703", + "title": "Public Finance and Budgeting", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5704", + "title": "Policy Analysis and Programme Evaluation", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5705", + "title": "Comparative Public Policy and Management: Singapore and Asia", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5706", + "title": "Economic and Business Environment", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "BMM5002", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "No pre-requisite is required as the proposed module assumes no previous knowledge in economics, business or finance.", + "corequisite": "PP5701 Economic Applications for Public Organizations" + }, + { + "moduleCode": "PP5711", + "title": "Urban Development and Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5712", + "title": "International Economic Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5713", + "title": "Financial Regulation and Development", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5714", + "title": "International Financial Policy and Issues", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5715", + "title": "Clusters and National Competitiveness", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5716", + "title": "Security in Asia-Pacific", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5717", + "title": "Political Economy of East Asia", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5718", + "title": "Policymaking in China: Structure and Process", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5721", + "title": "Public Sector Risk Management", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Basic management and economics knowledge", + "corequisite": "" + }, + { + "moduleCode": "PP5722", + "title": "Strategic Management", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Basic management and economics knowledge", + "corequisite": "" + }, + { + "moduleCode": "PP5723", + "title": "Political Economy of Taiwan, Hong Kong and Singapore", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Basic economics and political science", + "corequisite": "" + }, + { + "moduleCode": "PP5728", + "title": "Technology and Innovation Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5729", + "title": "Public Sector Communications", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5801", + "title": "Economic Analysis", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5802", + "title": "Policy Analysis", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5803", + "title": "Public Management", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5804", + "title": "Governance Study Project", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5901", + "title": "Introduction to International Relations Theory", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5902", + "title": "International Security - Concepts, Issues & Policies", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5903", + "title": "International Political Economy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5904", + "title": "Research Methods in International Affairs", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5905", + "title": "Foreign Policy Analysis", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5906", + "title": "International Economic Development in Asia", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5908", + "title": "Global Governance in a Changing World", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5909", + "title": "Geopolitics of the Asia-Pacific", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "Nil, but PP901 International Relations: Theory and Practice or/and PP5902 International Security recommended" + }, + { + "moduleCode": "PP5910", + "title": "MIA Thesis", + "moduleCredit": 8, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP5911", + "title": "MIA Capstone Project", + "moduleCredit": 8, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP6702", + "title": "Foundations of Public Policy: Theories and Methods", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP6703", + "title": "Foundations of Public Administration", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP6704", + "title": "The Economics of Public Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PP5101: Economics and Public Policy I", + "corequisite": "" + }, + { + "moduleCode": "PP6705", + "title": "The Politics of Public Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "PP5268 Institutional Design and Analysis", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP6706", + "title": "Quantitative Methods for Public Policy Research", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PP6701 Research Methods for Public Policy I", + "corequisite": "" + }, + { + "moduleCode": "PP6707", + "title": "Qualitative Methods for Public Policy Research", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP6708", + "title": "Research Design in Public Policy", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PP6770", + "title": "Public Policy Graduate Seminar", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PPX5702B", + "title": "Department Exchange Module", + "moduleCredit": 2, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PPX5704B", + "title": "Department Exchange Module", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PPX5704C", + "title": "Department Exchange Module", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PPX5704D", + "title": "Department Exchange Module", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PPX5704E", + "title": "Department Exchange Module", + "moduleCredit": 4, + "department": "LKYSPP Dean's Office", + "faculty": "LKY School of Public Policy", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PR1110", + "title": "Foundations for Medicinal Chemistry", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "H2 Chemistry or equivalent", + "corequisite": "" + }, + { + "moduleCode": "PR1110A", + "title": "Foundations for Medicinal Chemistry", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "PR1110", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "H2 Chemistry or equivalent", + "corequisite": "" + }, + { + "moduleCode": "PR1111", + "title": "Pharmaceutical biochemistry", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "H2 Chemistry or equivalent", + "corequisite": "" + }, + { + "moduleCode": "PR1111A", + "title": "Pharmaceutical Biochemistry", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "PR1111", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "H2 Chemistry or equivalent", + "corequisite": "" + }, + { + "moduleCode": "PR1120", + "title": "Microbiology in Pharmacy", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PR1140", + "title": "Pharmacy Professional Skills Development I", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PR1142", + "title": "Pharmaceutical Statistics", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PR1150", + "title": "Professional Identity Development I", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "Not applicable", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "PR1151 Applied Patient Care Skills I", + "corequisite": "Not applicable" + }, + { + "moduleCode": "PR1151", + "title": "Applied Patient Care Skills I", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "Admission to the B.Pharm.(Hons) programme", + "corequisite": "PR1150 Professional Identity Development I" + }, + { + "moduleCode": "PR1152", + "title": "Pharmacy Foundations: Science & Therapeutics I", + "moduleCredit": 8, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "Students admitted into the Pharm Sci major and Pharm Sci minor programmes.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Admission to the B.Pharm.(Hons) Programme", + "corequisite": "" + }, + { + "moduleCode": "PR1153", + "title": "Pharmacy Foundations: Science & Therapeutics II", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "Students admitted into the Pharm Sci major and Pharm Sci minor programmes.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR1152 Pharmacy Foundations: Science & Therapeutics I", + "corequisite": "" + }, + { + "moduleCode": "PR1301", + "title": "Complementary Medicine and Health", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "GEK1507", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PR2101", + "title": "Dosage Form Design I", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR1102", + "corequisite": "" + }, + { + "moduleCode": "PR2102", + "title": "Pharmacy Law", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR1103", + "corequisite": "" + }, + { + "moduleCode": "PR2103", + "title": "Pharmacostatistics", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "ST1131 or ST1131A or ST1232 or ST2334", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PR2104", + "title": "Pharmaceutical Analysis I", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR1101", + "corequisite": "" + }, + { + "moduleCode": "PR2105", + "title": "Pharmaceutical Microbiology", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "A -level Chemistry and Biology or equivalent exam, excluding CM1417 or CM1417X and LSM1301 or LSM1301FC or LSM1301X", + "corequisite": "" + }, + { + "moduleCode": "PR2114", + "title": "Formulation & Technology I", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "Pass in A-level H2 Chem or the equivalent", + "corequisite": "" + }, + { + "moduleCode": "PR2114A", + "title": "Formulation & Technology I", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "PR2114", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "H2 Chemistry or equivalent", + "corequisite": "" + }, + { + "moduleCode": "PR2115", + "title": "Medicinal Chemistry for Drug Design", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR1110 or by permission", + "corequisite": "" + }, + { + "moduleCode": "PR2115A", + "title": "Medicinal Chemistry for Drug Design", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "PR2115", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR1110A, PR1111A", + "corequisite": "" + }, + { + "moduleCode": "PR2122", + "title": "Biotechnology for Pharmacy", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR1111 or PR1111A", + "corequisite": "" + }, + { + "moduleCode": "PR2131", + "title": "Pharmacy Professional Skills Development II", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR1140", + "corequisite": "" + }, + { + "moduleCode": "PR2133", + "title": "Pharmacotherapeutics I", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PA1113, PR1111", + "corequisite": "PX2108" + }, + { + "moduleCode": "PR2134", + "title": "Self Care", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PX2108, PA1113, PR1140", + "corequisite": "" + }, + { + "moduleCode": "PR2135", + "title": "Pharmacotherapeutics II", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PX2108, PA1113", + "corequisite": "" + }, + { + "moduleCode": "PR2143", + "title": "Pharmaceutical Analysis for Quality Assurance", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "CN4233E, CN4233R and PHS2143", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "PR1110", + "corequisite": "" + }, + { + "moduleCode": "PR2156", + "title": "Integumentary & Ocular Systems: Science and Therapeutics", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR1152 Pharmacy Foundations: Science & Therapeutics I", + "corequisite": "" + }, + { + "moduleCode": "PR2202", + "title": "Cosmetics & Perfumes", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PR2288", + "title": "Basic UROPS in Pharmacy I", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "PR1110/PR1110A Foundations for Medicinal Chemistry or PHS1110 Foundation for Medicinal and Synthetic Chemistry, and departmental approval.", + "corequisite": "" + }, + { + "moduleCode": "PR2289", + "title": "Basic UROPS in Pharmacy II", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR1110/PR1110A Foundations for Medicinal Chemistry or PHS1110 Foundation for Medicinal and Synthetic Chemistry, and departmental approval", + "corequisite": "" + }, + { + "moduleCode": "PR3101", + "title": "Principles Of Medicinal Chemistry", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR1101", + "corequisite": "" + }, + { + "moduleCode": "PR3102", + "title": "Dosage Form Design II", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR1102 and PR2105", + "corequisite": "" + }, + { + "moduleCode": "PR3103", + "title": "Pharmaceutical Analysis II", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR2104", + "corequisite": "" + }, + { + "moduleCode": "PR3104", + "title": "Pharmaceutical Biotechnology", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PASS PR1101 OR LSM1101 OR LSM1201 OR LSM1301 OR LSM1301FC OR LSM1301X OR CM1121 OR GCE 'A' LEVEL OR H2 BIOLOGY OR EQUIVALENT.", + "corequisite": "" + }, + { + "moduleCode": "PR3105", + "title": "Pharmacotherapy I", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PX3108 and PP2107/PA2107", + "corequisite": "" + }, + { + "moduleCode": "PR3106", + "title": "Pharmacokinetics & Drug Disposition", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PP2106/PA2106", + "corequisite": "" + }, + { + "moduleCode": "PR3107", + "title": "Pharmacy Practice II", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR1103", + "corequisite": "" + }, + { + "moduleCode": "PR3116", + "title": "Concepts in Pharmacokinetics and Biopharmaceutics", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "PA1113", + "corequisite": "" + }, + { + "moduleCode": "PR3117", + "title": "Formulation & Technology II", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "PR2114 or PR2114A", + "corequisite": "" + }, + { + "moduleCode": "PR3122", + "title": "Self Care II", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR2134", + "corequisite": "" + }, + { + "moduleCode": "PR3123", + "title": "Formulation &Technology II", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR1120\nPR2114", + "corequisite": "" + }, + { + "moduleCode": "PR3124", + "title": "Pharmacotherapeutics III", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR1120 \nPR2133", + "corequisite": "" + }, + { + "moduleCode": "PR3136", + "title": "Pharmacotherapeutics IV", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR2135", + "corequisite": "" + }, + { + "moduleCode": "PR3137", + "title": "Pharmacy Professional Skills Development III", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR2131, PR2134, PR3124, PR3146", + "corequisite": "PR3136 Pharmacotherapeutics IV" + }, + { + "moduleCode": "PR3144", + "title": "Principles of Research Methods", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GER1000", + "corequisite": "" + }, + { + "moduleCode": "PR3145", + "title": "Compliance & Good Practices in Pharmacy", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR2143", + "corequisite": "" + }, + { + "moduleCode": "PR3146", + "title": "Pharmacy Law in Singapore", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "PR1140", + "corequisite": "" + }, + { + "moduleCode": "PR3202", + "title": "Community Health & Preventative Care", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "PR3122", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR2134", + "corequisite": "" + }, + { + "moduleCode": "PR3204", + "title": "Medicinal Natural Products", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR1110/PR1110A Foundations for Medicinal Chemistry or PHS1110 Foundation for Medicinal and Synthetic Chemistry, and PR2143 Pharmaceutical Analysis for Quality Assurance or PHS2143 Analytical Techniques and Pharmaceutical Applications", + "corequisite": "" + }, + { + "moduleCode": "PR3288", + "title": "Advanced UROPS in Pharmacy I", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "By permission or PR2288 or PR2289", + "corequisite": "" + }, + { + "moduleCode": "PR3289", + "title": "Advanced UROPS in Pharmacy II", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "By permission or PR2288 or PR2289", + "corequisite": "" + }, + { + "moduleCode": "PR3312", + "title": "Enhanced Undergraduate Professional Internship Programme", + "moduleCredit": 12, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "XX3312 modules offered in Science, where XX stands for the subject prefix for the respective major.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SP1001 Career Planning & Preparation or NCC1001 Headstart Module (A Career Development Programme) or NCC1000 Stepup Module (A Career Development Programme) or CFG1001 Headstart Module or CFG1000 StepUp Module; students must have completed 3 regular semesters of study, have declared Pharmacy as first major and have completed a minimum of 32 MCs in Pharmacy major at time of application.", + "corequisite": "" + }, + { + "moduleCode": "PR4101", + "title": "Pharmacotherapy II", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR3105", + "corequisite": "" + }, + { + "moduleCode": "PR4102", + "title": "Pharmacotherapy III", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR4101", + "corequisite": "" + }, + { + "moduleCode": "PR4103", + "title": "Research Methodology", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR2103, PR2104 and PR3105", + "corequisite": "" + }, + { + "moduleCode": "PR4104", + "title": "Pharmacy Practice III", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "PR3105", + "corequisite": "" + }, + { + "moduleCode": "PR4105", + "title": "Natural Products", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Pass PR1101", + "corequisite": "" + }, + { + "moduleCode": "PR4106", + "title": "Dosage Form Design III", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR1102", + "corequisite": "" + }, + { + "moduleCode": "PR4138", + "title": "Pharmacy Professional Skills Development IV", + "moduleCredit": 2, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "PR3137 \nPR3136 \nPR3146 \nPR2134", + "corequisite": "" + }, + { + "moduleCode": "PR4195", + "title": "Scientific Evaluation, Analysis and Communication", + "moduleCredit": 12, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "Students from non-Pharmacy majors, PR4196 unless deemed\nunsuitable by the HOD or her representatives", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completion of Pharmacy Year 3 requirement and have not met\nthe criteria for reading PR4196 as listed below:\n(i) Students who are not within the 50th percentile of the cohort based on their Year 3 Semester 1 CAP score.\n(ii) Student who are deemed by the HOD and/or department’s\ndesignated representatives to be unsuitable to read\nPR4196 due to medical, personal and safety reasons. For\npoint \n(ii), accompanying document from a medical\npractitioner or testimonial from the students’ supervisor will\nbe needed to aid in the decision making by the HOD and/or\ndepartment’s designated representatives.\n(iii) Students who are required to read ES1000/ES1000FC\nBasic English and/or ES1102 English for Academic\nPurposes must pass these modules.", + "corequisite": "" + }, + { + "moduleCode": "PR4196", + "title": "Pharmacy Research Project and Scientific Communication", + "moduleCredit": 16, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "Students from non-Pharmacy majors, PR4199", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completion of Pharmacy Year 3 requirement and subject to departmental approval. Students who are required to read ES1000 Basic English and/or ES1102/ES1103 English for Academic Purposes must pass these modules.", + "corequisite": "" + }, + { + "moduleCode": "PR4197", + "title": "Pharmacy Internship I", + "moduleCredit": 6, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR2134, PR2133, PR2135 and PR3146", + "corequisite": "" + }, + { + "moduleCode": "PR4197A", + "title": "Pharmacy Internship I", + "moduleCredit": 5, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "PR4197", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "To pass the pharmacy undergraduate Year 1 to 3 curriculum (Pharmacy practice / self-care / pharmacotherapeutics modules as essential). Students may appeal on a case by case basis to read this module if they have not fulfilled the above requirements.", + "corequisite": "" + }, + { + "moduleCode": "PR4198", + "title": "Pharmacy Internship II", + "moduleCredit": 6, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR2134, PR2133, PR2135 and PR3146", + "corequisite": "" + }, + { + "moduleCode": "PR4198A", + "title": "Pharmacy Internship II", + "moduleCredit": 5, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "PR4198", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "To pass the pharmacy undergraduate Year 1 to 3 curriculum (Pharmacy practice / self-care / pharmacotherapeutics modules as essential). Students may appeal on a case by case basis to read this module if they have not fulfilled the above requirements.", + "corequisite": "" + }, + { + "moduleCode": "PR4199", + "title": "Honours Project in Pharmacy", + "moduleCredit": 12, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "PR4196", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "Completion of Level 3000 modules and subject to departmental approval.", + "corequisite": "" + }, + { + "moduleCode": "PR4201", + "title": "Pharmaceutical Marketing", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "BH1003 or MKT1003 or CS3261", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR1140 Pharmacy Professional Skills Development I", + "corequisite": "" + }, + { + "moduleCode": "PR4203", + "title": "Pharmacy Practice IV", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR2131 Pharmacy Professional Skills Development II", + "corequisite": "" + }, + { + "moduleCode": "PR4204", + "title": "Special Drug Delivery", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR3117 Formulation & Technology II or PR3301 Pharmaceutical Dosage Forms or PHS2117 Principles of Pharmaceutical Formulations II", + "corequisite": "" + }, + { + "moduleCode": "PR4205", + "title": "Bioorganic Principles of Medicinal Chemistry", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR2115/PR2115A Medicinal Chemistry for Drug Design or PHS2115 Basic Principles of Drug Design and Development or by permission.", + "corequisite": "" + }, + { + "moduleCode": "PR4206", + "title": "Industrial Pharmacy", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "CN4233E and CN4233R", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR1142 Pharmaceutical Statistics OR GER1000, and PR3117 OR PR3301", + "corequisite": "" + }, + { + "moduleCode": "PR4207", + "title": "Applied Pharmacokinetics and Toxicokinetics", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PR3116 Concepts in Pharmacokinetics & Biopharmaceutics or PHS3116 Pharmacokinetics and Biopharmaceutics.", + "corequisite": "" + }, + { + "moduleCode": "PR5113", + "title": "Clinical Pharmacokinetics & Therapeutic Drug Monitoring", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Acceptance in the PharmD programme or by permission", + "corequisite": "" + }, + { + "moduleCode": "PR5115", + "title": "Drug Information, Critical Literature Evaluation and Biostatistics", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "By special permission", + "corequisite": "" + }, + { + "moduleCode": "PR5130", + "title": "Advanced Pharmacotherapy I", + "moduleCredit": 2, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Acceptance in the PharmD programme or by permission", + "corequisite": "" + }, + { + "moduleCode": "PR5131", + "title": "Advanced Pharmacotherapy II", + "moduleCredit": 2, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Acceptance in the PharmD programme or by permission", + "corequisite": "" + }, + { + "moduleCode": "PR5131A", + "title": "Advanced Pharmacotherapy IIA", + "moduleCredit": 2, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Acceptance in the Pharm.D. programme or by permission.", + "corequisite": "" + }, + { + "moduleCode": "PR5132", + "title": "Advanced Pharmacotherapy III", + "moduleCredit": 2, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Acceptance in the PharmD programme or by permission", + "corequisite": "" + }, + { + "moduleCode": "PR5132A", + "title": "Advanced Pharmacotherapy IIIA", + "moduleCredit": 2, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Acceptance in the Pharm.D. programme or by permission.", + "corequisite": "" + }, + { + "moduleCode": "PR5133", + "title": "Advanced Pharmacotherapy in Special Populations", + "moduleCredit": 2, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Acceptance in the PharmD programme or by permission", + "corequisite": "" + }, + { + "moduleCode": "PR5134", + "title": "Advanced Skills in Pharmacy Practice", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "Acceptance in the PharmD programme or by permission", + "corequisite": "" + }, + { + "moduleCode": "PR5134A", + "title": "Physical Assessment and Diagnostic Tests for Advanced Pharmacy Practice", + "moduleCredit": 2, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Pass in PR5134.", + "corequisite": "" + }, + { + "moduleCode": "PR5135", + "title": "Foundations in Advanced Pharmacy Practice", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Acceptance in the PharmD programme or by permission", + "corequisite": "" + }, + { + "moduleCode": "PR5136", + "title": "Seminar and Teaching", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Acceptance in the PharmD programme or by permission", + "corequisite": "" + }, + { + "moduleCode": "PR5137", + "title": "Advanced Pharmacotherapy in Geriatrics", + "moduleCredit": 2, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Acceptance in the Pharm.D. programme or by permission.", + "corequisite": "" + }, + { + "moduleCode": "PR5150", + "title": "Ambulatory Care Clerkship", + "moduleCredit": 5, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Acceptance in the Pharm.D. program and require min CAP of 3.5 after Year 1 didactic component, or by permission.", + "corequisite": "" + }, + { + "moduleCode": "PR5151", + "title": "Acute Care Medicine Clerkship", + "moduleCredit": 5, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Acceptance in the Pharm.D. program and require min CAP of 3.5 after Year 1 didactic component, or by permission.", + "corequisite": "" + }, + { + "moduleCode": "PR5152", + "title": "Adult General Medicine Clerkship", + "moduleCredit": 5, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Acceptance in the Pharm.D. program and require min CAP of 3.5 after Year 1 didactic component, or by permission.", + "corequisite": "" + }, + { + "moduleCode": "PR5153", + "title": "Critical Care Clerkship", + "moduleCredit": 5, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Acceptance in the Pharm.D. program and require min CAP of 3.5 after Year 1 didactic component, or by permission.", + "corequisite": "" + }, + { + "moduleCode": "PR5154", + "title": "Drug Information Clerkship", + "moduleCredit": 5, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Acceptance in the Pharm.D. program and require min CAP of 3.5 after Year 1 didactic component, or by permission.", + "corequisite": "" + }, + { + "moduleCode": "PR5198", + "title": "Graduate Seminar Module in Pharmacy", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Relevant degree or special permission", + "corequisite": "" + }, + { + "moduleCode": "PR5211", + "title": "Pharmaceutical Analysis IV", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Relevant degree or special permission", + "corequisite": "" + }, + { + "moduleCode": "PR5212", + "title": "Advanced Topics in Medicinal Chemistry", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Relevant degree or special permission", + "corequisite": "" + }, + { + "moduleCode": "PR5213", + "title": "Pharmaceutical Process Validation", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Relevant degree or special permission", + "corequisite": "" + }, + { + "moduleCode": "PR5214", + "title": "Advances in Tablet Technology", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Relevant degree or special permission", + "corequisite": "" + }, + { + "moduleCode": "PR5216", + "title": "Advances in Drug Delivery", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Relevant degree or special permission", + "corequisite": "" + }, + { + "moduleCode": "PR5217", + "title": "Formulation Science", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Relevant degree or special permission", + "corequisite": "" + }, + { + "moduleCode": "PR5218", + "title": "Methodologies in Product Development", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Acceptance into the MPST programme or special permission.", + "corequisite": "" + }, + { + "moduleCode": "PR5219", + "title": "Product Quality Management", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Relevant degree or special permission", + "corequisite": "" + }, + { + "moduleCode": "PR5220", + "title": "Bioprocess Technology", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Relevant degree or special permission", + "corequisite": "" + }, + { + "moduleCode": "PR5221", + "title": "Molecular Targets in Drug Discovery", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Relevant degree or special permission", + "corequisite": "" + }, + { + "moduleCode": "PR5222", + "title": "Drug Metabolism", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Relevant degree or special permission", + "corequisite": "" + }, + { + "moduleCode": "PR5224", + "title": "Pharmacoepidemiology", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Relevant degree or special permission", + "corequisite": "" + }, + { + "moduleCode": "PR5225", + "title": "Preformulation Science", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Relevant degree or special permission", + "corequisite": "" + }, + { + "moduleCode": "PR5230", + "title": "Pharmacoeconomics and Outcomes Research", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Acceptance into PharmD or relevant degree or special permission", + "corequisite": "" + }, + { + "moduleCode": "PR5230A", + "title": "Pharmacoeconomics", + "moduleCredit": 2, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "PR5230", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Acceptance in the Pharm.D. programme or by permission.", + "corequisite": "" + }, + { + "moduleCode": "PR5230B", + "title": "Outcomes Research", + "moduleCredit": 2, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "PR5230", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Acceptance in the Pharm.D. programme or by permission.", + "corequisite": "" + }, + { + "moduleCode": "PR5231", + "title": "Complementary and Alternative Medicine", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Acceptance in the Pharm.D. program or by permission", + "corequisite": "" + }, + { + "moduleCode": "PR5232", + "title": "Nutrition, Disease Prevention and Health Promotion", + "moduleCredit": 2, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Acceptance in the Pharm.D. program or by permission", + "corequisite": "" + }, + { + "moduleCode": "PR5233", + "title": "Pharmacy Practice Management", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Acceptance in the Pharm.D. program or by permission", + "corequisite": "" + }, + { + "moduleCode": "PR5234", + "title": "Pharmacogenomics and Pharmacogenetics", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Acceptance into PharmD or relevant degree or special permission", + "corequisite": "" + }, + { + "moduleCode": "PR5234A", + "title": "Concepts in Pharmacogenomics", + "moduleCredit": 2, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "PR5234", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Acceptance in the Pharm.D. programme or graduate programme or by permission", + "corequisite": "" + }, + { + "moduleCode": "PR5235", + "title": "Ethics in Pharmacy Practice", + "moduleCredit": 2, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Acceptance in the Pharm.D. program or by permission", + "corequisite": "" + }, + { + "moduleCode": "PR5237", + "title": "Management of Older Patients", + "moduleCredit": 2, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PR5238", + "title": "Advanced Community Case Studies", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "1) PR 5134 Advanced Skills in Pharmacy Practice\n\n2) Prior to module registration, candidates should identify a supporting supervisor from their practice institution and a self-identified practice site for the self-directed work-based practicum component.", + "corequisite": "" + }, + { + "moduleCode": "PR5239", + "title": "Clinical Pharmacy Research Project", + "moduleCredit": 12, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Acceptance in the PharmD programme or by permission", + "corequisite": "" + }, + { + "moduleCode": "PR5250", + "title": "Elective Clerkship I", + "moduleCredit": 5, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Acceptance in the Pharm.D. program and require min CAP of 3.5 after Year 1 didactic component, or by permission.", + "corequisite": "" + }, + { + "moduleCode": "PR5251", + "title": "Elective Clerkship II", + "moduleCredit": 5, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Acceptance in the Pharm.D. program and require min CAP of 3.5 after Year 1 didactic component, or by permission.", + "corequisite": "" + }, + { + "moduleCode": "PR5252", + "title": "Elective Clerkship III", + "moduleCredit": 5, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Acceptance in the Pharm.D. program and require min CAP of 3.5 after Year 1 didactic component, or by permission.", + "corequisite": "" + }, + { + "moduleCode": "PR5253", + "title": "Elective Clerkship IV", + "moduleCredit": 5, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Acceptance in the PharmD. programme or by permission", + "corequisite": "" + }, + { + "moduleCode": "PR5302", + "title": "Regulation of Drug Development", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(PR2101, PR3102 and PR4106) or PR3301", + "corequisite": "" + }, + { + "moduleCode": "PR5303", + "title": "Good Regulatory Practices", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(PR2101, PR3102 and PR4106) or PR3301", + "corequisite": "" + }, + { + "moduleCode": "PR5304", + "title": "Fundamental Topics in Pharmaceutical Science", + "moduleCredit": 4, + "department": "Pharmacy", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Relevant degree or special permission", + "corequisite": "" + }, + { + "moduleCode": "PRV1111", + "title": "Cariology", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PRV2110", + "title": "Preventive Dentistry", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PRV2120", + "title": "Preclinical Periodontics", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PRV3110", + "title": "Preventive Dentistry", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PRV3112", + "title": "Dental Public Health", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PRV3120", + "title": "Periodontics", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PRV3210", + "title": "Orthodontics", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PRV3220", + "title": "Paediatric Dentistry", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PRV4110", + "title": "Preventive Dentistry & DPH", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PRV4120", + "title": "Periodontics", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PRV4210", + "title": "Orthodontics", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PRV4220", + "title": "Paediatric Dentistry", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS1101E", + "title": "Introduction to Politics", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "GEM1003K, GEK1003, PS1101", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS2203", + "title": "Ancient Western Political Thought", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "EU2203", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS2204", + "title": "Modern Western Political Thought", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "EU2204", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS2231", + "title": "Western Political Thought", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS2232", + "title": "Islamic and Hindu Political Thought", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS2233", + "title": "Political Ideologies", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEK2024", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS2234", + "title": "Introduction to Comparative Politics", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS2236", + "title": "European Politics", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EU2217", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS2237", + "title": "Introduction to International Relations", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS2238", + "title": "International Politics of Northeast Asia", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS2239", + "title": "Foreign Policy and Diplomacy", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEK2010, GEM2010K, PS2209, PS2209B", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS2240", + "title": "Introduction to Public Administration", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS2241", + "title": "Public Administration in Asia", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEK2012", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS2244", + "title": "Public Administration in Singapore", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "SSA2222", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS2245", + "title": "Southeast Asian Politics", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "SE2213", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS2247", + "title": "South Asian Politics", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS2248", + "title": "Chinese Politics", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS2249", + "title": "Government and Politics of Singapore", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "GEK2003, GEM2003K, PS1102, PS2101, PS2101B, SS2209PS, SSA2209", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS2250", + "title": "International Politics of Southeast Asia", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS2251", + "title": "The Region in the Postcolonial World", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS2254", + "title": "American Government and Politics", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS2255", + "title": "Politics of the Middle East", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "GEK2025", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS2256", + "title": "Politics on Screen", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEK2043 Politics on Screen", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS2257", + "title": "Contemporary African Politics", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS2258", + "title": "Introduction to Political Theory", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS3225", + "title": "Political Islam", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS3232", + "title": "Democratic Theory", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS3233", + "title": "Political and International Ethics", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS3236", + "title": "Ethnicity and Religion in Asian Politics", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS3237", + "title": "Women and Politics", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS3238", + "title": "International Political Economy", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS3239", + "title": "International Conflict Analysis", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS3240", + "title": "International Security", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS3242", + "title": "US Foreign Policy", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS3243", + "title": "Public Sector Organisational Behaviour", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS3245", + "title": "Public Personnel Administration", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS3246", + "title": "Public Ethics and Corruption", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS3247", + "title": "The Rise of China and International Order", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS3249", + "title": "Singapore's Foreign Policy", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "SSA3205", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS3251", + "title": "International and Regional Organisations", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "EU3228", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PS1101E, PS2237", + "corequisite": "" + }, + { + "moduleCode": "PS3252", + "title": "Human Rights in International Politics", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEK3006", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS3257", + "title": "Political Inquiry", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 12 MCs in Political Science or 16 MCs in GL or GL-recognised nonlanguage modules.", + "corequisite": "" + }, + { + "moduleCode": "PS3258", + "title": "Research Methods in Political Science", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PS3257", + "corequisite": "" + }, + { + "moduleCode": "PS3259", + "title": "American Political Thought", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS3260", + "title": "Politics and the Visual", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "GEK3005", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS3262", + "title": "Managing Non-Profit Organisations", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS3263", + "title": "Comparative Study of Development", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS3265", + "title": "Civil-Military Relations", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed PS1101E", + "corequisite": "" + }, + { + "moduleCode": "PS3266", + "title": "Politics, Music and Society", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEK3007 Politics, Music and Society", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS3267", + "title": "German Political Thought", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS3269", + "title": "Medieval Western Political Thought", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PS2204/EU2204 Modern Western Political Thought", + "corequisite": "" + }, + { + "moduleCode": "PS3271", + "title": "Public Policy-Making", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS3272", + "title": "The International Relations of Sub-Saharan Africa", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS3273", + "title": "Singapore Politics in Comparative Perspective", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS3274", + "title": "Environmental Politics", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS3311", + "title": "International Ethics", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "(Yale-NUS Module) YSS3270 Ethics and Global Affairs \nPS3233 Political and International Ethics", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS3312", + "title": "World Orders", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS3550", + "title": "Political Science Internship", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "Any other XX3550 internship modules\n(Note: Students who change major may not do a second internship in their new major)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students should:\n- have completed a minimum of 24 MC in Political Science; and\n- have declared Political Science as their Major.", + "corequisite": "" + }, + { + "moduleCode": "PS3551", + "title": "FASS Undergraduate Research Opportunity (UROP )", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "Students must:\nhave declared a Major, completed a minimum of 24 MCs in that Major, and have a CAP of at least 3.20.", + "corequisite": "" + }, + { + "moduleCode": "PS3880", + "title": "Topics in Political Science", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Nil for the ‘parent’ module. Particular topics may\nhave pre‐requisites appropriate to their content.\nFor example, the first proposed topic with be\nPS3880A Modern Chinese Political Thought,\nwhich will have as a pre‐requisite PS2253 Chinese\nPolitical Thought (which focuses on the ancient\nChinese classics).", + "corequisite": "" + }, + { + "moduleCode": "PS3880A", + "title": "Modern Chinese Political Thought", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS3880D", + "title": "Politics of the United Nations", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS3880E", + "title": "Topics in PS: Human Trafficking in Southeast Asia", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS3880F", + "title": "Topics in PS: Quantitative Approaches to Intl Relations", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have read PS2237 Introduction to IR and PS3257 Political Inquiry.", + "corequisite": "" + }, + { + "moduleCode": "PS3880G", + "title": "Topics in PS: Research Design and Methods", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS3880H", + "title": "The Politics of European Integration", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS4201", + "title": "Contemporary Political Theory", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012-2014:\nCompleted 80 MCs, including 28 MCs in PS or 28 MCs in EU/LA [French/German]/ recognised modules or 28MCs in SC, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2015 onwards:\nCompleted 80 MCs, including 28 MCs in PS or 28 MCs in EU/LA [French/German/Spanish]/ recognised modules or 28MCs in SC, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4202", + "title": "Political Parties & Elections", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4203", + "title": "China's Foreign Policy", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in PS or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4205", + "title": "Contemporary Politics of Southeast Asia", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in PS or 28 MCs in SE or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in PS or 28 MCs in SE, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4206", + "title": "Regional Security in the Asia Pacific", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in PS or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4208", + "title": "Theories of International Relations", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in PS or 28 MCS in SC with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4209", + "title": "Public Organisation Theory and Practice", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in PS, or 28 MCs in GL or GL recognised non-language modules with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in PS with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4210", + "title": "Public Policy Analysis", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in PS or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4211", + "title": "Political Theology", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in PS or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4213", + "title": "International Political Theory", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PS3203B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012-2014:\nCompleted 80 MCs, including 28 MCs in PS or 28 MCs in EU/LA [French/German]/recognised modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2015 onwards:\nCompleted 80 MCs, including 28 MCs in PS or 28 MCs in EU/LA [French/German/Spanish]/recognised modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4215", + "title": "Politics of Non-Violence", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in PS or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4216", + "title": "The Study of War", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in PS or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4217", + "title": "Major Political Thinkers", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4217A", + "title": "Major Political Thinkers: Plato & Rousseau", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EU4227A", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in PS or 28 MCs in SC, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4217C", + "title": "Major Political Thinkers: Montaigne", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EU4227C", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in PS or 28 MCs in EU/LA [French/ German / Spanish] recognised modules with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4217E", + "title": "Major Political Thinkers: Oakeshott", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012-2014:\n(1) Completed 80 MCs, including 28 MCs in PS or 28 MCs in EU/LA [French/German]/recognised modules, with a minimum CAP of 3.20 or be on the Honours track. \n(2) PS2204/EU2204\n\nCohort 2015 onwards:\n(1) Completed 80 MCs, including 28 MCs in PS or 28 MCs in EU/LA [French/German/Spanish]/ recognised modules, with a minimum CAP of 3.20 or be on the Honours track.\n(2) PS2204/EU2204", + "corequisite": "" + }, + { + "moduleCode": "PS4217F", + "title": "Major Political Thinkers: Hobbes", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012-2014:\n(1) Completed 80 MCs, including 28 MCs in PS or 28 MCs in EU/LA [French/German]/recognised modules, with a minimum CAP of 3.20 or be on the Honours track.\n(2) PS2204/EU2204\n\nCohort 2015 onwards:\n(1) Completed 80 MCs, including 28 MCs in PS or 28 MCs in EU/LA [French/German/Spanish]/recognised modules, with a minimum CAP of 3.20 or be on the Honours track.\n(2) PS2204/EU2204", + "corequisite": "" + }, + { + "moduleCode": "PS4218", + "title": "European Foreign Policy", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EU4228", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in PS or 28 MCs in SC or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in PS or 28 MCs in SC, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4219", + "title": "Comparative Political Thought", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "PS3201B, PS3231", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in PS or 28 MCs in SC or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in PS or 28 MCs in SC, with a minimum CAP of 3.20 or be on the Honours track", + "corequisite": "" + }, + { + "moduleCode": "PS4220", + "title": "Rhetoric and Politics", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in PS or 28 MCs in EL/EN, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4221", + "title": "Contemporary Politics of Northeast Asia", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in PS or 28 MCs in SC or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in PS or 28 MCs in SC, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4224", + "title": "State and Society", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in PS or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4225", + "title": "Contemporary Issues in Chinese Politics", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in PS or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4226", + "title": "Emerging Markets and Economic Governance", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: (1) Completed 80MCs, including 28MCs in PS or 28MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track. (2) PS2237, PS3238 and PS3257.\n\nCohort 2020 onwards: (1) Completed 80MCs, including 28MCs in PS, with a minimum CAP of 3.20 or be on the Honours track. (2) PS2237, PS3238 and PS3257.", + "corequisite": "" + }, + { + "moduleCode": "PS4228", + "title": "Comparative Democratic Politics", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in PS or 28 MCs in SC with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4229", + "title": "The Politics of Knowledge", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4230", + "title": "Public Sector Reforms in China", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in PS or 28 MCs in SC or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in PS or 28 MCs in SC, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4231", + "title": "Social Theory and International Relations", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "PS3880B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012-2014:\nCompleted 80 MCs, including 28 MCs in PS or 28 MCs in EU/LA [French/German]/recognised modules or 28MCs in SC, with a minimum CAP of 3.20 or be on the honours track.\n \nCohort 2015 onwards:\nCompleted 80 MCs, including 28 MCs in PS or 28 MCs in EU/LA [French/German/Spanish]/recognised modules or 28 MCs in SC, with a minimum CAP of 3.20 or be on the honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4232", + "title": "Researching Singapore Politics", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80MCs, including 28MCs in PS or 28MCs in GL/GL recognised non-language modules or 28MCs in SC, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80MCs, including 28MCs in PS or 28MCs in SC, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4233", + "title": "Existentialist Political Theory", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in PS with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4234", + "title": "Identity Politics", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80MCs, including 28MCs in PS or 28MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80MCs, including 28MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4235", + "title": "War Termination and the Stability of Peace", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80MCs, including 28MCs in PS or 28MCs in GL/GL recognized non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80MCs, including 28MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4236", + "title": "Environmental Political Theory", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in PS, with a minimum CAP of 3.20 or be on the Honours track, and PS3274.", + "corequisite": "" + }, + { + "moduleCode": "PS4237", + "title": "Capitalism and Political Theory", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(1) Completed 80 MCs, including 28 MCs in PS modules,\nwith a minimum CAP of 3.20 or be on the Honours track.\n(2) Completed either PS2258 Introduction to Political\nTheory or PS2204 Modern Western Political Thought.", + "corequisite": "" + }, + { + "moduleCode": "PS4238", + "title": "The Politics of Recognition and Identity", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80MCs, including 28MCs in PS or 28MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80MCs, including 28MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4239", + "title": "Seminar in International Relations of Southeast Asia", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80MCs, including 28MCs in PS or 28MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80MCs, including 28MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4311", + "title": "International Relations in Political Thought", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PS4213 International Political Theory", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012-2014:\nCompleted 80 MCs, including 28 MCs in PS or 28 MCs in EU/LA [French/German]/recognised modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2015 onwards:\nCompleted 80 MCs, including 28 MCs in PS or 28 MCs in EU/LA [French/German/Spanish]/recognised modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4312", + "title": "Seminar in European Politics", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in PS or 28 MCs in GL/GL recognised non-language modules or 28 MCs in EU / LA [French/German/Spanish]/recognised modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in PS or 28 MCs in EU / LA [French/German/Spanish]/recognised modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4313", + "title": "Seminar in Comparative Political Economy", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in PS or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.onours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4314", + "title": "Data Analytics in Political Science", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in PS or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track, and PS3257 Political Inquiry\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in PS, with a minimum CAP of 3.20 or be on the Honours track, and PS3257 Political Inquiry", + "corequisite": "" + }, + { + "moduleCode": "PS4401", + "title": "Honours Thesis", + "moduleCredit": 15, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "PS4660", + "attributes": [ + false, + false, + false, + false, + true, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2015 and before:\nCompleted 110 MCs, including 60 MCs of PS major requirements with a minimum SJAP of 4.00 and CAP of 3.50. Students may seek a waiver of the SJAP pre-requisite from the department if they have a minimum CAP of 4.25 after completing 110 MCs.\n\nCohort 2016 onwards:\nCompleted 110 MCs, including 44 MCs of PS major requirements with a minimum SJAP of 4.00 and CAP of 3.50. Students may seek a waiver of the SJAP pre-requisite from the department if they have a minimum CAP of 4.25 after completing 110 MCs.", + "corequisite": "" + }, + { + "moduleCode": "PS4660", + "title": "Independent Study", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "PS4401, PS4401S", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012-2015:\nCompleted 100 MCs including 60 MCs in PS, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nCompleted 100 MCs including 44 MCs in PS, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "PS4881", + "title": "Topics in Comparative Politics", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4881B", + "title": "Topics in CP: Malaysian Politics", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in PS or 28 MCs in SC or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in PS or 28 MCs in SC, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4881C", + "title": "Topics in CP: Labour Politics", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in PS or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4881D", + "title": "Topics in CP: Money and Politics", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80MCs, including 28MCs in PS, or 28MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80MCs, including 28MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.nours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4881F", + "title": "Topics in CP: Political Islam – Middle East & Beyond", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in PS or 28 MCs in GL/GL recognised non-language modules with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4881G", + "title": "Topics in CP: Politics of the Korean Peninsula", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80MCs, including 28MCs in PS or 28MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80MCs, including 28MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4881H", + "title": "Topics in CP: Chinese Politics", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in PS, with a minimum CAP of 3.20 or be on the Honours track, and PS2248 Chinese Politics.", + "corequisite": "" + }, + { + "moduleCode": "PS4882", + "title": "Topics in International Relations", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4882A", + "title": "Topics in IR: Globalisation, Security and the State", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in PS or 28 MCs in SC or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in PS or 28 MCs in SC, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4882B", + "title": "Topics in IR: 20th Century International Thought", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012-2014:\nCompleted 80 MCs, including 28 MCs in PS or 28 MCs in EU/LA [French/German]/recognised modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2015 onwards:\nCompleted 80 MCs, including 28 MCs in PS or 28 MCs in EU/LA [French/German/Spanish]/recognised modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4882D", + "title": "Topics in IR: Politics of Global Migration", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in PS or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4882E", + "title": "Topics in IR: Arms Control", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in PS or 28 MCs in SC or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in PS or 28 MCs in SC, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4882F", + "title": "The Politics of International Trade", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in PS or 28 MCs in SC or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in PS or 28 MCs in SC, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4882G", + "title": "Topics in IR: Politics of Intl Economic Relations", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in PS or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4882H", + "title": "Topics in IR: Food Politics", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in PS or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4882I", + "title": "Topics in IR: International Society", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in PS or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4883", + "title": "Topics in Political Theory", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4883A", + "title": "Topics in PT: Orientalism and Femininity", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in PS or 28 MCs in HY or 28 MCs in SC or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in PS or 28 MCs in HY or 28 MCs in SC, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4884", + "title": "Topics in Public Administration", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS4884A", + "title": "Topics in PA: Applying Public Policy Theory", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in PS, or 28 MCs in SC or 28 MCs in GL or GL recognised non-language modules with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "PS5111", + "title": "Research Design in Political Science", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "PS5101, PS6101", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS5111R", + "title": "Research Design in Political Science", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "PS5101, PS6101", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS5201", + "title": "Seminar in Political Theory", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PS5315/PS5315R", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS5201R", + "title": "Seminar in Political Theory", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PS5315/PS5315R", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS5312", + "title": "Seminar in Comparative Politics", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PS5213, PS6301B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS5312R", + "title": "Seminar in Comparative Politics", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PS5213, PS6301B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS5313", + "title": "Seminar On State and Society", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS5313R", + "title": "Seminar On State and Society", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS5314", + "title": "Seminar in International Relations", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "IZ5102, PS5208, PS6208, PS6301A, PS6401", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS5314R", + "title": "Seminar in Int'l Relations", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "IZ5102, PS5208, PS6208, PS6301A, PS6401", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS5316", + "title": "Seminar in Public Administration", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS5316R", + "title": "Seminar in Public Administration", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS5318R", + "title": "The Politics of Authoritarian Rule", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS5319", + "title": "The American Presidency", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS5319R", + "title": "The American Presidency", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS5321", + "title": "Seminar in Chinese Politics", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PS6316", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS5321R", + "title": "Seminar in Chinese Politics", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PS6316", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS5408", + "title": "International Institutions", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PS5404 and PS6404", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS5408R", + "title": "International Institutions", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PS5404 and PS6404 and PS5408", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS5503", + "title": "Decentralization and Local Governance", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have basic proficiency in interpreting findings of quantitative and qualitative research. Basic economics knowledge is desirable.", + "corequisite": "" + }, + { + "moduleCode": "PS5503R", + "title": "Decentralization and Local Governance", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have basic proficiency in interpreting findings of quantitative and qualitative research. Basic economics knowledge is desirable.", + "corequisite": "" + }, + { + "moduleCode": "PS5504", + "title": "Development Theory, Policy and Institutions", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS5505", + "title": "Public Administration Theory", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PS6504", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PS2240 Introduction to Public Administration or its equivalent, subject to the approval of the Instructor", + "corequisite": "" + }, + { + "moduleCode": "PS5506", + "title": "Globalization and Public Governance", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS5506R", + "title": "Globalization and Public Governance", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS5602", + "title": "Introduction to Quantitative Methods", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS5602R", + "title": "Introduction to Quantitative Methods", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS5603", + "title": "Introduction to Qualitative Methods", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS5603R", + "title": "Introduction to Qualitative Methods", + "moduleCredit": 5, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS6314", + "title": "Advanced Studies in Asian Politics", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS6402", + "title": "International Conflict and Security", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS6505", + "title": "Development Policy and Administration", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS6603", + "title": "Topics in Research Methods", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS6660", + "title": "Independent Study", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PS6770", + "title": "Graduate Research Seminar", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "PX2108", + "title": "Basic Human Pathology", + "moduleCredit": 4, + "department": "Pathology", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AY1130, PY1131", + "corequisite": "" + }, + { + "moduleCode": "PX3108", + "title": "Pathology", + "moduleCredit": 4, + "department": "Pathology", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AY1104 Anatomy (PR1906) and PY1106 Physiology II (PR1908)", + "corequisite": "" + }, + { + "moduleCode": "PY1131", + "title": "Human Anatomy & Physiology II", + "moduleCredit": 4, + "department": "Physiology", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "AY1130", + "corequisite": "" + }, + { + "moduleCode": "QF3101", + "title": "Investment Instruments: Theory and Computation", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(MA1104 or MA2104 or MA1505 or MA1507 or MA1511) and (MA2222 or QF2101 or MA3269)", + "corequisite": "" + }, + { + "moduleCode": "QF3201", + "title": "Basic Derivatives and Bonds", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "FNA2004", + "corequisite": "" + }, + { + "moduleCode": "QF3310", + "title": "Undergraduate Professional Internship Programme", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "XX3310 modules offered in Science, where XX stands for the subject prefix of the respective major", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed 3 regular semesters of study, having declared Quantitative Finance as first major and have completed a minimum of 32 MCs in Quantitative Finance major at the time of application.", + "corequisite": "" + }, + { + "moduleCode": "QF3311", + "title": "Undergraduate Professional Internship", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "XX3311 modules offered in Science, where XX stands for the subject prefix for the respective major.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed 3 regular semesters of study, have declared Quantitative Finance as first major and have completed a minimum of 32 MCs in Quantitative Finance major at time of application.", + "corequisite": "" + }, + { + "moduleCode": "QF3312", + "title": "Enhanced Undergraduate Professional Internship Programme", + "moduleCredit": 12, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "XX3312 modules offered in Science, where XX stands for the subject prefix for the respective major.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed 3 regular semesters of study, have declared Quantitative Finance as first major and have completed a minimum of 32 MCs in Quantitative Finance major at time of application.", + "corequisite": "" + }, + { + "moduleCode": "QF3313", + "title": "Undergraduate Professional Internship Programme Extended", + "moduleCredit": 12, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "This module XX3313 Extended Undergraduate Professional Internship Programme, where XX stands for the subject prefix of the respective major", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed 3 regular semesters of study, having declared QF as first major and have completed a minimum of 32 MCs in QF major at the time of application and have completed QF3312", + "corequisite": "Students should be in their 3rd year of studies (SCI3)" + }, + { + "moduleCode": "QF4102", + "title": "Financial Modelling and Computation", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "QF3101", + "corequisite": "" + }, + { + "moduleCode": "QF4102A", + "title": "Financial Modelling and Computation", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "QF3101 Investment Instruments: Theory and Computation", + "corequisite": "" + }, + { + "moduleCode": "QF4199", + "title": "Honours Project in Quantitative Finance", + "moduleCredit": 12, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "Only for students majoring in Quantitative Finance and who matriculated from 2004/2005, subject to faculty and departmental requirements.", + "corequisite": "" + }, + { + "moduleCode": "QF5201", + "title": "Interest Rate Theory and Credit Risk", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 3 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "QF5201A", + "title": "Interest Rate Theory and Credit Risk", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "QF5202", + "title": "Structured Products", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "QF5202A", + "title": "Structured Products", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 3 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "QF5203", + "title": "Risk Management", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "QF5203A", + "title": "Risk Management", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "QF5204", + "title": "Numerical Methods in Quantitative Finance", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "QF5205", + "title": "Topics in Quantitative Finance I", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "QF5205A", + "title": "Topics in Quantitative Finance I", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "QF5206", + "title": "Topics in Quantitative Finance II", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental Approval", + "corequisite": "" + }, + { + "moduleCode": "QF5206A", + "title": "Topics in Quantitative Finance II", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "QF5207", + "title": "Investment and Portfolio Selection", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "QF5207A", + "title": "Investment and Portfolio Selection", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 3 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Department approval", + "corequisite": "" + }, + { + "moduleCode": "QF5208", + "title": "AI and FinTech", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "QF5210", + "title": "Financial Time Series: Theory and Computation", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(QF3101 and MA4269) or Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "QF5210A", + "title": "Financial Time Series: Theory and Computation", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Either\nQF3101 Investment Instruments: Theory and\nComputation\nand MA4269 Mathematical Finance II\nor Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "QF5299", + "title": "Quantitative Finance Project", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 3 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "QF5310", + "title": "Data Analysis and Machine Learning in Finance", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "N.A.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "N.A.", + "corequisite": "N.A." + }, + { + "moduleCode": "QF5311", + "title": "Advanced Methods in Risk Management", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "N.A.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "N.A.", + "corequisite": "N.A." + }, + { + "moduleCode": "QF5312", + "title": "Statistical Models and Methods in Finance", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "N.A.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "N.A.", + "corequisite": "N.A." + }, + { + "moduleCode": "QF5313", + "title": "Advanced Computational & Programming Methods in Finance", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "N.A.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "N.A.", + "corequisite": "N.A." + }, + { + "moduleCode": "QF5314", + "title": "Basic Mathematics in Finance", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "QF5315", + "title": "Selected Topics in FinTech", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Department approval.", + "corequisite": "" + }, + { + "moduleCode": "QF5401", + "title": "Graduate Internship in Quantitative Finance I", + "moduleCredit": 4, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "QF5402 Graduate Internship in Quantitative Finance II", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "QF5402", + "title": "Graduate Internship in Quantitative Finance II", + "moduleCredit": 8, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "QF5401 Graduate Internship in Quantitative Finance I", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "QT5101", + "title": "Quantum measurements and statistics", + "moduleCredit": 4, + "department": "Center for Quantum Technologies", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "There are no precluded modules.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC2130 Quantum mechanics 1\nPC3130 Quantum mechanics 2", + "corequisite": "" + }, + { + "moduleCode": "QT5198", + "title": "Graduate Seminar in Quantum Information", + "moduleCredit": 4, + "department": "Center for Quantum Technologies", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "QT5201", + "title": "Special Topics in Quantum Information", + "moduleCredit": 4, + "department": "Center for Quantum Technologies", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This module is open to all students at CQT and in Physics. Students from other departments and faculties are welcome, but it is advisable that they discuss their background with the lecturer before registering.", + "corequisite": "" + }, + { + "moduleCode": "QT5201B", + "title": "Special Topics in Quantum Information", + "moduleCredit": 4, + "department": "Center for Quantum Technologies", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "QT5201C", + "title": "Special Topics in Quantum Information", + "moduleCredit": 4, + "department": "Center for Quantum Technologies", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This module is open to all students at CQT and in Physics who are admitted in the Summer school", + "corequisite": "" + }, + { + "moduleCode": "QT5201D", + "title": "Special Topics in Quantum Information", + "moduleCredit": 4, + "department": "Center for Quantum Technologies", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This module is open to all students at CQT and in Physics who are admitted to the Summer school.", + "corequisite": "" + }, + { + "moduleCode": "QT5201E", + "title": "Special Topics in Quantum Information", + "moduleCredit": 4, + "department": "Center for Quantum Technologies", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This module is open to all students at CQT and in Physics with a good background in quantum physics. Students from other departments and faculties are welcome, but it is\nadvisable that they discuss their background with the lecturer before registering.", + "corequisite": "" + }, + { + "moduleCode": "QT5201F", + "title": "Special Topics in Quantum Information (Strong Light Matter Coupling)", + "moduleCredit": 4, + "department": "Center for Quantum Technologies", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC 4130 Quantum Mechanics III\nPC4243 Atomic and Molecular Physics II or equivalent", + "corequisite": "" + }, + { + "moduleCode": "QT5201H", + "title": "Special Topics in Quantum Information", + "moduleCredit": 4, + "department": "Center for Quantum Technologies", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This module is open to all students at CQT and in Physics. Students from other departments and faculties are welcome, but it is advisable that they discuss their background with the lecturer before registering.", + "corequisite": "" + }, + { + "moduleCode": "QT5201I", + "title": "Breakthrough techniques in atomic and many-body physics", + "moduleCredit": 4, + "department": "Center for Quantum Technologies", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This module is open to all students at CQT and in Physics.Students from other departments and faculties are welcome, but it is advisable that they discuss their background with the lecturer before registering.", + "corequisite": "" + }, + { + "moduleCode": "QT5201J", + "title": "Semidefinite Programming and Quantum Information", + "moduleCredit": 4, + "department": "Center for Quantum Technologies", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This module is open to all students at CQT, and those in Computer Science, Mathematics, and in Physics. Students from other departments and faculties are welcome, but it is advisable that they discuss their background with one of the lecturers before registering.", + "corequisite": "" + }, + { + "moduleCode": "QT5201K", + "title": "Quantum Information Processing", + "moduleCredit": 4, + "department": "Center for Quantum Technologies", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This module is open to all students at CQT, and those in Computer Science, Mathematics, and in Physics. Students from other departments and faculties are welcome, but it is advisable that they discuss their background with one of the lecturers before registering.", + "corequisite": "" + }, + { + "moduleCode": "QT5201L", + "title": "Quantum Information and Cryptography", + "moduleCredit": 4, + "department": "Center for Quantum Technologies", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This module is open to all students at CQT, and those in\nComputer Science, Mathematics, and in Physics.\nStudents from other departments and faculties are\nwelcome, but it is advisable that they discuss their\nbackground with the lecturer before registering.", + "corequisite": "" + }, + { + "moduleCode": "QT5201M", + "title": "Quantum State Estimation", + "moduleCredit": 4, + "department": "Center for Quantum Technologies", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This module is open to all students at CQT, and those in\nPhysics, Mathematics, and Statistics. Students from other departments and faculties are welcome, but it is advisable\nthat they discuss their background with the lecturer before\nregistering.", + "corequisite": "" + }, + { + "moduleCode": "QT5201N", + "title": "Convex optimization and quantum foundations", + "moduleCredit": 4, + "department": "Center for Quantum Technologies", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This module is open to all students in CQT, and those in Computer Science, Mathematics, and in Physics. Students from other departments and faculties are welcome, but it is advisable that they discuss their background with one of the lecturers before registering.", + "corequisite": "" + }, + { + "moduleCode": "QT5201P", + "title": "Atoms and photon", + "moduleCredit": 4, + "department": "Center for Quantum Technologies", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Quantum Mechanic, Statistical Mechanics", + "corequisite": "" + }, + { + "moduleCode": "QT5201Q", + "title": "Quantum Algorithms", + "moduleCredit": 4, + "department": "Center for Quantum Technologies", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This module is open to all students in CQT, and those in Computer Science, Mathematics, and in Physics. Students from other departments and faculties are welcome, but it is advisable that they discuss their background with one of the lecturers before registering.", + "corequisite": "" + }, + { + "moduleCode": "QT5201R", + "title": "Density Functionals for Many-Particle Systems", + "moduleCredit": 4, + "department": "Center for Quantum Technologies", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This module is open to all students at CQT, and to those in Physics, Mathematics,\nand Chemistry. Students from other departments and faculties are welcome, but it is advisable that they discuss their background with the module co-ordinator before\nenroling.", + "corequisite": "" + }, + { + "moduleCode": "QT5201S", + "title": "Quantum Electronics", + "moduleCredit": 4, + "department": "Center for Quantum Technologies", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Some knowledge of optics, quantum physics and/or atomic physics and basic\nexperimental techniques (like practical lab courses) would be helpful, or any\nexposure to practical measurement problems.", + "corequisite": "Possibly an experimental project in quantum technologies" + }, + { + "moduleCode": "QT5201T", + "title": "Bell nonlocality", + "moduleCredit": 4, + "department": "Center for Quantum Technologies", + "faculty": "NUS Graduate Sch for Int Science and Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RD1111", + "title": "Occlusion", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RD1210", + "title": "Pre-Clinical Operative Dentistry", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RD2000", + "title": "Dental Materials", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RD2110", + "title": "Preclinical Fixed Prosthodontics", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RD2111", + "title": "Occlusion", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RD2120", + "title": "Pre-Clinical Removable Prosthodontics", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RD2210", + "title": "Preclinical Operative Dentistry", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RD2220", + "title": "Pre-Clinical Endodontics", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RD3110", + "title": "Fixed Prosthodontics", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RD3120", + "title": "Preclinical Removable Prosthodontics", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RD3210", + "title": "Operative Dentistry", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RD3220", + "title": "Endodontics", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RD4100", + "title": "Prosthodontics", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RD4110", + "title": "Fixed Prosthodontics", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RD4111", + "title": "Occlusion", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RD4120", + "title": "Removable Prosthodontics", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RD4210", + "title": "Operative Dentistry", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RD4220", + "title": "Endodontics", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RE1701", + "title": "Urban Land Use and Development", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "RE1102 Urban Land Use and Development", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RE1702", + "title": "Real Estate Data Analytics", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RE1703", + "title": "Principles of Law for Real Estate", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "BSP1702 Legal Environment of Business, BSP1702X", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RE1704", + "title": "Principles of Real Estate Economics", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "EC1301 Principles of Economics\nEC1101E Introduction to Economic Analysis", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RE1705", + "title": "Real Estate Finance and Accounting", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "RE1101 Fundamentals of RE Finance\nStudents from Business School and those doing a Business Minor", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RE1706", + "title": "Design and Construction", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "RE1105 Design and Construction", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RE1901", + "title": "Real Estate Wealth Management", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "RE1301 Real Estate Wealth Management", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RE2701", + "title": "Urban Planning", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "RE2103 Urban Planning, AR2223 Theory of Urban Design and Planning", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "RE1701 Urban Land Use and Development", + "corequisite": "" + }, + { + "moduleCode": "RE2702", + "title": "Land Law", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "RE2105 Land Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "RE1703 Principles of Law for Real Estate", + "corequisite": "" + }, + { + "moduleCode": "RE2704", + "title": "Introduction to Real Estate Valuation", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "RE1104 Principles of Real Estate Valuation", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RE2705", + "title": "Urban Economics", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "RE2102 Real Estate Economics\nEC3381 Urban Economics", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RE2706", + "title": "Real Estate and Infrastructure Finance", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "RE2104 Real Estate Finance", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RE2707", + "title": "Asset and Property Management", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "RE1103 Property and Facilities Management", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "RE1706 Design and Construction", + "corequisite": "" + }, + { + "moduleCode": "RE2708", + "title": "Computational Thinking and Programming for Real Estate", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RE2801", + "title": "Research Methodology in Real Estate", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "RE3201 Research Methodology", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "RE1702 Real Estate Data Analytics", + "corequisite": "" + }, + { + "moduleCode": "RE3000", + "title": "Work Experience Internship", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 3, + 4 + ], + "preclusion": "Full-time undergraduate students who have accumulated more than 12MCs for previous internship stints.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed at least 4 semester of study.", + "corequisite": "" + }, + { + "moduleCode": "RE3201", + "title": "Research Methodology", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "RE2801 Research Methodology in Real Estate", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "RE2101 Real Estate Market Analysis, RE2104 Real Estate Finance", + "corequisite": "" + }, + { + "moduleCode": "RE3390", + "title": "Behavioral Studies In Real Estate", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RE3701", + "title": "Real Estate Investment Analysis", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "RE3104 Real Estate Investment Analysis", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RE3702", + "title": "Property Tax and Statutory Valuation", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "RE2107 Property Tax and Statutory Valuation", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "RE2704 Introduction to Real Estate Valuation", + "corequisite": "" + }, + { + "moduleCode": "RE3703", + "title": "Advanced Real Estate Economics", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "RE2101 Real Estate Market Analysis", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "RE2705 Urban Economics", + "corequisite": "" + }, + { + "moduleCode": "RE3704", + "title": "Real Estate Marketing", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "RE2106 Real Estate Marketing & Negotiation", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RE3802", + "title": "Real Estate Finance Law", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "RE3211 Real Estate Finance Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "RE1703 Principles of Law for Real Estate", + "corequisite": "" + }, + { + "moduleCode": "RE3803", + "title": "Strategic Asset Management", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "RE2707 Asset and Property Management", + "corequisite": "" + }, + { + "moduleCode": "RE3804", + "title": "Real Estate Development Law", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "RE3221 Real Estate Development Law", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "RE2702 Land Law", + "corequisite": "" + }, + { + "moduleCode": "RE3805", + "title": "Corporate Investment in Real Estate", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "RE3212 Corporate Investment in Real Estate", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "RE3701 Real Estate Investment Analysis", + "corequisite": "" + }, + { + "moduleCode": "RE3806", + "title": "Advanced Real Estate Valuation", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "RE3101 Advanced Real Estate Valuation", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "RE3702 Property Tax and Statutory Valuation", + "corequisite": "" + }, + { + "moduleCode": "RE3807", + "title": "Corporate Finance for Real Estate", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "RE3701 Real Estate Investment Analysis", + "corequisite": "" + }, + { + "moduleCode": "RE3901", + "title": "Advanced Urban Planning", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "RE3102 Advanced Topics in Urban Planning", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "RE2701 Urban Planning", + "corequisite": "" + }, + { + "moduleCode": "RE3902", + "title": "Housing Markets and Policies", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "RE4301 Housing Markets and Housing Policies \nEC4387 Housing Economics", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RE3903", + "title": "GIS for Real Estate", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "RE2301 GIS for Real Estate\nGE2215 Introduction to GIS & Remote Sensing\nGE2227 Cartography and Visualisation\nGE3216 Applications of GIS & Remote Sensing,\nGE3238 GIS Design and Practices", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RE4180", + "title": "Real Estate Practice And Research", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "RE3280; RE3281; RE3382; RE3383; RE3482; RE3483", + "corequisite": "" + }, + { + "moduleCode": "RE4204", + "title": "Advanced Real Estate Marketing", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "N.A.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "RE2106 Real Estate Marketing and Negotiation", + "corequisite": "N.A." + }, + { + "moduleCode": "RE4210", + "title": "Real Estate Finance Seminar", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "RE4211 REIT MANAGEMENT, RE4212 REAL ESTATE SECURITIZATION.", + "corequisite": "" + }, + { + "moduleCode": "RE4701", + "title": "Real Estate Development", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "RE3103 Real Estate Development", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "RE3703 Advanced Real Estate Economics\nRE3704 Real Estate Marketing", + "corequisite": "" + }, + { + "moduleCode": "RE4702", + "title": "Professional Practice and Ethics", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "RE3107 Real Estate Practice and Ethics", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "RE1703 Principles of Law for Real Estate\nRE3707 Corporate Finance for Real Estate is recommended", + "corequisite": "" + }, + { + "moduleCode": "RE4711", + "title": "FYP Dissertation", + "moduleCredit": 8, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "RE4000 Dissertation\nRE4712 FYP Academic Exercise", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RE4712", + "title": "FYP Academic Exercise", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "RE4001 Real Estate Case Study\nRE4711 FYP Dissertation", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RE4801", + "title": "Real Estate Internship Programme", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "RE4202 Real Estate Internship Programme", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must have completed at least 6 semester of study OR 100 MCs", + "corequisite": "" + }, + { + "moduleCode": "RE4802", + "title": "Topics in Real Estate (Summer Programme)", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "RE4203 Topics in Real Estate (Summer Programme)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed Year 2 Essential Modules", + "corequisite": "" + }, + { + "moduleCode": "RE4803", + "title": "REIT and Business Trust Management", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "RE4211 REIT Management", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "RE3701 Real Estate Investment Analysis", + "corequisite": "" + }, + { + "moduleCode": "RE4804", + "title": "Real Estate Securitisation", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "RE4212 Real Estate Securitisation", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "RE3701 Real Estate Investment Analysis", + "corequisite": "" + }, + { + "moduleCode": "RE4805", + "title": "International Real Estate Development and Investment", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "RE3105 Regional Real Estate Development", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "RE4701 Real Estate Development", + "corequisite": "" + }, + { + "moduleCode": "RE4806", + "title": "Real Estate Finance Seminar", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "RE4210 Real Estate Finance Seminar", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "RE3701 Real Estate Investment Analysis", + "corequisite": "" + }, + { + "moduleCode": "RE4807", + "title": "Real Estate Risk Analysis and Management", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "RE4213 Real Estate Risk Analysis and Management", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "RE3701 Real Estate Investment Analysis", + "corequisite": "" + }, + { + "moduleCode": "RE4808", + "title": "Urban Challenges and Policies", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "RE4222 Public Policy and Real Estate Markets", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "RE2701 Urban Planning\nRE3703 Advanced Real Estate Economics", + "corequisite": "" + }, + { + "moduleCode": "RE5000", + "title": "Dissertation", + "moduleCredit": 8, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RE5001", + "title": "Real Estate Development", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RE5003", + "title": "Real Estate Investment", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RE5004", + "title": "Real Estate Economics", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RE5005", + "title": "Real Estate Finance", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RE5006", + "title": "Portfolio and Asset Management", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RE5009", + "title": "Commercial Real Estate Appraisal", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RE5011", + "title": "International Field Study", + "moduleCredit": 8, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RE5013", + "title": "Urban Policy & Real Estate Markets", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RE5014", + "title": "Real Estate Investment Trusts & Property Funds", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RE5015", + "title": "Geographic Information Systems (GIS) and Cartography", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RE5016", + "title": "Real Estate Securitisation", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RE5017", + "title": "Real Estate Case Study", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RE5018", + "title": "Statutory Valuation", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "RE5009 Commercial Real Estate Appraisal", + "corequisite": "" + }, + { + "moduleCode": "RE5770", + "title": "Graduate Seminar", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RE6004", + "title": "Research Methodology in Real Estate", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RE6005", + "title": "Real Estate Economics Research Seminar", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RE6006", + "title": "Real Estate Finance Seminar", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RE6007", + "title": "Research Topics in Real Estate", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RE6008", + "title": "Urban Planning and Development Seminar", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PhD students with urban planning background", + "corequisite": "" + }, + { + "moduleCode": "RE6770", + "title": "Phd Seminar", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RS4000", + "title": "Urop", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RY2000", + "title": "Oral And Dental Radiology", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RY3000", + "title": "Dental Radiology", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "RY4000", + "title": "Dental Radiology", + "moduleCredit": 1, + "department": "FoD Dean's Office", + "faculty": "Dentistry", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SA4101", + "title": "Software Analysis and Design", + "moduleCredit": 6, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SA4102", + "title": "Enterprise Solutions Design and Development", + "moduleCredit": 8, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SA4103", + "title": "Internet Application Development", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SA4104", + "title": "Digital Product Management", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SA4105", + "title": "Web Application Development", + "moduleCredit": 6, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SA4106", + "title": "AD Project", + "moduleCredit": 6, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SA4107", + "title": "Industrial Attachment Project", + "moduleCredit": 12, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SA4108", + "title": "Mobile Application Development", + "moduleCredit": 8, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SA4109", + "title": "Advanced Web Development", + "moduleCredit": 8, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Have passed the following two compulsory GDipSA modules:\n�� SA4102: Programming and .NET Development.\n�� SA4105: Java Programming.", + "corequisite": "" + }, + { + "moduleCode": "SA4109A", + "title": "Advanced Web Development", + "moduleCredit": 8, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Have passed the following two compulsory GDipSA modules:\n- SA4102: Programming and .NET Development.\n- SA4105: Java Programming.", + "corequisite": "" + }, + { + "moduleCode": "SC1101E", + "title": "Making Sense of Society", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC2101", + "title": "Methods of Social Research", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC2202", + "title": "Sociology of Work", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC2204", + "title": "Social Inequalities : Who Gets Ahead?", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC2205", + "title": "Sociology of Family", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC2206", + "title": "Culture & Society", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC2207", + "title": "Peoples & Cultures of Southeast Asia", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC2208", + "title": "Baby or No Baby: Population Dynamics at a Crossroads", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC2209", + "title": "Money, Business and Social Networks", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC2210", + "title": "Sociology of Popular Culture", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC2211", + "title": "Medical Sociology", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2, + 4 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC2212", + "title": "Sociology of Deviance", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 4 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC2213", + "title": "Childhood and Youth", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC2214", + "title": "Media and Culture", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "IF2214", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC2215", + "title": "The Sociology of Food", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 4 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC2216", + "title": "Emotions and Social Life", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC2217", + "title": "Sociology of Tourism", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC2218", + "title": "Anthropology and the Human Condition", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC2220", + "title": "Gender Studies", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC2221", + "title": "Humans and Natures", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC2222", + "title": "Sports and Society", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC2224", + "title": "Visual Anthropology Field-School", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC2225", + "title": "The Social Life of Art", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC2226", + "title": "Sociology of Mental Health", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SC1101E Making Sense of Society", + "corequisite": "" + }, + { + "moduleCode": "SC2227", + "title": "Sociology of Religion", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC2880A", + "title": "Singapore: The Social Experiment", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC3101", + "title": "Social Thought & Social Theory", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "EU3224", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC3202", + "title": "From Modernization to Globalization", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC3203", + "title": "Race and Ethnic Relations", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC3204", + "title": "Sociology of Education", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC3205", + "title": "Sociology of Power:Who Gets to Rule?", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC3206", + "title": "Urban Sociology", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC3207", + "title": "Cultures of Kinship", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC3208", + "title": "Religion in Society & Culture", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC3209", + "title": "Data Analysis in Social Research", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SC2101 or GL2104", + "corequisite": "" + }, + { + "moduleCode": "SC3211", + "title": "Science, Technology & Society", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC3212", + "title": "Southeast Asia in a Globalizing World", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC3213", + "title": "Visual Ethnography: Theory and Practice", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "IF3213", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC3214", + "title": "Sociology of Life Course and Ageing", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC3215", + "title": "Law and Society", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC3216", + "title": "Self and Society", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC3219", + "title": "Sexuality in Comparative Perspective", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC3220", + "title": "Ritual, Performance and Symbolic Action", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC3221", + "title": "Qualitative Inquiry", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC3222", + "title": "Social Transformations in Modern China", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC3223", + "title": "Visual Culture: Seeing and Representing", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC3225", + "title": "Social Capital", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC3226", + "title": "Markets and Society", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC3227", + "title": "Modernity and Social Change", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC3228", + "title": "Senses and Society", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC3229", + "title": "Comparing Deviance: Perverts & Scandalous Improprieties", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC3230", + "title": "Volunteer Workforce", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC3550", + "title": "Sociology Internship", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 3, + 4 + ], + "preclusion": "Any other XX3550 internship modules\n(Note: Students who change major may not do a second internship in their new major)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students should have:\n- Completed at least 60 MCs in total (about 3 semesters), including 24 MCs in Sociology (6 modules), and declared Sociology as their Major\n(including as Second Major).\n- Completed SC1101E Making Sense of Society and SC2101 Social Research Methods.", + "corequisite": "" + }, + { + "moduleCode": "SC3551", + "title": "FASS Undergraduate Research Opportunity (UROP)", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "Students must:\nhave declared a Major, completed a minimum of 24 MCs in that Major, and have a CAP of at least 3.20.", + "corequisite": "" + }, + { + "moduleCode": "SC4101", + "title": "Practising Anthropology and Sociology", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in SC with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SC4201", + "title": "Contemporary Social Theory", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SC, or 28MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SC, or 28MCs in PS or 28 MCs in GL/GL recognised non‐language modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SC4202", + "title": "Reading Ethnographies", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in SC or 28 MCs in MS, with a minimum CAP of 3.20 or be on the\nHonours track.", + "corequisite": "" + }, + { + "moduleCode": "SC4203", + "title": "Sociology of Organizations", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SC, or 28MCs in PS, or 28 MCs in GL/GL recognised non-language modules with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SC, or 28MCs in PS with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SC4204", + "title": "Social Policy & Social Planning", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SC or 28 MCs in GL/GL recognised non-language modules with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SC with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SC4205", + "title": "Sociology of Language & Communication", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SC or 28MCs in GL/GL recognised non-language modules with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SC with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SC4206", + "title": "Urban Anthropology", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 M4Cs in SC or 28MCs in GL/GL recognised non-language modules with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SC with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SC4209", + "title": "Interpretive Sociology", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in SC with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SC4210", + "title": "Sociology of Migration", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SC or 28MCs in GL/GL recognised non-language modules with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SC with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SC4211", + "title": "Tourism and Culture: A Global Perspective", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in SC with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SC4212", + "title": "Social Memory", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SC or 28MCs in GL/GL recognised non-language modules with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SC with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SC4213", + "title": "Qualitative Data Collection", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012-2014:\nCompleted 80 MCs, including 28 MCs in SC or in EU/LA (French/German)/recognised modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2015 onwards:\nCompleted 80 MCs, including 28 MCs in SC or in EU/LA (French/German/Spanish)/recognised modules, with a\nminimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SC4217", + "title": "Social Movements and Collective Behaviour", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SC, or 28MCs in PS, or 28MCs in GL/GL recognised non-language modules with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SC, or 28MCs in PS with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SC4218", + "title": "Religions, Secularity, Post-Secularity", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SC, or 28 MCs in PS, or 28 MCs in GL/GL recognised non-language modules with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SC, or 28 MCs in PS with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SC4219", + "title": "Social Origins and Consequences of Financial Crises", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SC or 28MCs in GL/GL recognised non-language modules with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SC with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SC4220", + "title": "Aging and Health", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SC or 28MCs in GL/GL recognised non-language modules with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SC with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SC4221", + "title": "Comparative Analysis of Human Rights", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "SC4208A Comparative Analysis of Human Rights", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SC or 28MCs in GL/GL recognised non-language modules with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SC with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SC4222", + "title": "Body and Society", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "SC4208B Body and Society", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in SC with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SC4223", + "title": "Health and Social Behaviour", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "SC4214A Health and Social Behaviour", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SC or 28MCs in GL/GL recognised non-language modules with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SC with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SC4224", + "title": "Welfare and Social Justice", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "SC4215D Welfare and Social Justice", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SC or 28MCs in GL/GL recognised non-language modules with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SC with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SC4225", + "title": "The Sociology of Cities and Development Planning in Asia", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SC or 28MCs in GL/GL recognised non-language modules with a minimum CAP of 3.20 or be on the Honours track\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SC with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SC4226", + "title": "Cultural Production: Power, Voice, Policies", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SC or 28MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SC, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SC4227", + "title": "Gender, Sex and Power", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in SC with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SC4228", + "title": "Making Sense of Violence", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SC or 28 MCs in GL or GL recognised non-language modules with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SC with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SC4401", + "title": "Honours Thesis", + "moduleCredit": 15, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "SC4660", + "attributes": [ + false, + false, + false, + false, + true, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2015 and before:\nCompleted 110 MCs including 60 MCs of SC major requirements with a minimum SJAP of 4.00 and CAP of 3.50. Students may seek a waiver of the SJAP pre-requisite from the department if they have a minimum CAP of 4.25 after completing 110 MCs.\n\nCohort 2016 onwards:\nCompleted 110 MCs including 44 MCs of SC major requirements with a minimum SJAP of 4.00 and CAP of 3.50. Students may seek a waiver of the SJAP pre-requisite from the department if they have a minimum CAP of 4.25 after completing 110 MCs.", + "corequisite": "" + }, + { + "moduleCode": "SC4660", + "title": "Independent Study", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "SC4401", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in SC with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in SC with a minimum CAP of 3.20", + "corequisite": "" + }, + { + "moduleCode": "SC4880", + "title": "Selected Topics in Socio'gy & Anthrop'gy", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "SC4208 Selected Topics in Sociology and Anthropology", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in SC with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SC4880A", + "title": "Communication and Social Structure", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SC or 28MCs in GL/GL recognised non-language modules with a minimum CAP of 3.20 or be on the Honours track\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SC with a minimum CAP of 3.20 or be on the Honours track", + "corequisite": "" + }, + { + "moduleCode": "SC4880B", + "title": "Advanced Sociological Analysis of Singapore Society", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SC or 28 MCs in GL/GL recognised non-language modules with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SC with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SC4881", + "title": "Selected Topics in Health & Society", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "SC4214 Selected Topics in Health and Society", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SC or 28 MCs in GL or GL recognised non-language modules with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SC with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SC4882", + "title": "Issues in State and Society", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "SC4215 Issues in State and Society", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in SC with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SC4882A", + "title": "Perspectives on State & Society", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "SC4215A Perspectives on State and Society", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80MCs, including 28MCs in SC or 28MCs in PS or 28MCs in GL/GL recognised non-language modules with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80MCs, including 28MCs in SC or 28MCs in PS with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SC4882B", + "title": "Citizenship, Nation and Globalization", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "SC4215B Citizenship, Nation and Globalization", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SC, or 28MCs in PS, or 28MCs in GL/GL recognised non-language modules with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SC, or 28MCs in PS with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SC4882C", + "title": "State, Governance and Governmentality", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "SC4208E State, Governance and Governmentality", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SC or 28MCs in GL/GL recognised non-language modules with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SC with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SC4883", + "title": "Selected Topics in Law and Justice", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "SC4216 Selected Topics in Law and Justice", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SC, or 28MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SC, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SC5101", + "title": "Graduate Research Methods", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "SC6101", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC5101R", + "title": "Graduate Research Methods", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC5102", + "title": "Quantitative Data Analysis", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "SC6101 (obsolete)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC5102R", + "title": "Quantitative Data Analysis", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "SC6101 (obsolete)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC5103", + "title": "Qualitative Data Analysis", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC5103R", + "title": "Qualitative Data Analysis", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC5205", + "title": "Social Policy Analysis", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC5209", + "title": "Sociology of Everyday Life", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC5209R", + "title": "Sociology of Everyday Life", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC5215", + "title": "The Practice of Visual Ethnography", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC5215R", + "title": "The Practice of Visual Ethnography", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC5216", + "title": "Crime, Criminal Behaviour and Criminal Justice", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "SC5211A", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC5218", + "title": "Population Studies", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC5218R", + "title": "Population Studies", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "SC5211C", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC5219", + "title": "Tourism: Culture, Society and the Environment", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "SC5211D", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC5219R", + "title": "Tourism: Culture, Society and the Environment", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "SC5211D", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC5223", + "title": "Social Networks", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "SC6229", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC5223R", + "title": "Social Networks", + "moduleCredit": 5, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "SC6229", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC5770", + "title": "Graduate Research Seminar for Masters students", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "SC6770", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC6102", + "title": "Sociological Theory", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC6212", + "title": "Global Transformations", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "SC6211A", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC6213", + "title": "Families in Transition", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC6214", + "title": "Gender, Culture and Society", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC6215", + "title": "Religion in the Contemporary World", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC6216", + "title": "The Anthropological Perspective", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC6217", + "title": "Identities & Nation State", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC6220", + "title": "Conflict/Power in Comparative Perspective", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC6222", + "title": "Topics in Transnationalism", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC6223", + "title": "The Government of Life in Contemporary Capitalism", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC6224", + "title": "Producing Ethnography", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC6225", + "title": "Kinship, Relatedness and Personhood", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC6226", + "title": "Asia as an Area of Ethnographic Study", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC6227", + "title": "Economy and Society", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC6228", + "title": "Social Stratification and Mobility", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC6230", + "title": "Institutional Varieties and Asian Capitalisms", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC6660", + "title": "Independent Study", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "Sociology Masters students are not allowed to read SC6660 to fulfill their coursework requirement. If they wish to read SC6660 in addition to the required coursework component, permission must first be sought from the Department’s Graduate Chair.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC6770", + "title": "Graduate Research Seminar", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SC6780", + "title": "Professional Writing in Sociology and Anthropology", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SC5101 Graduate Research Methods\nSC5102 Quantitative Data Analysis\nSC5103 Qualitative Data Analysis\nSC6102 Sociological Theory and Social Reality\nSC6770 Graduate Research Seminar\nCompleted and passed Comprehensive Exams", + "corequisite": "" + }, + { + "moduleCode": "SC6880", + "title": "Topics in Social Organization", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "SC5880 (to preclude current students who have done the module)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SDM5001", + "title": "Systems Architecture", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SDM5002", + "title": "Systems Engineering", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SDM5003", + "title": "Knowledge Management", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SDM5004", + "title": "Systems Engineering Project Management", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "IE5208 Systems Approach to Project Management\nDTS5720 Systems Engineering Project Management", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SDM5010", + "title": "Model-Based Systems Engineering", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "DTS5725 Model-Based Systems Engineering", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SDM5990", + "title": "Sdm Research Project", + "moduleCredit": 8, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "MT5910 LaunchPad: Experiential Entrepreneurship & MT5900 MOT Research Project", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE1101E", + "title": "Southeast Asia: A Changing Region", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "GEK1008, GEM1008K, SSA1202, SS1203SE", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE2210", + "title": "Popular Culture in Southeast Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "SE4215", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE2211", + "title": "Southeast Asian Social History", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE2212", + "title": "Cities and Urban Life in Southeast Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE2213", + "title": "Politics in Southeast Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "SE2281 or SSA2207 or SS2207SE, SC2207", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE2214", + "title": "Arts of Southeast Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE2217", + "title": "War and Southeast Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE2218", + "title": "Changing Economic Landscape of SE Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 4 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE2218T", + "title": "Changing Economic Landscape of Southeast Asia", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE2219", + "title": "Culture and Power in Southeast Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE2221", + "title": "Old and New Music in Southeast Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE2222", + "title": "Southeast Asia in Context", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE2223", + "title": "Doing Research In Southeast Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE2224", + "title": "Unmasked! An Introduction to Traditional Dance in SEA", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE2225", + "title": "Forbidden Pleasures: Vice in Southeast Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE2226", + "title": "Moro Peoples of the Philippines", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE2227", + "title": "Southeast Asian Gardens: History and Symbolism", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE2229", + "title": "Southeast Asia as a Field of Study", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SE1101E: Southeast Asia: A Changing Region", + "corequisite": "" + }, + { + "moduleCode": "SE2660", + "title": "Independent Study", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Students should: have completed a minimum of 12 MC in Southeast Asian Studies; and have declared Southeast Asian Studies as their Major. read or waived from: LAB 1201 & LAB 2201; LAT 1201 & LAT2201; or LAV1201 and LAV2201", + "corequisite": "" + }, + { + "moduleCode": "SE2880", + "title": "Topics in Southeast Asian Studies", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE2880A", + "title": "Southeast Asia's Cultural Mosaic", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 4 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE3210", + "title": "Studies in Southeast Asian Arts", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE3211", + "title": "Religion, Society & Politics in SE Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE3214", + "title": "Heritage and Heritagescapes in Southeast Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE3216", + "title": "Migration, Diaspora and Refugees in Southeast Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE3218", + "title": "Industrialising Singapore and SE Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "SE2215", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE3218T", + "title": "Industrialising Singapore and SE Asia", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "SE2215", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE3219", + "title": "Country Studies: Island Southeast Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE3220", + "title": "Country Studies: Mainland Southeast Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE3221", + "title": "Traditional Music in a SE Asian Country", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE3222", + "title": "Gender in Southeast Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE3224", + "title": "Thai Drawing and Painting", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "As the emphasis of the class is on practical approaches to art as a way of appreciating and understanding Southeast Asian Studies, students should ideally have genuine interests in drawing, painting, and the creative arts.", + "corequisite": "" + }, + { + "moduleCode": "SE3226", + "title": "Hard at work: the changing face of labour in SEA", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE3227", + "title": "Maritime History and Culture of Southeast Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE3228", + "title": "The Universe Unraveling: Narratives of War in Indochina", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE3230", + "title": "Seen and Unseen: Explorations in Balinese Theatre", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE3231", + "title": "Colonial Southeast Asia Through European Literature", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE3232", + "title": "Death and Dying in Southeast Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE3233", + "title": "Martial Arts in Southeast Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "SE3880B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE3234", + "title": "Sea, Islands, Vessels: A Voyage of Exploration", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE3235", + "title": "Southeast Asia Laboratory: Power and Markets", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE3550", + "title": "Southeast Asian Studies Internship", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "Any other XX3550 module. [Note: Students who change major may not do a second internship in their new major)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students should: have completed a minimum of 24 MC in Southeast Asian Studies; and have declared Southeast Asian Studies as their Major.", + "corequisite": "" + }, + { + "moduleCode": "SE3660", + "title": "Independent Study", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Students should: have completed a minimum of 24 MC in Southeast Asian Studies; and have declared Southeast Asian Studies as their Major. read or waived from: LAB 1201 & LAB 2201; LAT 1201 & LAT2201; or LAV1201 and LAV2201", + "corequisite": "" + }, + { + "moduleCode": "SE3711", + "title": "Department exchange module", + "moduleCredit": 1, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE3712", + "title": "Department exchange module", + "moduleCredit": 1, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE3880", + "title": "Topics in Southeast Asian Studies", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE3880B", + "title": "Martial Arts in Southeast Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE4101", + "title": "Southeast Asia Studies: Theory and Practice", + "moduleCredit": 5, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "All NON SE major and NON GL major students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80MCs, including 28MCs in SE, or 28MCs in GL or GL recognised non-language modules with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80MCs, including 28MCs in SE with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SE4201", + "title": "Southeast Asian Languages as Research Tools", + "moduleCredit": 5, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(1) Level 6 module in a Southeast Asian language (or an equivalent level of skills in any Southeast Asian language, including those not taught at NUS).\n(2) Permission of lecturer.\n(3) Completed 80MCs, including 28MCs in SE, with a minimum CAP of 3.20 or be on Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SE4210", + "title": "Ancient Kingdoms of Southeast Asia", + "moduleCredit": 5, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SE or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SE, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SE4212", + "title": "Elites of Southeast Asia", + "moduleCredit": 5, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SE or 28 MCs in SN or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SE or 28 MCs in SN, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SE4217", + "title": "Southeast Asia in the Global Economy", + "moduleCredit": 5, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in SE or 28MCs in SC or 28MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SE4218", + "title": "Majorities and Minorities in SE Asia", + "moduleCredit": 5, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SE or 28 MCs in MS or 28 MCs in SN or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SE or 28 MCs in MS or 28 MCs in SN, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SE4220", + "title": "Special Studies on Southeast Asia", + "moduleCredit": 5, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in SE, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SE4221", + "title": "Southeast Asian Postcolonialism", + "moduleCredit": 5, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in SE or 28 MCs in MS or 28 MCs in SN or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SE4223", + "title": "Knowledge, Power and Colonialism in Southeast Asia", + "moduleCredit": 5, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SE or 28 MCs in MS or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SE or 28 MCs in MS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SE4225", + "title": "The Cold War in Southeast Asia", + "moduleCredit": 5, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SE or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SE, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SE4226", + "title": "Doing Ethnography in Southeast Asia", + "moduleCredit": 5, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SE or 28 MCs in SC or 28 MCs in GL/GL recognised non language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SE or 28 MCs in SC with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SE4227", + "title": "Nationalism in Southeast Asia", + "moduleCredit": 5, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SE or 28 MCs in PS or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SE or 28 MCs in PS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SE4228", + "title": "Contentious Politics in Southeast Asia", + "moduleCredit": 5, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SE or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SE, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SE4401", + "title": "Honours Thesis", + "moduleCredit": 15, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "SE4660", + "attributes": [ + false, + false, + false, + false, + true, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2015 and before:\nCompleted 110 MCs including 60 MCs of SE major requirements with a minimum CAP of 3.50.\n\nCohort 2016 onwards:\nCompleted 110 MCs including 44 MCs of SE major requirements with a minimum CAP of 3.50.", + "corequisite": "" + }, + { + "moduleCode": "SE4660", + "title": "Independent Study", + "moduleCredit": 5, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "SE4401", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012-2015:\nCompleted 100 MCs, including 60 MCs in SE, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nCompleted 100 MCs, including 44 MCs in SE, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "SE5151", + "title": "Approaches to the Study of Southeast Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE5201", + "title": "Supervised Research Project", + "moduleCredit": 8, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "SE5660 Independent Study", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "i. Approval of Departmental Graduate Coursework Selection Committee.\nii. Must achieve “B” grade in SE5151.\niii. Must have completed at least 4 modules with minimum CAP of 4.0.", + "corequisite": "" + }, + { + "moduleCode": "SE5211", + "title": "Socio Economic History of Southeast Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE5211R", + "title": "Socio Economic History of Southeast Asia", + "moduleCredit": 5, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE5213", + "title": "Revolt and Revolution in Southeast Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE5213R", + "title": "Revolt and Revolution in Southeast Asia", + "moduleCredit": 5, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE5219", + "title": "Technopolitics in Southeast Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE5219R", + "title": "Technopolitics in Southeast As", + "moduleCredit": 5, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE5221", + "title": "Landscapes of Southeast Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "GE5214", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE5221R", + "title": "Landscapes of Southeast Asia", + "moduleCredit": 5, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE5222", + "title": "The Arts in Contemporary Southeast Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE5222R", + "title": "The Arts in Contemporary Southeast Asia", + "moduleCredit": 5, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE5224", + "title": "Religion and Society in Southeast Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE5224R", + "title": "Religion and Society in Southeast Asia", + "moduleCredit": 5, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE5226", + "title": "Race and Ethnicity in Southeast Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE5226R", + "title": "Race and Ethnicity in Southeast Asia", + "moduleCredit": 5, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE5229", + "title": "Anthropological Approaches to Se Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE5229R", + "title": "Anthropological Approaches to SE Asia", + "moduleCredit": 5, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE5232", + "title": "Southeast Asia and Regionalism", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "IZ5211", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE5232R", + "title": "Southeast Asia and Regionalism", + "moduleCredit": 5, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE5233", + "title": "Economies of Southeast Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "IZ5103, SE6233", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For SE Honours students with a minimum CAP of 3.20", + "corequisite": "" + }, + { + "moduleCode": "SE5233R", + "title": "Economies of Southeast Asia", + "moduleCredit": 5, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "IZ5103, SE6233", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For SE Honours students with a minimum CAP of 3.20", + "corequisite": "" + }, + { + "moduleCode": "SE5235", + "title": "Infrastructures and Mobilities in Southeast Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE5241", + "title": "Country Studies: Mainland Southeast Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For SE Honours students with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "SE5241R", + "title": "Country Studies: Mainland Southeast Asia", + "moduleCredit": 5, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For SE Honours students with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "SE5242", + "title": "Country Studies: Thailand", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For SE Honours students with a minimum CAP of 3.20", + "corequisite": "" + }, + { + "moduleCode": "SE5242R", + "title": "Country Studies: Thailand", + "moduleCredit": 5, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For SE Honours students with a minimum CAP of 3.20", + "corequisite": "" + }, + { + "moduleCode": "SE5243", + "title": "Country Studies: Indonesia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE5243R", + "title": "Country Studies: Indonesia", + "moduleCredit": 5, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE5244", + "title": "Country Studies: The Philippines", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE5244R", + "title": "Country Studies: The Philippines", + "moduleCredit": 5, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE5245", + "title": "Country Studies: Malaysia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For SE Honours students with a minimum CAP of 3.20", + "corequisite": "" + }, + { + "moduleCode": "SE5245R", + "title": "Country Studies: Malaysia", + "moduleCredit": 5, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For SE Honours students with a minimum CAP of 3.20", + "corequisite": "" + }, + { + "moduleCode": "SE5246", + "title": "Country Studies: Myanmar", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For SE Honours students with a minimum CAP of\n3.20", + "corequisite": "" + }, + { + "moduleCode": "SE5246R", + "title": "Country Studies: Myanmar", + "moduleCredit": 5, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For SE Honours students with a minimum CAP of 3.20", + "corequisite": "" + }, + { + "moduleCode": "SE5247", + "title": "Country Studies: Vietnam", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE5247R", + "title": "Country Studies: Vietnam", + "moduleCredit": 5, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE5263", + "title": "Cultural Resource Management in Se Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE5263R", + "title": "Cultural Resource Management in Se Asia", + "moduleCredit": 5, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE5264", + "title": "Archaeology and Art of Ancient Southeast Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE5264R", + "title": "Archaeology and Art of Ancient Southeast Asia", + "moduleCredit": 5, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE5294", + "title": "The Politics of Environment in Se Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "GE5215", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE5294R", + "title": "The Politics of Environment in Se Asia", + "moduleCredit": 5, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE5660", + "title": "Independent Study", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "SE5201 Supervised Research Project", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE5880", + "title": "Topics in Southeast Asian Studies", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE6214", + "title": "Studies in Southeast Asian Politics", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE6219", + "title": "Varieties of the State in Southeast Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE6220", + "title": "Approaches to Southeast Asian Arts", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE6221", + "title": "Gender and Sexuality in Southeast Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE6227", + "title": "Postcolonialism in Southeast Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE6233", + "title": "Economic Development Issues in Se Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE6251", + "title": "Special Readings in a SE Asian Language", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "SE6660 Independent Study Module", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must be enroled in the MA or Ph.D Research programmes.", + "corequisite": "" + }, + { + "moduleCode": "SE6265", + "title": "Studies on Early Southeast Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE6660", + "title": "Independent Study", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE6770", + "title": "Graduate Research Seminar", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SE6880", + "title": "Topics in Southeast Asian Studies", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG3001", + "title": "C++ Programming", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG3002", + "title": "Windows Programming", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG3003", + "title": "Basic Java Programming", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG3004", + "title": "Human Computer Interface", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG3202", + "title": "Windows Programming", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG3204", + "title": "Human Computer Interface", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG4001", + "title": "Basic Software Engineering Discipline", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG4002", + "title": "Mobile Wireless Application Development", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG4003", + "title": "Advanced Java Programming", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG4004", + "title": "Developing Web Services", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG4005", + "title": "Information Systems Security", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG4006", + "title": "Enterprise Integration", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG4007", + "title": "Mobile Wireless Solution Design", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG4008", + "title": "Grid Computing", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG4009", + "title": "Embedded Systems Development", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG4010", + "title": "Enterprise .NET I", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "While there is no module pre-requisites, the student is expected to have knowledge in the following topics: \n- Basic Software Engineering\n- Object Oriented Analysis and Design\n- Working knowledge of .NET and C# language", + "corequisite": "" + }, + { + "moduleCode": "SG4011", + "title": "Cloud Computing", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "While there is no module pre-requisites, the student is expected to have some Working Knowledge on Enterprise Applications", + "corequisite": "" + }, + { + "moduleCode": "SG4101", + "title": "Basic Software Engineering Discipline", + "moduleCredit": 8, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG4202", + "title": "Mobile Wireless Application Development", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG4204", + "title": "Developing Web Services", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG4205", + "title": "Information Systems Security", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG4206", + "title": "Enterprise Integration", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG4207", + "title": "Mobile Wireless Solution Design", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG4208", + "title": "Grid Computing", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG4209", + "title": "Embedded Systems Development", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG4210", + "title": "Enterprise .NET", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "While there is no module pre-requisites, the student is expected to have knowledge in the following topics:\n- Basic Software Engineering\n- Object Oriented Analysis and Design\n- Working knowledge of .NET and C# language", + "corequisite": "" + }, + { + "moduleCode": "SG4405", + "title": "Software Analysis and Design Project", + "moduleCredit": 2, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5001", + "title": "Oo Analysis & Design", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5002", + "title": "Software Project Management", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5003", + "title": "Software Quality Management", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5004", + "title": "Software Project Financial Management", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5005", + "title": "Software Metrics & Process Improvement", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5006", + "title": "Software Reliability", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5007", + "title": "Managing IT Outsourcing & Subcontracting", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5008", + "title": "Object Oriented Design Patterns", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5009", + "title": "Enterprise Java", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5010", + "title": "Strategic It Planning", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5011", + "title": "Business Process Management", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5012", + "title": "Architecting Reliable Systems", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5013", + "title": "Software Entrepreneurship", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5014", + "title": "Software Requirements Engineering", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5015", + "title": "Enterprise Architecture", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5016", + "title": "Business Transformation Through Technology Innovation", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5017", + "title": "Software Product Line Engineering", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5018", + "title": "Advanced Topics in Software Process Improvement", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5019", + "title": "It Law", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5020", + "title": "Research On Advanced It Topics 1", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5021", + "title": "Research on Advanced IT Topics II", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5022", + "title": "IT Service Management", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5023", + "title": "Enterprise Resource Planning 1", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5024", + "title": "Enterprise Resource Planning II", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5025", + "title": "Architecting Software Solutions", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "While there is no module pre-requisites, the student is\nexpected to have knowledge in the following topics:\n- Java (preferred) or .NET Programming\n- Object Oriented Design", + "corequisite": "" + }, + { + "moduleCode": "SG5026", + "title": "Enterprise .NET II", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "While there is no module pre-requisites, the student is expected to have knowledge in the following topics:\n- Basic Software Engineering\n- Object Oriented Analysis and Design\n- Posses good design & development knowledge\nin .NET equivalent to the coverage of SG5026", + "corequisite": "" + }, + { + "moduleCode": "SG5027", + "title": "Open Source for the Enterprise", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5028", + "title": "Service Innovation", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5101", + "title": "Software Analysis & Design", + "moduleCredit": 8, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SG4101 BASIC SOFTWARE ENGINEERING DISCIPLINE", + "corequisite": "" + }, + { + "moduleCode": "SG5102", + "title": "Software Project Management", + "moduleCredit": 8, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5103", + "title": "Software Quality Management", + "moduleCredit": 8, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5116", + "title": "Software Engineering Project", + "moduleCredit": 12, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5117", + "title": "Software Engineering Overseas Practicum", + "moduleCredit": 12, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "Students that select SG5116 Software Engineering Project cannot also select the Software Engineering Overseas Practicum and vice versa.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Before commencing the Software Engineering Overseas Practicum, the students must successfully complete the four MTech SE core courses:\n\nSG4101 Basic Software Engineering Discipline\nSG5101 Object Oriented Analysis and Design\nSG5102 Software Project Management\nSG5103 Software Quality Management\n\nIn addition, they must demonstrate in the electives they have taken and/or in their work experience that they have the technical background for the project being offered by NOC.", + "corequisite": "" + }, + { + "moduleCode": "SG5118", + "title": "Individual Software Practicum", + "moduleCredit": 12, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1, + 2 + ], + "preclusion": "Students that select SG5116 Software Engineering Project cannot also select the Individual Software Practicum and vice versa.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Before commencing the Individual Software Practicum, the students must successfully complete the four MTech SE core courses:\nSG4101 Basic Software Engineering Discipline\nSG5101 Object Oriented Analysis and Design\nSG5102 Software Project Management\nSG5103 Software Quality Management\nIn addition, they must demonstrate in the electives they have taken and/or in their work experience that they have the technical background for the available projects.", + "corequisite": "" + }, + { + "moduleCode": "SG5204", + "title": "Software Project Financial Management", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5205", + "title": "Software Metrics & Process Improvement", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5206", + "title": "Software Reliability", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5207", + "title": "Managing IT Outsourcing & Subcontracting", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5208", + "title": "Object Oriented Design Patterns", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5209", + "title": "Enterprise Java", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5210", + "title": "Strategic It Planning", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5211", + "title": "Business Process Management", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5214", + "title": "Software Requirements Engineering", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5218", + "title": "Enterprise IT Governance", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5219", + "title": "It Law", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5220", + "title": "Independent Work 1", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5221", + "title": "Independent Work 2", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5222", + "title": "IT Service Management", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5223", + "title": "Enterprise Resource Planning 1", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5224", + "title": "Enterprise Resrce Planning II", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5225", + "title": "Architecting Software Solutions", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "While there is no module pre-requisites, the student is\nexpected to have knowledge in the following topics:\n- Java (preferred) or .NET Programming\n- Object Oriented Design", + "corequisite": "" + }, + { + "moduleCode": "SG5226", + "title": "Enterprise .NET II", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "While there is no module pre-requisites, the student is expected to have knowledge in the following topics:\n- Basic Software Engineering\n- Object Oriented Analysis and Design\n- Posses good design & development knowledge\nin .NET equivalent to the coverage of SG5026", + "corequisite": "" + }, + { + "moduleCode": "SG5227", + "title": "Open Source for the Enterprise", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5228", + "title": "Digital Innovation and Design", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5229", + "title": "Software Maintenance and Evolution", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "The course pre-requisite would be a professional competency in a contemporary programming language such as C#, Java or C++.", + "corequisite": "" + }, + { + "moduleCode": "SG5230", + "title": "Software Prototyping", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "The course pre-requisite would be a professional competency in a contemporary programming language such as C#, Java or C++.", + "corequisite": "" + }, + { + "moduleCode": "SG5231", + "title": "Agile Software Project Management", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5232", + "title": "Advanced Software Estimation", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5233", + "title": "Internet of Things Technology", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "There are no hard prerequisites in terms of existing courses, but students are expected to have knowledge of the Python programming language. Online resources will be provided to enable students to acquire this knowledge through self-study prior to the start of the course.", + "corequisite": "" + }, + { + "moduleCode": "SG5234", + "title": "Digital User Experience Design", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "There are no hard prerequisites in terms of existing courses, but students are expected to have basic knowledge of software development techniques and the software development lifecycle.", + "corequisite": "" + }, + { + "moduleCode": "SG5235", + "title": "Scaling Agile", + "moduleCredit": 4, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must know basics of Agile and must have read scrum primer or guide.", + "corequisite": "" + }, + { + "moduleCode": "SG5236", + "title": "Machine Learning for Software Engineers", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Programming skills.", + "corequisite": "" + }, + { + "moduleCode": "SG5237", + "title": "Secure Software Life Cycle", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "There are no hard prerequisites in terms of existing courses, but students are expected to have basic knowledge of software development techniques and the software development lifecycle.", + "corequisite": "" + }, + { + "moduleCode": "SG5238", + "title": "Architecting IOT Solutions", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5239", + "title": "Cloud Native Solution Design", + "moduleCredit": 3, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "SG4211: Cloud Computing", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "While there is no module pre-requisites, the student is\nexpected to have some Working Knowledge on Enterprise\nApplications", + "corequisite": "" + }, + { + "moduleCode": "SG5404", + "title": "Software Architecture and Design Assessment", + "moduleCredit": 2, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SG5405", + "title": "Software Architecture and Design Project", + "moduleCredit": 6, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5002", + "title": "Fundamentals in Industrial Safety", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "1 or 2 years of basic chemistry; some working experience", + "corequisite": "" + }, + { + "moduleCode": "SH5002C", + "title": "Fundamentals in Industrial Safety", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "1 or 2 years of basic chemistry; some working experience", + "corequisite": "" + }, + { + "moduleCode": "SH5003", + "title": "Fundamentals in Environmental Protection", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "Students who have obtained degrees or post-graduate diplomas in Environmental\nEngineering, Environmental Sciences or their equivalent", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5003C", + "title": "Fundamentals in Environmental Protection", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "Students who have obtained degrees or post-graduate diplomas in Environmental\nEngineering, Environmental Sciences or their equivalent", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5101", + "title": "Industrial Toxicology", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5101C", + "title": "Industrial Toxicology", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5102", + "title": "Occupational Ergonomics", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5102C", + "title": "Occupational Ergonomics", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5104", + "title": "Occupational Health", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5104C", + "title": "Occupational Health", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5105", + "title": "Noise and Other Physical Hazards", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5105C", + "title": "Noise and Other Physical Hazards", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5106", + "title": "Radiation", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5106C", + "title": "Radiation", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5107", + "title": "Industrial Ventilation", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5107C", + "title": "Industrial Ventilation", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5108", + "title": "Chemical Hazard Management", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "SH5004 Fundamentals in Industrial Hygiene", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5108C", + "title": "Chemical Hazard Management", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "SH5004 Fundamentals in Industrial Hygiene", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5109", + "title": "Biostatistics and Epidemiology", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5109C", + "title": "Biostatistics and Epidemiology", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5110", + "title": "Chemical Hazard Evaluation", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "SH5004: Fundamentals in Industrial Hygiene", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5110C", + "title": "Chemical Hazard Evaluation", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "SH5004: Fundamentals in Industrial Hygiene", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5201", + "title": "Hazard Identification & Evaluation Techniques", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5201C", + "title": "Hazard Identification and Evaluation Techniques", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5202", + "title": "Quantified Risk Analysis", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "SH5000 and SH5201", + "corequisite": "" + }, + { + "moduleCode": "SH5202C", + "title": "Quantified Risk Analysis", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "SH5000 and SH5201", + "corequisite": "" + }, + { + "moduleCode": "SH5203", + "title": "Emergency Planning", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5203C", + "title": "Emergency Planning", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5204", + "title": "Safety Engineering", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5204C", + "title": "Safety Engineering", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5205", + "title": "Incident Management", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "SH5203 – Emergency Planning", + "corequisite": "" + }, + { + "moduleCode": "SH5205C", + "title": "Incident Management", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "SH5203 – Emergency Planning", + "corequisite": "" + }, + { + "moduleCode": "SH5206", + "title": "Human Factors in Process Safety", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5206C", + "title": "Human Factors in Process Safety", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5401", + "title": "Safety, Health, Environment & Quality Management System", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "ESE5602 Environmental Management System", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5401C", + "title": "Safety, Health, Environment & Quality Management System", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "ESE5602 Environmental Management System", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5402", + "title": "Advanced Safety, Health & Environment Management", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5402C", + "title": "Advanced Safety, Health & Environment Management", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5403", + "title": "Independent Study", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "SH5404" + }, + { + "moduleCode": "SH5403C", + "title": "Independent Study", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "SH5404" + }, + { + "moduleCode": "SH5404", + "title": "Safety Health and Environmental Project", + "moduleCredit": 8, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "SH5403" + }, + { + "moduleCode": "SH5404C", + "title": "Safety Health and Environmental Project", + "moduleCredit": 8, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "SH5403" + }, + { + "moduleCode": "SH5666", + "title": "Industrial Safety, Health and Environment Practices", + "moduleCredit": 8, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5880", + "title": "Topics in Industrial Hygiene", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5880C", + "title": "Topics in Industrial Hygiene", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5881", + "title": "Topics in Process Safety", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5881C", + "title": "Topics in Process Safety", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5882", + "title": "Topics in Environment Protection", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SH5882C", + "title": "Topics in Environment Protection", + "moduleCredit": 4, + "department": "Chemical and Biomolecular Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SLP5101", + "title": "Normal Functioning 1 (Biosciences Foundation)", + "moduleCredit": 6, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SLP5102", + "title": "Normal Functioning 2 (Linguistics Foundation)", + "moduleCredit": 6, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SLP5103", + "title": "Professional Practice 1", + "moduleCredit": 4, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SLP5104", + "title": "Research Design and Statistics", + "moduleCredit": 4, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SLP5105", + "title": "Impaired Functioning - Children 1", + "moduleCredit": 4, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SLP5106", + "title": "Impaired Functioning - Adults 1", + "moduleCredit": 4, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SLP5107", + "title": "Impaired Functioning - Children 2", + "moduleCredit": 4, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SLP5108", + "title": "Impaired Functioning - Adults 2", + "moduleCredit": 4, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SLP5109", + "title": "Professional Practice 2", + "moduleCredit": 6, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SLP5110", + "title": "Intervention and Management - Children 1", + "moduleCredit": 4, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SLP5111", + "title": "Intervention and Management - Adults 1", + "moduleCredit": 4, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SLP5112", + "title": "Research Project 1", + "moduleCredit": 6, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SLP5113", + "title": "Professional Practice 3", + "moduleCredit": 6, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SLP 5101- SLP 5112 or equivalent with permission of the\nProgramme Director", + "corequisite": "" + }, + { + "moduleCode": "SLP5114", + "title": "Intervention and Management - Children 2", + "moduleCredit": 4, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SLP5115", + "title": "Intervention and Management - Adults 2", + "moduleCredit": 4, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SLP5116", + "title": "Research Project 2", + "moduleCredit": 8, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SLP5117", + "title": "Professional Practice Issues", + "moduleCredit": 4, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SLP5118", + "title": "Professional Practice 4", + "moduleCredit": 6, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SLP 5101- SLP 5117 or equivalent with permission of the\nProgramme Director", + "corequisite": "" + }, + { + "moduleCode": "SN1101E", + "title": "Discover South Asia: People, Culture, Development", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN2213", + "title": "Governance and Politics in South Asia", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "PS2247 South Asia: Politics and Foreign Policy", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN2232", + "title": "South Asia:Poverty, Inequality, Power", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "SN2212", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN2233", + "title": "Globalizing India: The Politics of Economic Change", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN2234", + "title": "Gender and Society in South Asia", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN2261", + "title": "The Emergence of Contemporary South Asia", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN2271", + "title": "Religion and Society in South Asia", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN2273", + "title": "Introduction to Indian Thought", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PH2204, GEK2027", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN2274", + "title": "South Asian Cultures: An Introduction", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN2275", + "title": "Contemporary Tamil Literature", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "SN2291", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Pass in 'AO' Level Tamil", + "corequisite": "" + }, + { + "moduleCode": "SN2276", + "title": "Islam: Society and Culture in South Asia", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN2277", + "title": "Indian Communities in Southeast Asia", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN2278", + "title": "Introduction to Sikhism", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN2279", + "title": "The Making of Modern India, 1856-1947", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN2280", + "title": "Marriage, Sex, Love in South Asia", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN2281", + "title": "Nations at Play: History of Sport in South Asia", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN2282", + "title": "Music in South Asia", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN2283", + "title": "China-India Interactions: Changing Perspectives", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN2284", + "title": "Making Sense of Regions in South Asia", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN3223", + "title": "International Relations of South Asia", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN3231", + "title": "South Asia and the World Economy", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN3232", + "title": "South Asia : Development, Issues, Debates", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN3261", + "title": "Exile, Indenture, IT: Global South Asians", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN3262", + "title": "The Struggle for India, 1920-1964", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "HY2228, HY3236, SN2261", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN3272", + "title": "Issues in Indian Philosophy", + "moduleCredit": 4, + "department": "Philosophy", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "PH3204", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN3274", + "title": "South Asian Cinema", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN3275", + "title": "Tamil Culture and Society", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Pass in O/A level Tamil or O Level Higher Tamil In Singapore or Pass in \nSecondary/Higher Secondary Tamil in India", + "corequisite": "" + }, + { + "moduleCode": "SN3276", + "title": "Introduction to Classical Indian Texts", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN3277", + "title": "South Asia:Field Studies", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed 8 MC of SN modules", + "corequisite": "" + }, + { + "moduleCode": "SN3278", + "title": "Rivers of India: Divinity & Sacred Space", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN3279", + "title": "Language, Culture and Identity in India", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN3281", + "title": "The Story of Indian Business", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN3282", + "title": "Violence and Visual Cultures in South Asia", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN3550", + "title": "Internship", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "Any other XX3550 internship modules (Note: Students who change majors may not do a second internship in their new major)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students should have completed a minimum of 24 MCs in SN coded and SN recognised modules; and have declared South Asian Studies as their Major", + "corequisite": "" + }, + { + "moduleCode": "SN3551", + "title": "FASS Undergraduate Research Opportunity (UROP)", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must:\nhave declared a Major, completed a minimum of 24 MCs in that Major, and have a CAP of at least 3.20.", + "corequisite": "" + }, + { + "moduleCode": "SN3880", + "title": "Topics in South Asian Studies", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SN1101E South Asia: People, Culture, Development", + "corequisite": "" + }, + { + "moduleCode": "SN3880A", + "title": "Art of India", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN4101", + "title": "Approaches to the Study of South Asia", + "moduleCredit": 5, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SN, or 28 MCs in SC or 28 MCs in GL or GL recognised non-language modules with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SN, or 28 MCs in SC with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SN4102", + "title": "Critical Debates in South Asian Studies", + "moduleCredit": 5, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in SN, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SN4221", + "title": "Regional Conflict & Cooperation in Asia", + "moduleCredit": 5, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SN or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SN, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SN4231", + "title": "Peasants and Capitalism in Asia", + "moduleCredit": 5, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SN or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SN, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SN4232", + "title": "South Asian Interregional Tourism", + "moduleCredit": 5, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SN or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SN, with a minimum CAP of 3.20 or be on the Honours track", + "corequisite": "" + }, + { + "moduleCode": "SN4233", + "title": "Social, Political and Economic Change in India", + "moduleCredit": 5, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SN or 28 MCs in SC or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SN or 28 MCs in SC, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SN4234", + "title": "Mapping Social Movements in India", + "moduleCredit": 5, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SN or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SN, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SN4261", + "title": "South and Southeast Asia: Early Contacts", + "moduleCredit": 5, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SN or 28 MCs in SC or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SN or 28 MCs in SC, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SN4262", + "title": "Hindutva Nationalism", + "moduleCredit": 5, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SN or 28 MCs in SC or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SN or 28 MCs in SCs, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SN4263", + "title": "Themes in Contemporary Indian History", + "moduleCredit": 5, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in SN, or 28 MCs in SC, or 28MCs of GL/GL recognised non-language modules with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in SN, or 28 MCs in SC with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SN4275", + "title": "South Asian Languages and Literatures", + "moduleCredit": 5, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in SN, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SN4276", + "title": "Epic Traditions in South- and SE-Asia", + "moduleCredit": 5, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in SN, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SN4401", + "title": "Honours Thesis", + "moduleCredit": 15, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "SN4660", + "attributes": [ + false, + false, + false, + false, + true, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2015 and before:\nCompleted 110 MCs including 60 MCs of SN major requirements with a minimum CAP of 3.50.\n\nCohort 2016 onwards:\nCompleted 110 MCs including 44 MCs of SN major requirements with a minimum CAP of 3.50.", + "corequisite": "" + }, + { + "moduleCode": "SN4660", + "title": "Independent Study", + "moduleCredit": 5, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "SN4401", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012-2015:\nCompleted 100 MCs, including 60 MCs in SN, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nCompleted 100 MCs, including 44 MCs in SN, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "SN4880", + "title": "Topics in South Asian Studies", + "moduleCredit": 5, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in SN, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SN5102", + "title": "South Asian Research Methodologies I", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN5103", + "title": "Contemporary India: Contexts & Narratives", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN5103R", + "title": "Contemporary India: Contexts & Narratives", + "moduleCredit": 5, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN5660", + "title": "Independent Study", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN5880", + "title": "Topics in South Asian Studies I", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN6003", + "title": "South Asian Studies: Selected Topics I", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN6004", + "title": "South Asian Studies : Selected Topics Ii", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN6102", + "title": "South Asian Research Methodologies Ii", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN6660", + "title": "Independent Study", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN6770", + "title": "South Asia Graduate Research Seminar", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SN6880", + "title": "Topics in South Asian Studies Ii", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "SN6003", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SP1230", + "title": "NUS H3 Science Research Programme", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Currently taking relevant H2 subjects.", + "corequisite": "" + }, + { + "moduleCode": "SP1541", + "title": "Exploring Science Communication through Popular Science", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "Those who have taken SP1203, ENV1202, SP2171, ES1541, UTown and USP writing modules, ES1601 are precluded from taking SP1541.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This module is meant for students from Cohort 2015 and after. If students are required to take ES1000 (Foundation Academic English) and ES1103 (English for Academic Purposes), they must complete them before taking SP1541.", + "corequisite": "" + }, + { + "moduleCode": "SP1630", + "title": "Science Research Programme Advanced Placement", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SP2171", + "title": "Discovering Science", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SP2173", + "title": "Atoms to Molecules", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SP2174", + "title": "The Cell", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SP2173 Atoms to Molecules", + "corequisite": "" + }, + { + "moduleCode": "SP2201", + "title": "Agri-Science in Japan and Singapore", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SP2251", + "title": "Science at the Nanoscale", + "moduleCredit": 4, + "department": "Chemistry", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "N.A.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "PC1144\nor PC1432/PC1432X or CM1101 or CM1131\nor PC1321/GEK1509", + "corequisite": "" + }, + { + "moduleCode": "SP3172", + "title": "Integrated Science Project", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SP3173", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SP3174", + "title": "Project Laboratory", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SP3175", + "title": "The Earth", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SP2174 The Cell", + "corequisite": "" + }, + { + "moduleCode": "SP3176", + "title": "The Universe", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SP3175 The Earth", + "corequisite": "" + }, + { + "moduleCode": "SP3202", + "title": "Evidence in Forensic Science", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEK1542", + "corequisite": "" + }, + { + "moduleCode": "SP3203", + "title": "Aquatic Ecology Research", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM2251 Ecology and Environment or GE2229 Water and Environment", + "corequisite": "" + }, + { + "moduleCode": "SP3277", + "title": "Nano: from Research Bench to Industrial Applications", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SP2171 (Discovering Science) and SP2173 (Atoms to Molecules), or SP2251 (Science at the Nanoscale)", + "corequisite": "" + }, + { + "moduleCode": "SP4261", + "title": "Articulating Probability and Statistics in Court", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM1306 Forensic Science or with department approval", + "corequisite": "" + }, + { + "moduleCode": "SP4262", + "title": "Forensic Human Identification", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "LSM1306 Forensic Science or with department approval", + "corequisite": "" + }, + { + "moduleCode": "SP4263", + "title": "Forensic Toxicology and Poisons", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 4 + ], + "preclusion": "LSM4211 Toxicology", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM1306 Forensic Science or with department approval", + "corequisite": "" + }, + { + "moduleCode": "SP4264", + "title": "Criminalistics: Evidence and Proof", + "moduleCredit": 2, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "LSM1306 Forensic Science or with department approval", + "corequisite": "" + }, + { + "moduleCode": "SP4265", + "title": "Criminalistics: Forgery Exposé with Forensic Science", + "moduleCredit": 2, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM1306 Forensic Science or with department approval", + "corequisite": "" + }, + { + "moduleCode": "SP4266", + "title": "Forensic Entomology", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM1306 Forensic Science or with department approval", + "corequisite": "" + }, + { + "moduleCode": "SPH1871", + "title": "SEP exchange module", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH1872", + "title": "SEP exchange module", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH1873", + "title": "SEP exchange module", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH1874", + "title": "SEP exchange module", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH1875", + "title": "SEP exchange module", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH1876", + "title": "SEP exchange module", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH1877", + "title": "SEP exchange module", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH1878", + "title": "SEP exchange module", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH1879", + "title": "SEP exchange module", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH2001", + "title": "Fundamental Public Health Methods", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH2002", + "title": "Public Health and Epidemiology", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1, + 2 + ], + "preclusion": "SPH2101", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH2003", + "title": "Systems and Policies to improve Health", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1, + 2 + ], + "preclusion": "SPH2103", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH2004", + "title": "Lifestyle, Behaviour and Public Health", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1, + 2 + ], + "preclusion": "SPH2102", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH2005", + "title": "Health, Society and the Social Determinants", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1, + 2 + ], + "preclusion": "SPH2107", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH2105A", + "title": "Introduction to Global Health", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH2202", + "title": "Public Health Nutrition", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 2 + ], + "preclusion": "SPH2104", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH2401", + "title": "Introduction to Global Health", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1, + 2 + ], + "preclusion": "SPH2105", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH2402", + "title": "Health in the Later Years", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [], + "preclusion": "SPH2106", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH2801", + "title": "Health of the Poor in Asia", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 4 + ], + "preclusion": "SPH2201", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH3001", + "title": "Public Health Practice", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 3, + 4 + ], + "preclusion": "SPH3201", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed at least 8 MCs of essential modules and at least 8 MCs of approved electives for the Minor in Public Health.", + "corequisite": "" + }, + { + "moduleCode": "SPH3101", + "title": "Biostatistics for Public Health", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "i.\tBN2102 Bioengineering Data Analysis\nii.\tDAO2702 Programming for Business Analytics\niii.\tEC2303 Foundations for Econometrics\niv.\tPL2131 Research and Statistical Methods I\nv.\tSC3209 Data Analysis in Social Research\nvi.\tST1131 Introduction to Statistics\nvii.\tST1232 Statistics for Life Sciences\nviii.\tST2334 Probability and Statistics", + "corequisite": "" + }, + { + "moduleCode": "SPH3106", + "title": "Data Analysis for Pathogen Genomics", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SPH2001 Fundamental Public Health Methods", + "corequisite": "" + }, + { + "moduleCode": "SPH3202", + "title": "Infectious disease epidemiology and public health", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 2 + ], + "preclusion": "SPH3104", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SPH2101 or SPH2002", + "corequisite": "" + }, + { + "moduleCode": "SPH3203", + "title": "Prevention and Control of Non-Communicable Diseases", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1, + 2 + ], + "preclusion": "SPH3105", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SPH2101 or SPH2002", + "corequisite": "" + }, + { + "moduleCode": "SPH3401", + "title": "Designing Public Health Programmes", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1 + ], + "preclusion": "SPH3109", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "1. GEK1900 Public Health in Action; AND \n2. SPH2101 / SPH2002 Public Health and Epidemiology", + "corequisite": "" + }, + { + "moduleCode": "SPH3403", + "title": "Public Health Economics", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1 + ], + "preclusion": "SPH3103", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH3404", + "title": "Physical Activity For Better Population Health", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH3501", + "title": "Introduction to Public Health Communication", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 2 + ], + "preclusion": "SPH3102", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5001", + "title": "Foundations of Public Health", + "moduleCredit": 0, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5002", + "title": "Public Health Research Methods", + "moduleCredit": 8, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1 + ], + "preclusion": "CO5102 Principles of Epidemiology and CO5103 Quantitative Epidemiologic Methods", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5003", + "title": "Health Behaviour and Communication", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1 + ], + "preclusion": "CO5203 Lifestyle and Behavior in Health and Disease,\nSPH6006 Advanced Health Behaviour & Communication", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5004", + "title": "Introduction to Health Systems and Policies", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [], + "preclusion": "CO5104 Health Policy & Systems,\nSPH6007 Health Systems and Policy Analysis", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5005", + "title": "Practicum", + "moduleCredit": 8, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "CO5210 Practicum", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SPH5002 Public Health Research Methods; OR\nCO5102 Principles of Epidemiology and \nCO5103 Quantitative Epidemiologic Methods", + "corequisite": "" + }, + { + "moduleCode": "SPH5006", + "title": "STATA Primer for Public Health", + "moduleCredit": 0, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5007", + "title": "Implementing Public Health Programmes and Policies", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1 + ], + "preclusion": "SPH5004 Introduction to Health Systems and Policies", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5101", + "title": "Advanced Quantitative Methods I", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 2 + ], + "preclusion": "CO5218 Advanced Quantitative Methods I,\nSPH6002 Advanced Quantitative Methods II", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "1) A minimum grade ‘B-‘ obtained in CO5103 Quantitative Epidemiologic Methods OR SPH5002 Public Health Research Methods, and \n\n2) SPH5006 STATA Primer for Public Health or working knowledge of STATA", + "corequisite": "" + }, + { + "moduleCode": "SPH5102", + "title": "Design, Conduct and Analysis of Clinical Trials", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 2 + ], + "preclusion": "CO5220 Design, Conduct and Analysis of Clinical Trials", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SPH5002 Public Health Research Methods; OR\nCO5102 Principles of Epidemiology and \nCO5103 Quantitative Epidemiologic Methods", + "corequisite": "" + }, + { + "moduleCode": "SPH5103", + "title": "Collection, Management & Analysis of Quantitative Data", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 2 + ], + "preclusion": "CO5232 Collection, Management & Analysis of Quantitative Data", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SPH5006 STATA Primer for Public Health or working knowledge of STATA", + "corequisite": "" + }, + { + "moduleCode": "SPH5104", + "title": "Healthcare Analytics", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 2 + ], + "preclusion": "CO5237 Healthcare Analytics", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SPH5002 Public Health Research Methods; OR\nCO5103 Quantitative Epidemiologic Methods", + "corequisite": "" + }, + { + "moduleCode": "SPH5201", + "title": "Control of Communicable Diseases", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 2 + ], + "preclusion": "CO5201 Control of Communicable Diseases", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5202", + "title": "Control of Non-Communicable Diseases", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 2 + ], + "preclusion": "CO5209 Control of Non-Communicable Diseases", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SPH5002 Public Health Research Methods", + "corequisite": "" + }, + { + "moduleCode": "SPH5203", + "title": "Advanced Epidemiology I", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 2 + ], + "preclusion": "CO5215 Advanced Epidemiology I,\nSPH6001 Advanced Epidemiology II", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SPH5002 Public Health Research Methods; OR\nCO5102 Principles of Epidemiology and \nCO5103 Quantitative Epidemiologic Methods", + "corequisite": "" + }, + { + "moduleCode": "SPH5204", + "title": "Nutrition and Health - Fundamentals and Applications", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1 + ], + "preclusion": "CO5229 Nutrition and Health", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5205", + "title": "Urban Outbreak Management", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5206", + "title": "Urban Field Epidemiology", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1 + ], + "preclusion": "CO5202 Environmental and Occupational Health\nSPH5306 Environmental Health", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5301", + "title": "Occupational Health Practice", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [], + "preclusion": "CO5304 Occupational Health Practice", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5302", + "title": "Occupational Toxicology and Industrial Hygiene", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [], + "preclusion": "CO5305 Industrial Hygiene\nCO5306 Public Health Toxicology", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5303", + "title": "Workplace Assessment", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [], + "preclusion": "CO5317 Workplace Assessment", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CO5305 Industrial Hygiene & CO5306 Public Health Toxicology\nor\nSPH5302 Occupational Toxicology and Industrial Hygiene", + "corequisite": "" + }, + { + "moduleCode": "SPH5304", + "title": "Occupational Ergonomics", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [], + "preclusion": "CO5312 Occupational Ergonomics", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5305", + "title": "Clinical Occupational Medicine", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [], + "preclusion": "CO5307 Clinical Occupational Medicine", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Medical graduates with relevant clinical experience.", + "corequisite": "" + }, + { + "moduleCode": "SPH5306", + "title": "Environmental Health", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [], + "preclusion": "CO5202 Environmental and Occupational Health", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5307", + "title": "Principles of Workplace Health", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5311", + "title": "Workplace Safety and Health", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5312", + "title": "Assessment and Control of Occupational Hazards", + "moduleCredit": 8, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 2 + ], + "preclusion": "SPH5302 Occupational Toxicology and Industrial Hygiene", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SPH5311 Workplace Safety and Health", + "corequisite": "" + }, + { + "moduleCode": "SPH5313", + "title": "Principles of Occupational Medicine", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 2 + ], + "preclusion": "SPH5305 Clinical Occupational Medicine", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SPH5311 Workplace Safety and Health\nSPH5312 Assessment and Control of Occupational Hazards", + "corequisite": "" + }, + { + "moduleCode": "SPH5314", + "title": "Enterprise Occupational Health Practice", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SPH5311 Workplace Safety and Health; and\nSPH5312 Assessment and Control of Occupational Hazards", + "corequisite": "" + }, + { + "moduleCode": "SPH5401", + "title": "Health Economics and Financing", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 2 + ], + "preclusion": "CO5204 Health Economics and Financing", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5402", + "title": "Management of Healthcare Organisations", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 2 + ], + "preclusion": "CO5205 Management of Healthcare Organisations", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5403", + "title": "Medical & Humanitarian Emergencies", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 3 + ], + "preclusion": "CO5206 Medical & Humanitarian Emergencies", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5404", + "title": "Measuring and Managing Quality of Care", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 2 + ], + "preclusion": "CO5208 Measuring and Managing Quality of Care", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5405", + "title": "Introduction to Health Services Research", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 2 + ], + "preclusion": "CO5214 Introduction to Health Services Research", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SPH5002 Public Health Research Methods; OR\nCO5102 Principles of Epidemiology and \nCO5103 Quantitative Epidemiologic Methods", + "corequisite": "" + }, + { + "moduleCode": "SPH5406", + "title": "Contemporary Global Health Issues", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1 + ], + "preclusion": "CO5221 Contemporary Global Health Issues", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5407", + "title": "Programme Evaluation", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 2 + ], + "preclusion": "CO5222 Programme Evaluation", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SPH5002 Public Health Research Methods OR CO5102 Principles of\nEpidemiology and CO5103 Quantitative Epidemiologic Methods", + "corequisite": "" + }, + { + "moduleCode": "SPH5408", + "title": "Public Health and Ageing", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1 + ], + "preclusion": "CO5230 Public Health and Aging", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5409", + "title": "Qualitative Methods in Public Health", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1, + 2 + ], + "preclusion": "CO5233 Qualitative Methods in Public Health", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5410", + "title": "Developing health proposals using DME skills & tools", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 2 + ], + "preclusion": "CO5234 Developing health proposals using DME skills & tools", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SPH5007 Implementing Public Health Programmes and Policies", + "corequisite": "" + }, + { + "moduleCode": "SPH5411", + "title": "Information Technology in Healthcare", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 2 + ], + "preclusion": "CO5235 Information Technology in Healthcare", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5412", + "title": "Economic Methods in Health Technology Assessment", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 2 + ], + "preclusion": "CO5236 Economic Methods in Health Technology Assessment", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5413", + "title": "Women’s, Children’s and Adolescents’ Health", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5414", + "title": "Informatics for Health", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 2, + 3 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5415", + "title": "Healthcare Operations & Performance", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5416", + "title": "Introduction to Integrated Care", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5420", + "title": "Evidence Synthesis for HTA", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5421", + "title": "Modelling Techniques in HTA", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 3 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5422", + "title": "Applied Health Econometrics for HTA", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SPH5006 STATA Primer for Public Health", + "corequisite": "" + }, + { + "moduleCode": "SPH5423", + "title": "Simulation for Health Technology Assessment", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5501", + "title": "Public Health Communication", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 2, + 3 + ], + "preclusion": "CO5226 Public Health Communication", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must pass the MPH core module CO5203\nLifestyle and Behaviour in Health and Disease or\nSPH5003 Health Behaviour and Communication", + "corequisite": "" + }, + { + "moduleCode": "SPH5801", + "title": "Field Practice", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1, + 2 + ], + "preclusion": "CO5231 Field Practice", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed at least 20 MCs of modules within the MPH programme.", + "corequisite": "" + }, + { + "moduleCode": "SPH5880A", + "title": "Special Topics in Epidemiology and Disease Control", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [], + "preclusion": "CO5880A Special Topics in Epidemiology and Disease Control", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5880B", + "title": "Special Topics in Quantitative Methods", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [], + "preclusion": "CO5880B Special Topics in Quantitative Methods", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5880C", + "title": "Special Topics in Environmental/Occupational Health", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [], + "preclusion": "CO5880C Special Topics in Environmental / Occupational Health", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5880D", + "title": "Special Topics in Health Policy and Systems", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [], + "preclusion": "CO5880D Special Topics in Health Policy and Systems", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5880E", + "title": "Special Topics in Health Services Research", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [], + "preclusion": "CO5880E Special Topics in Health Services Research", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5880F", + "title": "Special Topics in Health Promotion", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [], + "preclusion": "CO5880F Special Topics in Health Promotion", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5880G", + "title": "Special Topics in Global Health", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [], + "preclusion": "CO5880G Special Topics in Global Health", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5890A", + "title": "Independent Study in Epidemiology and Disease Control", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1, + 2 + ], + "preclusion": "CO5223A EPIDEMIOLOGY AND DISEASE CONTROL", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5890B", + "title": "Independent Study in Quantitative Methods", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1, + 2 + ], + "preclusion": "CO5223B QUANTITATIVE METHODS", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5890C", + "title": "Independent Study in Environmental / Occupational Health", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1, + 2 + ], + "preclusion": "CO5223C ENVIRONMENTAL / OCCUPATIONAL HEALTH", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5890D", + "title": "Independent Study in Health Policy and Systems", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1, + 2 + ], + "preclusion": "CO5223D Health Policy and Systems", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5890E", + "title": "Independent Study in Health Services Research", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1, + 2 + ], + "preclusion": "CO5223E Health Services Research", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5890F", + "title": "Independent Study in Health Promotion", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1, + 2 + ], + "preclusion": "CO5223F Health Promotion", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH5890G", + "title": "Independent Study in Global Health Programs: Planning and Evaluation", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1, + 2 + ], + "preclusion": "CO5223G GLOBAL HEALTH PROGRAMS: PLANNING AND EVALUATION", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH6001", + "title": "Advanced Epidemiology II", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 2 + ], + "preclusion": "SPH5203 Advanced Epidemiology I", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SPH5002 Public Health Research Methods; OR\nCO5102 Principles of Epidemiology and CO5103 Quantitative Epidemiologic Methods", + "corequisite": "" + }, + { + "moduleCode": "SPH6002", + "title": "Advanced Quantitative Methods II", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 2 + ], + "preclusion": "SPH5101 Advanced Quantitative Methods I\nCO5218 Advanced Quantitative Methods I", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "1) A minimum grade ‘B-‘ obtained in CO5103 Quantitative Epidemiologic Methods OR SPH5002 Public Health Research Methods, and \n\n2) SPH5006 STATA Primer for Public Health or working knowledge of STATA", + "corequisite": "" + }, + { + "moduleCode": "SPH6003", + "title": "Nutritional Epidemiology", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "1.\tSPH5002 Public Health Research Methods OR CO5102 Principles of Epidemiology/ Basic Epidemiology and CO5103 Quantitative Epidemiologic Methods /Basic Biostatistics, and\n2.\tSPH5006 STATA Primer for Public Health or working knowledge of STATA", + "corequisite": "" + }, + { + "moduleCode": "SPH6004", + "title": "Advanced Statistical Learning", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH6005", + "title": "Applied Health Economics", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CO5204 Health Economics and Financing or equivalent & CO5103 Quantitative Epidemiologic Methods or equivalent", + "corequisite": "" + }, + { + "moduleCode": "SPH6006", + "title": "Advanced Health Behaviour and Communication", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1 + ], + "preclusion": "SPH5003 Health Behaviour and Communication", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH6007", + "title": "Health Systems and Policy Analysis", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 2 + ], + "preclusion": "SPH5004 Introduction to Health Systems and Policies", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SPH5007 Implementing Public Health Programmes and Policies", + "corequisite": "" + }, + { + "moduleCode": "SPH6201", + "title": "Independent Study", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH6201A", + "title": "Independent Study (Epidemiology and Disease Control)", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH6201B", + "title": "Independent Study (Biostatistics)", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH6201C", + "title": "Independent Study (Environmental / Occupational Health)", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH6201D", + "title": "Independent Study (Health Policy and Systems)", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH6201E", + "title": "Independent Study (Health Services Research)", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH6201F", + "title": "Independent Study (Health Promotion)", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH6201G", + "title": "Independent Study (Global Health)", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH6401", + "title": "Advanced approaches in physical activity research", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 3 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SPH5002 Public Health Research Methods", + "corequisite": "" + }, + { + "moduleCode": "SPH6770", + "title": "Graduate Research Seminar in Public Health", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH6880", + "title": "Special Topics in Public Health", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [], + "preclusion": "To be defined accordingly", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "To be defined accordingly", + "corequisite": "To be defined accordingly" + }, + { + "moduleCode": "SPH6880A", + "title": "Special Topics in Epidemiology and Disease Control", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [], + "preclusion": "To be defined accordingly", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "To be defined accordingly", + "corequisite": "To be defined accordingly" + }, + { + "moduleCode": "SPH6880B", + "title": "Special Topics in Biostatistics", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [], + "preclusion": "To be defined accordingly", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "To be defined accordingly", + "corequisite": "To be defined accordingly" + }, + { + "moduleCode": "SPH6880C", + "title": "Special Topics in Environmental / Occupational Health", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [], + "preclusion": "To be defined accordingly", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "To be defined accordingly", + "corequisite": "To be defined accordingly" + }, + { + "moduleCode": "SPH6880D", + "title": "Special Topics in Health Policy and Systems", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [], + "preclusion": "To be defined accordingly", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "To be defined accordingly", + "corequisite": "To be defined accordingly" + }, + { + "moduleCode": "SPH6880E", + "title": "Special Topics in Health Services Research", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SPH6880F", + "title": "Special Topics in Health Promotion", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [], + "preclusion": "To be defined accordingly", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "To be defined accordingly", + "corequisite": "To be defined accordingly" + }, + { + "moduleCode": "SPH6880G", + "title": "Special Topics in Global Health", + "moduleCredit": 4, + "department": "SSH School of Public Health Dean's Office", + "faculty": "SSH School of Public Health", + "semester": [], + "preclusion": "To be defined accordingly", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "To be defined accordingly", + "corequisite": "To be defined accordingly" + }, + { + "moduleCode": "SSA1201", + "title": "Singapore Society", + "moduleCredit": 4, + "department": "Sociology", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GES1028", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSA1202", + "title": "Southeast Asia: A Changing Region", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEK1008, GEM1008K, SE1101E, SS1203SE, Students majoring in SE are precluded from taking this module.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSA1203", + "title": "Singapore, Asia and American Power", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GES1018", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSA1206", + "title": "Representing Singapore", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GES1023", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSA1207", + "title": "Singapore Literature in English: Selected Texts", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "SSA1207FC, GES1025", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSA1208", + "title": "Everyday Life of Chinese Singaporeans: Past & Present (taught in English)", + "moduleCredit": 4, + "department": "Chinese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GES1005", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSA1209", + "title": "The Singlish Controversy", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEK1063\nGES1022", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSA2202", + "title": "Changing Landscapes of Singapore", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GEK2001, GES1003", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSA2203", + "title": "Singapore’s Business History", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "HY2239, GES1009", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSA2204", + "title": "Nation-Building in Singapore", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "HY2229, GES1010", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSA2205", + "title": "Singapore and Japan: Historical and Contemporary Relationships", + "moduleCredit": 4, + "department": "Japanese Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "JS2224 and GES1015", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSA2206", + "title": "Islam and Contemporary Malay Society", + "moduleCredit": 4, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GES1014, MS2205", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSA2207", + "title": "Politics in Southeast Asia", + "moduleCredit": 4, + "department": "Southeast Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "SE2213, SE2281, SS2207SE. Students majoring in SE are precluded from taking this module.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSA2208", + "title": "Singapore's Military History", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "HY2242. Students majoring in HY are precluded from taking this module.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSA2209", + "title": "Government and Politics of Singapore", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "GEK2003, GEM2003K, PS1102, PS2101B, PS2101, PS2249, SS2209PS. Students majoring in PS are\nprecluded from taking this module.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSA2211", + "title": "The Evolution of a Global City-State", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GES1011", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSA2214", + "title": "Singapore and India: Emerging Relations", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GES1006", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSA2215", + "title": "The Biophysical Environment of Singapore", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GES1004", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSA2219", + "title": "South Asia in Singapore", + "moduleCredit": 4, + "department": "South Asian Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "GES1007", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSA2220", + "title": "Global Economic Dimensions of Singapore", + "moduleCredit": 4, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC2373, PP5215, GES1002, SSA2220T, GES1002T", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSA2220T", + "title": "Global Economic Dimensions Of Singapore", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 3 + ], + "preclusion": "EC2202, EC2373, GES1002T, SSA2220, GES1002", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSA2221", + "title": "Popular Culture in Singapore", + "moduleCredit": 4, + "department": "History", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "HY2254, GES1012", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSA2222", + "title": "Public Administration in Singapore", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "PS2244", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSA3201", + "title": "Singapore English-Language Theatre", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "TS3235. Students who are majoring in TS, or intend to major in TS should not take\nSSA3201.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSA3203", + "title": "The Malays of Singapore", + "moduleCredit": 4, + "department": "Malay Studies", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "MS3209. Students majoring in MS are precluded from taking this module.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSA3205", + "title": "Singapore's Foreign Policy", + "moduleCredit": 4, + "department": "Political Science", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "PS3249. Students majoring in PS are precluded from taking this module.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSB1204", + "title": "Singapore Employment Law", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "GES1000, SSB1204T, GES1000T", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSB1204T", + "title": "Singapore Employment Law", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2 + ], + "preclusion": "SSB1204, GES1000, GES1000T", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSB2212", + "title": "Singapore Legal System: Implications For Business", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "BSP1004, GEK1009, students from Faculty of Law", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSB2216", + "title": "Employee Management In Singapore", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "GES1001, SSB2216T, GES1001T", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSB2216T", + "title": "Employee Management In Singapore", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "MNO2302, SSB2216, GES1001, GES1001T", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSB2217", + "title": "Taxation and the Singapore Miracle", + "moduleCredit": 4, + "department": "Accounting", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "GES1027", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSD1203", + "title": "Real Estate Development & Investment Law", + "moduleCredit": 4, + "department": "Real Estate", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "• BSP1004, Legal Environment for Business \n• BSP1004X, Legal Environment for Business \n•• SSB2212 Singapore Legal System: Implications for Business \n•• Not for Real Estate and Project and Facility Management students. \n•• Also all Law undergraduate students, as well as students who have taken Law modules from the Faculty of Law, are not allowed to read this module.\n•• GES1024", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSD2210", + "title": "Managing Singapore's Built Environment", + "moduleCredit": 4, + "department": "Building", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "RE1102, GES1019", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSD2213", + "title": "Singapore Urban History & Architecture", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "GES1013", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSE1201", + "title": "Building a Dynamic Singapore - Role of Engineers", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "GES1017", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSS1207", + "title": "Natural Heritage of Singapore", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "GES1021", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSU2002", + "title": "Identities in Asia", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [], + "preclusion": "This module is currently open only to students of the College of Alice & Peter Tan, University Town", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSU2005", + "title": "Environment and Civil Society in Singapore", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [], + "preclusion": "This module is currently open only to students of the College of Alice & Peter Tan, University Town", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSU2007", + "title": "Citizenship in a Changing World", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SSY2223", + "title": "Western Music within a Singaporean Context", + "moduleCredit": 4, + "department": "YSTCM Dean's Office", + "faculty": "YST Conservatory of Music", + "semester": [ + 2 + ], + "preclusion": "GES1020", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ST1131", + "title": "Introduction to Statistics", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "ST1131A, ST1232, ST2334, CE2407, CN3421, EC2231, EC2303, PR2103, DSC2008. Engineering students except ISE students.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GCE ‘AO’ Level or H1 Pass in Mathematics or its equivalent or MA1301 or MA1301FC or MA1301X", + "corequisite": "" + }, + { + "moduleCode": "ST1232", + "title": "Statistics for Life Sciences", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "ST1131, ST1131A, ST2334, CE2407, CN3421, EC2231, EC2303, PR2103, DSC2008.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GCE ‘AO’ Level or H1 Pass in Mathematics or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "ST2131", + "title": "Probability", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "MA2216, ST2334, CE2407", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1102 or MA1102R or MA1312 or MA1507 or MA1505 or MA1505C or MA1521", + "corequisite": "" + }, + { + "moduleCode": "ST2132", + "title": "Mathematical Statistics", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA2216 or ST2131 or ST2334", + "corequisite": "" + }, + { + "moduleCode": "ST2137", + "title": "Computer Aided Data Analysis", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST1131 or ST1131A or ST1232 or ST2334 or ST2131 or MA2216.", + "corequisite": "" + }, + { + "moduleCode": "ST2288", + "title": "Basic UROPS in Statistics and Applied Probability I", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST1131 or ST1232; AND Departmental Approval", + "corequisite": "" + }, + { + "moduleCode": "ST2289", + "title": "Basic UROPS in Statistics and Applied Probability II", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "ST1131 or ST1232; and Departmental Approval", + "corequisite": "" + }, + { + "moduleCode": "ST2334", + "title": "Probability and Statistics", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "ST1131, ST1131A, ST1232, ST2131, MA2216, CE2407, EC2231, EC2303, PR2103, DSC2008. ME students taking or having taken ME4273. All ISE students.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA1102R or MA1312 or MA1505 or MA1507 or MA1521", + "corequisite": "" + }, + { + "moduleCode": "ST2335", + "title": "Statistical Methods", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "ST3131", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST1131 or ST2334", + "corequisite": "" + }, + { + "moduleCode": "ST2339", + "title": "Business Analytics - Data & Decisions", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ST3131", + "title": "Regression Analysis", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "ST2335, EC3303", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST2131 or MA2216 or ST2334", + "corequisite": "" + }, + { + "moduleCode": "ST3232", + "title": "Design & Analysis of Experiments", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST2132 or ST2334", + "corequisite": "" + }, + { + "moduleCode": "ST3233", + "title": "Applied Time Series Analysis", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST2132 or ST2334", + "corequisite": "" + }, + { + "moduleCode": "ST3234", + "title": "Actuarial Statistics", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST2131 or ST2334 or MA2216", + "corequisite": "" + }, + { + "moduleCode": "ST3235", + "title": "Statistical Quality Control", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "All ISE students.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST2131 or MA2216 or ST2334", + "corequisite": "" + }, + { + "moduleCode": "ST3236", + "title": "Stochastic Processes I", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "MA3238. All ISE students.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(MA1101 or MA1101R or MA1311 or MA1508) and (ST2131 or MA2216)", + "corequisite": "" + }, + { + "moduleCode": "ST3239", + "title": "Survey Methodology", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA2216 or ST2131 or ST2334", + "corequisite": "" + }, + { + "moduleCode": "ST3240", + "title": "Multivariate Statistical Analysis", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST3131", + "corequisite": "" + }, + { + "moduleCode": "ST3241", + "title": "Categorical Data Analysis I", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST3131", + "corequisite": "" + }, + { + "moduleCode": "ST3242", + "title": "Introduction to Survival Analysis", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST2132", + "corequisite": "" + }, + { + "moduleCode": "ST3243", + "title": "Statistical Methods in Epidemiology", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(ST2132) and (ST2131 or MA2216)", + "corequisite": "" + }, + { + "moduleCode": "ST3244", + "title": "Demographic Methods", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST1131", + "corequisite": "" + }, + { + "moduleCode": "ST3245", + "title": "Statistics in Molecular Biology", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST2131 or ST2334", + "corequisite": "" + }, + { + "moduleCode": "ST3246", + "title": "Statistical Models for Actuarial Science", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST2132", + "corequisite": "" + }, + { + "moduleCode": "ST3247", + "title": "Simulation", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "{ST2131 or ST2334 or MA2216} and {CS1010 or CS1010E or CS1010S or\nCS1010FC or IT1006}", + "corequisite": "" + }, + { + "moduleCode": "ST3248", + "title": "Statistical Learning I", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "ST4240, YSC4216", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST2132 or ST2334", + "corequisite": "" + }, + { + "moduleCode": "ST3288", + "title": "Advanced UROPS in Statistics & Applied Probability I", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ST3289", + "title": "Advanced UROPS in Statistics & Applied Probability II", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ST3310", + "title": "Undergraduate Professional Internship Programme", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 3, + 4 + ], + "preclusion": "XX3310 modules offered in Science, where XX stands for the subject prefix of the respective major", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed 3 regular semesters of study, having declared Statistics as first major and have completed a minimum of 32 MCs in Statistics major at the time of application.", + "corequisite": "" + }, + { + "moduleCode": "ST3311", + "title": "Undergraduate Professional Internship", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 3, + 4 + ], + "preclusion": "XX3311 modules offered in Science, where XX stands for the subject prefix for the respective major.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed 3 regular semesters of study, have declared Statistics as first major and have completed a minimum of 32 MCs in Statistics major at time of application.", + "corequisite": "" + }, + { + "moduleCode": "ST3312", + "title": "Enhanced Undergraduate Professional Internship Programme", + "moduleCredit": 12, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "XX3312 modules offered in Science, where XX stands for the subject prefix for the respective major.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed 3 regular semesters of study, have declared Statistics as first major and have completed a minimum of 32 MCs in Statistics major at time of application.", + "corequisite": "" + }, + { + "moduleCode": "ST3313", + "title": "Undergraduate Professional Internship Programme Extended", + "moduleCredit": 12, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "This module XX3313 Extended Undergraduate Professional Internship Programme, where XX stands for the subject prefix of the respective major", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed 3 regular semesters of study, having declared ST as first major and have completed a minimum of 32 MCs in ST major at the time of application and have completed ST3312", + "corequisite": "Students should be in their 3rd year of studies (SCI3)" + }, + { + "moduleCode": "ST4199", + "title": "Honours Project in Statistics", + "moduleCredit": 12, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "For Cohort 2011 and before- At least one major at B.Sc./B.Appl.Sc. level; and minimum overall CAP of 3.50 on completion of 100 MCs or more. For Cohort 2012 and after- At least one major at B.Sc./B.Appl.Sc. level; and minimum overall CAP of 3.20 on completion of 100 MCs or more.", + "corequisite": "" + }, + { + "moduleCode": "ST4231", + "title": "Computer Intensive Statistical Methods", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST2132", + "corequisite": "" + }, + { + "moduleCode": "ST4232", + "title": "Nonparametric Statistics", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST2132", + "corequisite": "" + }, + { + "moduleCode": "ST4233", + "title": "Linear Models", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST3131", + "corequisite": "" + }, + { + "moduleCode": "ST4234", + "title": "Bayesian Statistics", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST2132", + "corequisite": "" + }, + { + "moduleCode": "ST4237", + "title": "Probability Theory I", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(MA2216 or ST2131)", + "corequisite": "" + }, + { + "moduleCode": "ST4238", + "title": "Stochastic Processes II", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "MA4251", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MA3238 or ST3236", + "corequisite": "" + }, + { + "moduleCode": "ST4240", + "title": "Data Mining", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST3131", + "corequisite": "" + }, + { + "moduleCode": "ST4241", + "title": "Design & Analysis of Clinical Trials", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST3242 or ST2132", + "corequisite": "" + }, + { + "moduleCode": "ST4242", + "title": "Analysis of Longitudinal Data", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST3131", + "corequisite": "" + }, + { + "moduleCode": "ST4243", + "title": "Statistical Methods for DNA Microarray Analysis", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM1102 and ST3240", + "corequisite": "" + }, + { + "moduleCode": "ST4245", + "title": "Statistical Methods for Finance", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST3131", + "corequisite": "" + }, + { + "moduleCode": "ST4248", + "title": "Statistical Learning II", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "ST4240, YSC4216", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST3131 and ST3248", + "corequisite": "" + }, + { + "moduleCode": "ST4261", + "title": "Special Topics", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "ST4262", + "title": "Special Topics II", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "ST4299", + "title": "Applied Project in Statistics", + "moduleCredit": 12, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "ST4199", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must be reading the Bachelor of Science degree and have met Honours eligibility requirements for the Major in Statistics", + "corequisite": "" + }, + { + "moduleCode": "ST5198", + "title": "Graduate Seminar Module", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "ST5199", + "title": "Coursework Track Ii Project", + "moduleCredit": 16, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ST5201", + "title": "Statistical Foundations of Data Science", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "ST5202", + "title": "Applied Regression Analysis", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "ST5318", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "ST5203", + "title": "Design of Experiments for Product Design and Process Improvements", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "ST5318", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "ST5204", + "title": "Experimental Design 2", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "ST5205", + "title": "Probability Theory 2", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "MA5260", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "ST5206", + "title": "Generalized Linear Models", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST4233 or Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "ST5207", + "title": "Nonparametric Regression", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST3131 or Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "ST5208", + "title": "Analytics for Quality Control and Productivity Improvements", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST3235 or Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "ST5209", + "title": "Analysis of Time Series Data", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST3233 or Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "ST5210", + "title": "Multivariate Data Analysis", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST3240 or Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "ST5211", + "title": "Sampling from Finite Populations", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST2132 or Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "ST5212", + "title": "Survival Analysis", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST2132 or Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "ST5213", + "title": "Categorical Data Analysis Ii", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST3131 or Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "ST5214", + "title": "Advanced Probability Theory", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "MA5259", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST2131 or Departmental approval (compulsory to MSc by Research and AMP students)", + "corequisite": "" + }, + { + "moduleCode": "ST5215", + "title": "Advanced Statistical Theory", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST2131 and ST2132 or Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "ST5217", + "title": "Statistical Methods For Genetic Analysis", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "LSM1102 and ST2132 and ST3236, or Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "ST5218", + "title": "Advanced Statistical Methods in Finance", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST4245 or Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "ST5219", + "title": "Bayesian hierarchical modelling", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental Approval", + "corequisite": "" + }, + { + "moduleCode": "ST5220", + "title": "Statistical Consulting", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST3131 Regression Analysis and ST3232 Experimental Design or Department Approval", + "corequisite": "" + }, + { + "moduleCode": "ST5221", + "title": "Probability and Stochastic Processes", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "ST5214 Advanced Probability Theory\nMA5259 Probability Theory 1", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST2131 or its equivalent", + "corequisite": "" + }, + { + "moduleCode": "ST5222", + "title": "Advanced Topics in Applied Statistics", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "ST5223", + "title": "Statistical Models:Theory/Applications", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "ST5224", + "title": "Advanced Statistical Theory II", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST5215 or Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "ST5225", + "title": "Statistical Analysis of Networks", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST2131 Probability", + "corequisite": "Basic Statistical Theory" + }, + { + "moduleCode": "ST5226", + "title": "Spatial Statistics", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST5201 Basic Statistical Theory", + "corequisite": "ST5201 Basic Statistical Theory" + }, + { + "moduleCode": "ST5227", + "title": "Applied Data Mining", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ST5201 Basic Statistical Theory,\nST5202 Applied Regression Analysis", + "corequisite": "ST5201 Basic Statistical Theory" + }, + { + "moduleCode": "ST5241", + "title": "Topics I", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "ST5241A", + "title": "Topics IA", + "moduleCredit": 2, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ST5241B", + "title": "Topics 1B", + "moduleCredit": 2, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ST5242", + "title": "Topics II", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Departmental approval", + "corequisite": "" + }, + { + "moduleCode": "ST5243", + "title": "Topics III", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ST5244", + "title": "Topics in Data Science and Analytics", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ST5318", + "title": "Statistical Methods For Health Science", + "moduleCredit": 4, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [], + "preclusion": "ST5202, ST5203", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "MDG5108 or ST2238 or PR2103 or equivalent, or Departmental Approval", + "corequisite": "" + }, + { + "moduleCode": "STR1000", + "title": "Career Creation Starter Workshops", + "moduleCredit": 0, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "STR2000", + "title": "Career Creation Starter Clinics", + "moduleCredit": 0, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW1101E", + "title": "Social Work: A Heart-Head-Hand Connection", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW2101", + "title": "Working with Individuals and Families", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students majoring in Social Work, SW1101E", + "corequisite": "" + }, + { + "moduleCode": "SW2104", + "title": "Human Development over the Lifespan", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students majoring in Social Work or minoring in Human Services.", + "corequisite": "" + }, + { + "moduleCode": "SW2105", + "title": "Values & Skills for Helping Relationships", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Only for students majoring in Social Work, SW1101E", + "corequisite": "" + }, + { + "moduleCode": "SW2106", + "title": "Social Group Work Practice", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students from 2008 cohort onwards, who have completed SW1101E and who are majoring in Social Work.", + "corequisite": "" + }, + { + "moduleCode": "SW3101", + "title": "Social Work Research Methods", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SW1101E", + "corequisite": "" + }, + { + "moduleCode": "SW3103A", + "title": "Social Work Field Practice (I)", + "moduleCredit": 8, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "SW3103B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SW1101E, SW2101, SW2104, SW2105. Students from 2019 cohort and before.", + "corequisite": "" + }, + { + "moduleCode": "SW3103B", + "title": "Social Work Field Practice (I)", + "moduleCredit": 6, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "SW3103A", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SW1101E, SW2101, SW2104, SW2105. Students from 2020 cohort onwards.", + "corequisite": "" + }, + { + "moduleCode": "SW3104", + "title": "Social Work Field Practice (II)", + "moduleCredit": 8, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "SW3104A", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SW3103A. Students from 2019 cohort and before.", + "corequisite": "" + }, + { + "moduleCode": "SW3104A", + "title": "Social Work Field Practice (II)", + "moduleCredit": 6, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "SW3104", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SW3103B. Students from 2020 cohort onwards.", + "corequisite": "" + }, + { + "moduleCode": "SW3105", + "title": "Community Work Practice", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students majoring in Social Work, SW1101E. Students from 2008 cohort onwards.", + "corequisite": "" + }, + { + "moduleCode": "SW3202", + "title": "Practicing Theories in Social Work", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students majoring in Social Work, SW1101E", + "corequisite": "" + }, + { + "moduleCode": "SW3205", + "title": "Interpersonal Conflict Resolution", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "SW3208", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW3206", + "title": "Gender Issues in Social Work Practice", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW3207", + "title": "Social Work in Medical Settings", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW3208", + "title": "Negotiation & Conflict Resolution", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "SW3205, PL4233", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW3209", + "title": "Counselling Theories & Practice", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students majoring in Social Work, SW1101E", + "corequisite": "" + }, + { + "moduleCode": "SW3211", + "title": "Community-Based Family Services", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SW2101", + "corequisite": "" + }, + { + "moduleCode": "SW3212", + "title": "Occupational Social Work", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW3213", + "title": "Working With Older Adults", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW3214", + "title": "Counselling Process & Skills", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SW3209 Counselling Theories and Practice and for Social Work major students only.", + "corequisite": "" + }, + { + "moduleCode": "SW3215", + "title": "Socio-Cultural Theories in Social Work", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW3216", + "title": "Urban Youth Work", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students majoring in Social Work or minoring in Human Services, and SW1101E.", + "corequisite": "" + }, + { + "moduleCode": "SW3217", + "title": "Mental Health and Illness", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "PL3236 Abnormal Psychology", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW3219", + "title": "Child-centric Social Work", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW3220", + "title": "Introduction to Social Policy", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW3550", + "title": "Social Work Internship", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Any other XX3550 internship modules (Note: Students who change major may not do a second internship in their new major)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students should: have completed a minimum of 24 MC in Social Work; and have declared Social Work as their Major.", + "corequisite": "" + }, + { + "moduleCode": "SW3551", + "title": "FASS Undergraduate Research Opportunity (UROP)", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "Students must:\nhave declared a Major, completed a minimum of 24 MCs in that Major, and have a CAP of at least 3.20.", + "corequisite": "" + }, + { + "moduleCode": "SW3880", + "title": "Special Topics in Social Work", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW4101", + "title": "Advanced Family-Centred Swk Practice", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in SW of which (i) student must have passed SW1101E, SW2101, SW2104, SW2105 and (ii) passed or are concurrently reading SW3104 in the semester they intend to read the SW4000 modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SW4102", + "title": "Social Policy and Planning", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in SW of which (i) student must have passed SW1101E, SW2101, SW2104, SW2105, and SW3103A with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SW4103", + "title": "Advanced Research and Evaluation", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in SW of which (i) student must have passed SW1101E, SW2101, SW2104, SW2105, SW3101 or PL2131 or SC2101, and SW3103A, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SW4201", + "title": "Theory Building in Social Work Practice", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in SW of which (i) student must have passed SW1101E, SW2101, SW2104, SW2105 and (ii) passed or are concurrently reading SW3104 in the semester they intend to read the SW4000 modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SW4202", + "title": "Special Areas of Social Work Practice", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in SW of which (i) student must have passed SW1101E, SW2101, SW2104, SW2105 and (ii) passed or are concurrently reading SW3104 in the semester they intend to read the SW4000 modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SW4202A", + "title": "Healthcare Issues and Policies", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "Non-Social Work majors", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in SW of which (i) student must have passed SW1101E, SW2101, SW2104, SW2105 and (ii) passed or are concurrently reading SW3104 in the semester they intend to read the SW4000 modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SW4203", + "title": "Integrative Seminar for Profn'l Devpt", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in SW of which (i) student must have passed SW1101E, SW2101, SW2104, SW2105 and (ii) passed or are concurrently reading SW3104 in the semester they intend to read the SW4000 modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SW4204", + "title": "Management Info Systems in Social Work", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in SW of which (i) student must have passed SW1101E, SW2101, SW2104, SW2105 and (ii) passed or are concurrently reading SW3104 in the semester they intend to read the SW4000 modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SW4205", + "title": "Social Impact Analysis", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in SW of which (i) student must have passed SW1101E, SW2101, SW2104, SW2105 and (ii) passed or are concurrently reading SW3104 in the semester they intend to read the SW4000 modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SW4207", + "title": "Social Demography", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in SW of which (i) student must have passed SW1101E, SW2101, SW2104, SW2105 and (ii) passed or are concurrently reading SW3104 in the semester they intend to read the SW4000 modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SW4208", + "title": "Social Gerontology", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in SW of which (i) student must have passed SW1101E, SW2101, SW2104, SW2105, and SW3103A, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SW4209", + "title": "Law & Social Work Practice", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in SW of which (i) student must have passed SW1101E, SW2101, SW2104, SW2105 and\n(ii) passed or are concurrently reading SW3104 in the semester they intend to read the SW4000 modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SW4210", + "title": "Social Work & Technology of the Future", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in SW of which (i) student must have passed SW1101E, SW2101, SW2104, SW2105 and (ii) passed or are concurrently reading SW3104 in the semester they intend to read the SW4000 modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SW4211", + "title": "Welfare Economics", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in SW of which (i) student must have passed SW1101E, SW2101, SW2104, SW2105 and (ii) passed or are concurrently reading SW3104 or SW4102 in the semester they intend to read the SW4000 modules or (iii) Students who have passed or are currently reading EC3101 or EC3102 can read this module as an unrestricted elective, with a minimum CAP of\n3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SW4213", + "title": "Social Networks & Social Support", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in SW of which (i) student must have passed SW1101E, SW2101, SW2104, SW2105, and SW3103A, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SW4214", + "title": "Comparative Social Service Systems in SEA", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in SW of which (i) student must have passed SW1101E, SW2101, SW2104, SW2105, and SW3103A, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SW4216", + "title": "Advanced Studies in Community Work", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in SW of which (i) student must have passed SW1101E, SW2101, SW2104, SW2105, and SW3103A, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SW4217", + "title": "Advanced Studies in Family Development", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in SW of which (i) student must have passed SW1101E, SW2101, SW2104, SW2105 and (ii) passed or are concurrently reading SW3104 in the semester they intend to read the SW4000 modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SW4219", + "title": "Crisis and Disaster Recovery Management", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in SW of which (i) student must have passed SW1101E, SW2101, SW2104, SW2105 and (ii) passed or are concurrently reading SW3104 in the semester they intend to read the SW4000 modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SW4220", + "title": "Agency Planning and Development", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in SW of which student must have passed SW1101E, SW2101, SW2104, SW2105 and SW3103A with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SW4221", + "title": "Social Work and Rehabilitation of Offenders", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in SW of which student must have passed SW1101E, SW2101, SW2104, SW2105 and SW3103A with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SW4222", + "title": "Social Work Practice in the Field of Disability", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in SW of which (i) student must have passed SW1101E, SW2101, SW2104, SW2105 and (ii) passed or are concurrently reading SW3104 in the semester they intend to read the SW4000 modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SW4223", + "title": "Child-Centric Social Work", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "SW3219", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in SW of which (i) student must have passed SW1101E, SW2101, SW2104, SW2105 and (ii) passed or are concurrently reading SW3104 in the semester they intend to read the SW4000 modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SW4224", + "title": "Financial Capability and Asset Building", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in SW of which (i) student must have passed SW1101E, SW2101, SW2104, SW2105 and (ii) passed or are concurrently reading SW3104 in the semester they intend to read the SW4000 modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SW4225", + "title": "Ethics in Social Work Practice", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in SW of which (i) student must have passed SW1101E, SW2101, SW2104, SW2105 and (ii) passed or are concurrently reading SW3104 in the semester they intend to read the SW4000 modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SW4226", + "title": "Social Enterprises and Social Innovations", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in SW of which (i) student must have passed SW1101E, SW2101, SW2104, SW2105 and (ii) passed or are concurrently reading SW3104 in the semester they intend to read the SW4000 modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SW4401", + "title": "Honours Thesis", + "moduleCredit": 15, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "SW4660", + "attributes": [ + false, + false, + false, + false, + true, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012 - 2015:\nCompleted 110 MCs including 60 MCs of SW major requirements with a minimum CAP of 3.50.\n\nCohort 2016 onwards:\nCompleted 110 MCs including 44 MCs of SW major requirements with a minimum CAP of 3.50.", + "corequisite": "" + }, + { + "moduleCode": "SW4660", + "title": "Independent Study", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "SW4401", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012 - 2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in SW, with a minimum CAP of 3.20.\n\nCohort 2016 onwards: \nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in SW, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "SW4880", + "title": "Special Topics in Social Work", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in SW of which (i) student must have passed SW1101E, SW2101, SW2104, SW2105 and (ii) passed or are concurrently reading SW3104 in the semester they intend to read the SW4000 modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SW4880A", + "title": "Social Work and Infectious Diseases", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80MCs, including 28MCs in SW of which (i) student must have passed SW1101E, SW2101, SW2104, SW2105 and (ii) passed or are concurrently reading SW3104 in the semester they intend to read the SW4000 modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "SW5103", + "title": "Family Systems Theory and Intervention", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "SW5243 Family in the Local Context", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5103R", + "title": "Family Therapy", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "SW5243 Family in the Local Context", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5104", + "title": "Management of Human Service Organizations", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5104R", + "title": "Management of Human Service Organizations", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5106", + "title": "Social Policy and Welfare Services", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5106R", + "title": "Social Welfare Policy and Services", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5107", + "title": "Program Development and Evaluation", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5107R", + "title": "Program Development and Evaluation", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5111", + "title": "Advanced Practicum", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "Only for Master of Social Work (course work) students with a Bachelor in Social Work degree.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5111A", + "title": "Practicum", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "Students enrolled in MSW (course work) programme.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 onwards:\nSW5114", + "corequisite": "" + }, + { + "moduleCode": "SW5111B", + "title": "Practicum", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "Only for Master of Social Work (coursework) students with a Graduate Diploma in Social Work qualification", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5112", + "title": "Supervised Project", + "moduleCredit": 8, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "Only for M.Soc.Sci (Social Work) Students and/or consent of the Instructor.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SW5107", + "corequisite": "" + }, + { + "moduleCode": "SW5112R", + "title": "Supervised Project", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Only for M.Soc.Sci. (Social Work) students and/or consent of the Instructor", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5113", + "title": "Social Work With Groups and Community", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "- SWD5102\n- Only for Master of Social Work (coursework) students without Bachelor of Social Work or Graduate Diploma in Social Work qualification.", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5114", + "title": "Contemporary Social Work Practice", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "- Not available to undergraduate students\n- SWD5103\n- Only for Master of Social Work (coursework) students without Bachelor of Social Work or Graduate Diploma in Social Work qualification.", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5115", + "title": "Human Development in Context", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "- Not available to undergraduate students\n- SWD5104\n- Only for Master of Social Work (coursework) students without Bachelor of Social Work or Graduate Diploma in Social Work qualification.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5116", + "title": "Skills in Advanced Social Work Practice", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "- Not available to undergraduate students\n- SWD5105\n- Only for Master of Social Work (coursework) students without Bachelor of Social Work or Graduate Diploma in Social Work qualification.", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5117A", + "title": "Practice Research Capstone Seminar I", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "Only for Master of Social Work (by coursework) students from cohort 2019 onwards.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SW5107", + "corequisite": "" + }, + { + "moduleCode": "SW5117B", + "title": "Practice Research Capstone Seminar II", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "Only for Master of Social Work (by coursework) students from cohort 2019 onwards", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SW5117A", + "corequisite": "" + }, + { + "moduleCode": "SW5205", + "title": "Working with Trauma - Infancy through Adolescence", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5205R", + "title": "Working with Trauma - Infancy through Adolescence", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5206", + "title": "Mastering Leadership", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5206R", + "title": "Mastering Leadership", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5207", + "title": "Working with Multi-Stressed Families", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5207R", + "title": "Working with Multi-Stressed Families", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5208", + "title": "Using Play Therapy with Children and Families", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5208R", + "title": "Using Play Therapy with Children and Families", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5209", + "title": "Theory and Practice of Social Work Supervision", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5209R", + "title": "Theory and Practice of Social Work Supervision", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5210", + "title": "Trauma and Mental Health", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5210R", + "title": "Trauma and Mental Health", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5211", + "title": "Risk Assessment & Management: Mental Health", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5211R", + "title": "Risk Assessment & Management: Mental Health", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5213", + "title": "Practice with Persons with Disability", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5213R", + "title": "Practice with Persons with Disability", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5215", + "title": "Poverty and Asset-Building Policy", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5215R", + "title": "Poverty and Asset-Building Policy", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5216", + "title": "Family and Interpersonal Violence", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5216R", + "title": "Family and Interpersonal Violence", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5217", + "title": "Continuum of Care and Healthy Ageing", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5217R", + "title": "Continuum of Care and Healthy Ageing", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5218", + "title": "Practice with Persons with Addiction", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5218R", + "title": "Practice with Persons with Addiction", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5219", + "title": "Palliative and End-Of-Life Care", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5219R", + "title": "Palliative and End-Of-Life Care", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5220", + "title": "Statistics for Social Workers", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5220R", + "title": "Statistics for Social Workers", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5222", + "title": "Personnel Practice & Management", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "SW6222", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5245", + "title": "Current Group Approaches in Social Work", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5245R", + "title": "Current Group Approaches in Social Work", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5247", + "title": "Social Prevention and Public Education", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5252", + "title": "Community Organisation and Development", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5252R", + "title": "Community Organisation and Development", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5253", + "title": "Volunteer Management", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5253R", + "title": "Volunteer Management", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5660", + "title": "Independent Study", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5880", + "title": "Special Topics in Social Work", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5880R", + "title": "Special Topics in Social Work", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5881", + "title": "Topics in Social Work – Direct Practice", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5881R", + "title": "Topics in Social Work - Direct Practice", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5882", + "title": "Topics in Social Work - Social Policy", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5882R", + "title": "Topics in Social Work - Social Policy", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5883", + "title": "Topics in Social Work - Social Work Leadership", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5883R", + "title": "Topics in Social Work - Social Work Leadership", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5884", + "title": "Topics in Social Work - Research", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW5884R", + "title": "Topics in Social Work - Research", + "moduleCredit": 5, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW6101", + "title": "Social Theory in Social Work Practice", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW6102", + "title": "Policy & Research in Social Welfare", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "SW5102", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW6231", + "title": "Human Service Research & Evaluation", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW6241", + "title": "Theory & Practice in Psychotherapy", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW6249", + "title": "Specialised Policy Studies", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW6257", + "title": "Research Design & Quantitative Methods", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW6259", + "title": "Specialised Fields of Practice", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "SW5259", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW6660", + "title": "Independent Study", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "SW6262", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SW6770", + "title": "Graduate Research Seminar", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Non-research students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SWD5102", + "title": "Social Work With Groups and Community", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "SW5113", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SWD5103", + "title": "Contemporary Social Work Practice", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "- Not available to undergraduate students\n- SW5114", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SWD5104", + "title": "Human Development in Context", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "- Not available to undergraduate students\n- SW5115", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SWD5105", + "title": "Skills in Advanced Social Work Practice", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "- Not available to undergraduate students\n- SW5116", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SWD5120", + "title": "Social Work Practicum", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "SW5120", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SWD5103 Contemporary Social Work Practice", + "corequisite": "" + }, + { + "moduleCode": "SWD5261", + "title": "Gerontological Counselling", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SWD5263", + "title": "Family Centred Practice", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SWD5269", + "title": "Working With Children and Youth", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Not available to undergraduate students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SWD5270", + "title": "Child Welfare Policy and Practice", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Not available to undergraduate students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SWD5272", + "title": "Multidiscipinary Perspectives On Ageing", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Not available to undergraduate students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SWD5273", + "title": "Intervention With the Terminally Iii", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Not available to undergraduate students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SWD5274", + "title": "Family Systems and Intervention", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Not available to undergraduate students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SWD5275", + "title": "Human Sexuality and Marital Therapy", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Not available to undergraduate students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SWD5276", + "title": "Family Stress and Coping", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Not available to undergraduate students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SWD5277", + "title": "Planned Social Change", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Not available to undergraduate students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SWD5279", + "title": "Comparative Group Modalities", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Not available to undergraduate students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SWD5280", + "title": "Nature of Drugs & Alcohol Abuse", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Not available to undergraduate students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SWD5281", + "title": "Individuals, Families & Substance Abuse", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "SW5281; Not available to undergraduate students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SWD5282", + "title": "Drugs & Alcohol Abuse Treatment", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Not available to undergraduate students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SWD5283", + "title": "Disability and Rehabilitative Work", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Not available to undergraduate students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SWD5284", + "title": "Health & Mental Health Service Systems", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Not available to undergraduate students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SWD5285", + "title": "Rehabilitation Programme Issues", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Not available to undergraduate students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SWD5286", + "title": "Common Psychiatric Disorders in Adults", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SWD5292", + "title": "Topical Studies in Social Work Methods", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Not available to undergraduate students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SWD5293", + "title": "Topical Studies in Social Work Issues", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Not available to undergraduate students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SWD5297", + "title": "Human Service Organisations & Management", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Not available to undergraduate students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SWD5298", + "title": "Approaches in Community Work", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Not available to undergraduate students", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SWD5880", + "title": "Topics in Social Work", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Not available to undergraduate students.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SWD5880A", + "title": "Service User Involvement", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "Not available to undergraduate students.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SWD5880B", + "title": "Social Work and Infectious Diseases", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "Not available to undergraduate students.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SWD5880C", + "title": "Grief and Bereavement Counselling", + "moduleCredit": 4, + "department": "Social Work", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "Not available to undergraduate students.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SWE5001", + "title": "Architecting Scalable Systems", + "moduleCredit": 13, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Practical working knowledge of building software systems using basic software engineering principles in the areas of detailed software design, coding and testing.", + "corequisite": "" + }, + { + "moduleCode": "SWE5002", + "title": "Designing and Managing Products and Platforms", + "moduleCredit": 12, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SWE5003", + "title": "Engineering Big Data", + "moduleCredit": 11, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SWE5004", + "title": "Architecting Smart Systems", + "moduleCredit": 11, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SWE5005", + "title": "Securing Ubiquitous Systems", + "moduleCredit": 12, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SWE5007", + "title": "Capstone Project in Software Engineering", + "moduleCredit": 6, + "department": "Institute of Systems Science", + "faculty": "Institute of Systems Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Before commencing the Capstone Project, the students must successfully complete three out of the following certificates:\n1. Graduate Certificate in Architecting Scalable Systems (Mandatory)\n2. Graduate Certificate in Designing and Managing Products and Platforms\n3. Graduate Certificate in Architecting Smart Systems\n4. Graduate Certificate in Engineering Big Data\n5. Graduate Certificate in Securing Ubiquitous Systems", + "corequisite": "" + }, + { + "moduleCode": "SYE5001", + "title": "Systems Engineering and Architecture", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "IE5402 Introduction to Systems Engineering and\nArchitecture", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SYE5002", + "title": "Large Scale Systems Project Management", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SYE5003", + "title": "Engineering Finance", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SYE5004", + "title": "Large Scale Systems Engineering", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "IE5404 Large Scale Systems Engineering", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "SyE5001 Systems Engineering and Architecture", + "corequisite": "" + }, + { + "moduleCode": "SYE5005", + "title": "Management Science in Systems Engineering", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SYE5201", + "title": "Integrated Logistics Support", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SYE5202", + "title": "Lean Six Sigma", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "IE5217 Fundamentals of Lean Six Sigma", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SYE5203", + "title": "Decision Analysis & Risk Management", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "IE5203 Decision Analysis", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SYE5204", + "title": "Learning from Data and Knowledge Discovery", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "IE5006 Learning from Data", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SYE5301", + "title": "Humans and Systems Engineering", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "IE 5301 Human Factors in Engineering and\nDesign", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SYE5302", + "title": "Leadership in Engineering", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "SYE5403", + "title": "Systems Engineering Project and Case Studies", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "At least 4 Core modules of the program.", + "corequisite": "" + }, + { + "moduleCode": "SYE5409", + "title": "Special Topics in Systems Engineering & Management", + "moduleCredit": 4, + "department": "Industrial Systems Engineering and Management", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TBA2101", + "title": "Building an Analytics Organisation", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 3 + ], + "preclusion": "", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TBA2102", + "title": "Introduction to Business Analytics", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TBA2103", + "title": "Data Visualisation", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2, + 3 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "TIC2001", + "corequisite": "" + }, + { + "moduleCode": "TBA2104", + "title": "Predictive Analytics", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "TMA2103 Probability and Statistics and TBA2102 Introduction to Business Analytics" + }, + { + "moduleCode": "TBA2105", + "title": "Web Mining", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "TIC2601 Database and Web Applications", + "corequisite": "" + }, + { + "moduleCode": "TBA3102", + "title": "Text Analytics", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "TBA2105 Web Mining", + "corequisite": "" + }, + { + "moduleCode": "TBA3103", + "title": "Application Systems Development for Business Analytics", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "TBA2103 Data Visualisation and TBA2104 Predictive Analytics" + }, + { + "moduleCode": "TBA3150", + "title": "Mobile Application and Game Analytics", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "The student has completed at least 56MCs (i.e., 14 modules)", + "corequisite": "" + }, + { + "moduleCode": "TBA3204", + "title": "Web Analytics", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TBA2102 Introduction to Business Analytics", + "corequisite": "" + }, + { + "moduleCode": "TBA3222", + "title": "Marketing Analytics", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "The student has completed at least 56MCs (i.e., 14 modules)", + "corequisite": "" + }, + { + "moduleCode": "TBA3241", + "title": "Social Media Analytics", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "The student has completed at least 56MCs (i.e., 14 modules)", + "corequisite": "" + }, + { + "moduleCode": "TBA4204", + "title": "Financial Analytics", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "The student has completed at least 56MCs (i.e., 14 modules)", + "corequisite": "" + }, + { + "moduleCode": "TBA4212", + "title": "Search Engine Optimisation and Analytics", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TBA3204 Web Analytics", + "corequisite": "" + }, + { + "moduleCode": "TBA4215", + "title": "Workforce Analytics", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "The student has completed at least 56MCs (i.e., 14 modules)", + "corequisite": "" + }, + { + "moduleCode": "TBA4220", + "title": "Geospatial Analytics", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "BT4015 (Geospatial Analytics)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TBA2103 Data Visualisation", + "corequisite": "" + }, + { + "moduleCode": "TBA4230", + "title": "Audit Analytics", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "The student has completed at least 56MCs (i.e., 14 modules)", + "corequisite": "" + }, + { + "moduleCode": "TBA4250", + "title": "Healthcare Analytics", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "The student has completed at least 56MCs (i.e., 14 modules)", + "corequisite": "" + }, + { + "moduleCode": "TC1005", + "title": "MATLAB Programming for Chemical Engineers", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "TCN1005", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TC1411", + "title": "Mathematics for Chemical Engineers 1", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TCN1411", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TC1422", + "title": "Materials for Chemical Engineers", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TCN1422", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TC2411", + "title": "Mathematics for Chemical Engineers 2", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 3 + ], + "preclusion": "TCN2411", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TC1411 Mathematics for Chemical Engineers 1", + "corequisite": "" + }, + { + "moduleCode": "TCE1109", + "title": "Statics And Mechanics of Materials", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "CE1109", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TCE2112", + "title": "Soil Mechanics", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "CE2112", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "EG1109 or equivalent", + "corequisite": "" + }, + { + "moduleCode": "TCE2134", + "title": "Hydraulics", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "CE2134", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EG1109FC/EG1109/CE1109X or equivalent", + "corequisite": "" + }, + { + "moduleCode": "TCE2155", + "title": "Structural Mechanics and Materials", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "CE2155", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "EG1109FC/EG1109 or equivalent", + "corequisite": "" + }, + { + "moduleCode": "TCE2183", + "title": "Construction Project Management", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "CE2183", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TCE2184", + "title": "Infrastructure & the Environment", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "CE2184", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TCE2407", + "title": "Engineering & Uncertainty Analyses", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 3 + ], + "preclusion": "CE2407", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TTG1401", + "corequisite": "TME2401" + }, + { + "moduleCode": "TCE3001", + "title": "Water Quality Engineering", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "ESE2401 & ESE3401 & ESE3001", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TCE3115", + "title": "Geotechnical Engineering", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "CE3115", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TCE2112", + "corequisite": "" + }, + { + "moduleCode": "TCE3116", + "title": "Foundation Engineering", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "CE3116", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TCE2112", + "corequisite": "" + }, + { + "moduleCode": "TCE3121", + "title": "Transportation Engineering", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "CE3121", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TCE2407", + "corequisite": "" + }, + { + "moduleCode": "TCE3132", + "title": "Water Resources Engineering", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "CE3132", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TCE2134", + "corequisite": "" + }, + { + "moduleCode": "TCE3155", + "title": "Structural Analysis", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "CE3155", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "TCE2155", + "corequisite": "" + }, + { + "moduleCode": "TCE3165", + "title": "Structural Concrete Design", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "CE3165", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "TCE2155", + "corequisite": "" + }, + { + "moduleCode": "TCE3166", + "title": "Structural Steel Design and System", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "CE3166", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "TCE2155", + "corequisite": "" + }, + { + "moduleCode": "TCE4103", + "title": "Design Project", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2 + ], + "preclusion": "CE4103", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Year 4 Standing", + "corequisite": "" + }, + { + "moduleCode": "TCE4104", + "title": "BTech Dissertation", + "moduleCredit": 8, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2 + ], + "preclusion": "CE4104", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "Year 4 Standing", + "corequisite": "" + }, + { + "moduleCode": "TCE4221", + "title": "Design of Land Transport Infrastructures", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "CE4221", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TCE3121", + "corequisite": "" + }, + { + "moduleCode": "TCE4247", + "title": "Treatment Plant Hydraulics", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "CE4247", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TCE2134", + "corequisite": "" + }, + { + "moduleCode": "TCE4257", + "title": "Linear Finite Element Analysis", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "CE4257", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TCE3155", + "corequisite": "" + }, + { + "moduleCode": "TCE4258", + "title": "Structural Stability & Dynamics", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "CE4258", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TCE3115", + "corequisite": "" + }, + { + "moduleCode": "TCE4282", + "title": "Building Information Modeling for Project Management", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2 + ], + "preclusion": "CE4282", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "TCE2183", + "corequisite": "" + }, + { + "moduleCode": "TCE4401", + "title": "Water & Wastewater Engineering 2", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "ESE4401", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TCE3001", + "corequisite": "" + }, + { + "moduleCode": "TCE4408", + "title": "Environmental Impact Assessment", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "ESE4408", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Year 4 standing", + "corequisite": "" + }, + { + "moduleCode": "TCE5025", + "title": "Intelligent Transportation Systems", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "TP5025", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TCE3121", + "corequisite": "" + }, + { + "moduleCode": "TCE5026", + "title": "Transportation Management & Policy", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "TP5026", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TCE5106", + "title": "Ground Improvement", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "CE5106", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TCE2112", + "corequisite": "" + }, + { + "moduleCode": "TCE5107", + "title": "Pile Foundations", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "CE5107", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TCE2112 & TCE3116", + "corequisite": "" + }, + { + "moduleCode": "TCE5108", + "title": "Earth Retaining Structures", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "CE5108", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TCE2112", + "corequisite": "" + }, + { + "moduleCode": "TCE5113", + "title": "Geotechnical Investigation & Monitoring", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "CE5113", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TCE2112", + "corequisite": "" + }, + { + "moduleCode": "TCE5202", + "title": "Analysis & Design of Offshore Structures", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "OT5202", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TCE2155", + "corequisite": "" + }, + { + "moduleCode": "TCE5206", + "title": "Offshore Foundations", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "OT5206", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TCE2112 & TCE3116", + "corequisite": "" + }, + { + "moduleCode": "TCE5509", + "title": "Advanced Structural Steel Design", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "CE5509", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TCE3166", + "corequisite": "" + }, + { + "moduleCode": "TCE5510", + "title": "Advanced Structural Concrete Design", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "CE5510", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TCE3165", + "corequisite": "" + }, + { + "moduleCode": "TCE5604", + "title": "Advanced Concrete Technology", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "CE5604", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TCE2155", + "corequisite": "" + }, + { + "moduleCode": "TCE5611", + "title": "Precast Concrete Technology", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "CE5611", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TCE3165", + "corequisite": "" + }, + { + "moduleCode": "TCE5805", + "title": "Construction Equipment and Methods", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "CE5805", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TCE2183", + "corequisite": "" + }, + { + "moduleCode": "TCN1005", + "title": "MATLAB Programming for Chemical Engineers", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TC1005", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TCN1111", + "title": "Chemical Engineering Principles", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TC1101, CN1111E", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TCN1411", + "title": "Mathematics for Chemical Engineers 1", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TC1411", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TCN1422", + "title": "Materials for Chemical Engineers", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TC1422", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TCN2116", + "title": "Chemical Kinetics And Reactor Design", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TC2106, CN2116E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TCN1111", + "corequisite": "TCN2125" + }, + { + "moduleCode": "TCN2121", + "title": "Chemical Engineering Thermodynamics", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TC2111, CN2121E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "TCN1111", + "corequisite": "" + }, + { + "moduleCode": "TCN2122", + "title": "Fluid Mechanics", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TC2112, CN2122E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "TCN2411", + "corequisite": "" + }, + { + "moduleCode": "TCN2125", + "title": "Heat And Mass Transfer", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TC2115, CN2125E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "TCN2122", + "corequisite": "" + }, + { + "moduleCode": "TCN2411", + "title": "Mathematics for Chemical Engineers 2", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 3 + ], + "preclusion": "TC2411", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TTG1401 Engineering Mathematics I", + "corequisite": "" + }, + { + "moduleCode": "TCN3121", + "title": "Process Dynamics & Control", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TC3111, CN3121E", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "TCN2411", + "corequisite": "" + }, + { + "moduleCode": "TCN3124", + "title": "Particle Technology", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TC3114, CN3124E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "TCN2122", + "corequisite": "" + }, + { + "moduleCode": "TCN3132", + "title": "Separation Processes", + "moduleCredit": 5, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TC2113, CN3132E", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "TCN1111, TCN2121, TCN2125", + "corequisite": "" + }, + { + "moduleCode": "TCN3135", + "title": "Process Safety, Health and Environment", + "moduleCredit": 3, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 3 + ], + "preclusion": "CN3135E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TCN2121, TCN2122", + "corequisite": "" + }, + { + "moduleCode": "TCN3421", + "title": "Process Modeling & Numerical Simulation", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TC3411, CN3421E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TCN2116, TCN2121, TCN2125", + "corequisite": "" + }, + { + "moduleCode": "TCN4119", + "title": "B.Tech. Dissertation", + "moduleCredit": 8, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "CN4119E, CN4118E", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "All Level 3000 Essential Modules", + "corequisite": "" + }, + { + "moduleCode": "TCN4122", + "title": "Process Synthesis and Simulation", + "moduleCredit": 3, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "CN4122E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TCN2116, TCN2121, TCN3124 & TCN3132", + "corequisite": "" + }, + { + "moduleCode": "TCN4124", + "title": "Final Year Design Project", + "moduleCredit": 6, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "CN4124E", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "TCN3135, TCN3421, TCN4122, TTG2415", + "corequisite": "" + }, + { + "moduleCode": "TCN4203", + "title": "Polymer Engineering", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "CN4203E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TCN4205", + "title": "Pinch Analysis and Process Integration", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "CN4205E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TCN2125 & TCN3421", + "corequisite": "" + }, + { + "moduleCode": "TCN4208", + "title": "Biochemical Engineering", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "CN4208E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TC2106 /CN2116E/TCN2116 & TC2112/CN2122E/TCN2122", + "corequisite": "" + }, + { + "moduleCode": "TCN4210", + "title": "Membrane Science And Engineering", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TC4210, CN4210E", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TCN4211", + "title": "Petrochemicals & Processing Technology", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "TC4211, CN4211E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TCN4215", + "title": "Food Technology and Engineering", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "TC4215, CN4215E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TCN2122 & TCN3132", + "corequisite": "" + }, + { + "moduleCode": "TCN4216", + "title": "Electronic Materials Science", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 3 + ], + "preclusion": "TC4216, CN4216E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TCN1422", + "corequisite": "" + }, + { + "moduleCode": "TCN4217", + "title": "Processing of Microelectronic Materials", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "CN4217E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TCN1422", + "corequisite": "" + }, + { + "moduleCode": "TCN4227", + "title": "Advanced Process Control", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TC4227, CN4227E", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TCN3121", + "corequisite": "" + }, + { + "moduleCode": "TCN4229", + "title": "Computer Aided Chemical Engineering", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "CN4229E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TCN3421", + "corequisite": "" + }, + { + "moduleCode": "TCN4231", + "title": "Downstream Processing of Biochemical and Pharmaceutical Products", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "CN4231E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TCN4233", + "title": "Good Manufacturing Practices in Pharmaceutical Industry", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "CN4233R, PR2143, PR3145, PR4206, CN4233E", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TCN2122, TCN2125", + "corequisite": "" + }, + { + "moduleCode": "TCN4238", + "title": "Chemical & Biochemical Process Modeling", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "CN4238E", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TCN1111 & TCN3421", + "corequisite": "" + }, + { + "moduleCode": "TCN4240", + "title": "Unit Operations and Processes for Effluent Treatment", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "CN4240E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TCN4242", + "title": "Optimization of Chemical Processes", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "CN4242E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TCN2411 & TCN3421", + "corequisite": "" + }, + { + "moduleCode": "TCN4246", + "title": "Chemical And Bio-Catalysis", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "CN4246E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TD5101", + "title": "Specification of Complex Hardware/Software System", + "moduleCredit": 4, + "department": "Centre for Design Tech / DTI", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TD5102", + "title": "Embedded Systems in Silicon", + "moduleCredit": 4, + "department": "Centre for Design Tech / DTI", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TD5104", + "title": "Dsp Algorithms:design & Implementation", + "moduleCredit": 4, + "department": "Centre for Design Tech / DTI", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TD5201", + "title": "Basics of Product Development", + "moduleCredit": 4, + "department": "Centre for Design Tech / DTI", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TD5202", + "title": "Applied Engineering Statistics", + "moduleCredit": 4, + "department": "Centre for Design Tech / DTI", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TD5204", + "title": "Quality & Reliability By Design", + "moduleCredit": 4, + "department": "Centre for Design Tech / DTI", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TD5211", + "title": "Short Cycle Product Development Process", + "moduleCredit": 4, + "department": "Centre for Design Tech / DTI", + "faculty": "Engineering", + "semester": [], + "preclusion": "IE5211 New Product Management", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TD5215", + "title": "Human Aspects of Product Development and Quality", + "moduleCredit": 4, + "department": "Centre for Design Tech / DTI", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TD5235", + "title": "Design For X", + "moduleCredit": 4, + "department": "Centre for Design Tech / DTI", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TD5341", + "title": "Professional Development", + "moduleCredit": 2, + "department": "Centre for Design Tech / DTI", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TD5991", + "title": "Industrial Project", + "moduleCredit": 0, + "department": "Centre for Design Tech / DTI", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TD6109", + "title": "Embedded Systems Project", + "moduleCredit": 8, + "department": "Centre for Design Tech / DTI", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TD6209", + "title": "Product Design and Realization", + "moduleCredit": 10, + "department": "Centre for Design Tech / DTI", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TDEE2004", + "title": "Electronic Devices and Materials", + "moduleCredit": 4, + "department": "Electrical and Computer Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TE2002", + "title": "Engineering Mathematics II", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2 + ], + "preclusion": "TEE2002, TM2401, TME2401", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TE2102 or TG1401", + "corequisite": "" + }, + { + "moduleCode": "TE2003", + "title": "Advanced Mathematics for Engineers", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2 + ], + "preclusion": "TE2401, TEE2003", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TE2002", + "corequisite": "" + }, + { + "moduleCode": "TE2101", + "title": "Programming Methodology", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2 + ], + "preclusion": "TE1122, TEE2101, TIC1001", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TE3201", + "title": "Software Engineering", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TEE3201", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TE2101", + "corequisite": "" + }, + { + "moduleCode": "TE3801", + "title": "Robust Design Of Electronic Circuits", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TEE3801", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(EE2005E or EE2021E or TEE2027) and TE2003", + "corequisite": "" + }, + { + "moduleCode": "TE4001", + "title": "BTech Dissertation", + "moduleCredit": 12, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2, + 3 + ], + "preclusion": "TEE4001", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "Level 4 Standing.", + "corequisite": "" + }, + { + "moduleCode": "TEE2002", + "title": "Engineering Mathematics II", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2 + ], + "preclusion": "TE2002, TM2401, TME2401", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TE2102 or TTG1401", + "corequisite": "" + }, + { + "moduleCode": "TEE2003", + "title": "Advanced Mathematics for Engineers", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2 + ], + "preclusion": "TE2401, TE2003", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TEE2002", + "corequisite": "" + }, + { + "moduleCode": "TEE2011", + "title": "Engineering Electromagnetics", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "EE2011E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TEE2002", + "corequisite": "TEE2003" + }, + { + "moduleCode": "TEE2023", + "title": "Signals and Systems", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "EE2009E, EE2010E, EE2023E", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TTG1401", + "corequisite": "" + }, + { + "moduleCode": "TEE2026", + "title": "Digital Design", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "EE2020E, TEE2020", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "EE1002 or equivalent", + "corequisite": "TE2101 or TEE2101" + }, + { + "moduleCode": "TEE2027", + "title": "Electronic Circuits", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "EE2004E, EE2005E, EE2021E, TEE2021", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "EG1112 or equivalent", + "corequisite": "" + }, + { + "moduleCode": "TEE2028", + "title": "Microcontroller Programming and Interfacing", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "EE2007E, EE2024E, TEE2024", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "EE2020E or TEE2020 or TEE2026", + "corequisite": "TE2101 or TEE2101" + }, + { + "moduleCode": "TEE2033", + "title": "Integrated System Lab", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "(EE2031E and EE2032E) or (TEE2031 and TEE2032)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(EE2023E/TEE2023) and\n(EE2011E/TEE2011) and\n(EE2021E/TEE2021/TEE2027)", + "corequisite": "" + }, + { + "moduleCode": "TEE2101", + "title": "Programming Methodology", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2 + ], + "preclusion": "TE1122, TE2101, TIC1001", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TEE3013", + "title": "Labview for Electrical Engineers", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "EE3013E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(TEE2021 or TEE2027) and TTG1401", + "corequisite": "" + }, + { + "moduleCode": "TEE3031", + "title": "Innovation & Enterprise I", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TM4209, TME4209, EE3001E, EE3031E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Level 3 standing", + "corequisite": "" + }, + { + "moduleCode": "TEE3104", + "title": "Intro to RF and Microwave Sys & Circuits", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "EE3104E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TEE2011", + "corequisite": "" + }, + { + "moduleCode": "TEE3131", + "title": "Communication Systems", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "EE3103E, EE3131E", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TEE2023", + "corequisite": "" + }, + { + "moduleCode": "TEE3201", + "title": "Software Engineering", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TE3201", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TEE2101", + "corequisite": "" + }, + { + "moduleCode": "TEE3207", + "title": "Computer Architecture", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "EE3207E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TEE2024 or TEE2028", + "corequisite": "" + }, + { + "moduleCode": "TEE3208", + "title": "Embedded Computer Systems Design", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "TE3202, EE3208E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TEE2024 or TEE2028", + "corequisite": "" + }, + { + "moduleCode": "TEE3331", + "title": "Feedback Control Systems", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2 + ], + "preclusion": "EE2010E, EE3331E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TEE2023", + "corequisite": "" + }, + { + "moduleCode": "TEE3408", + "title": "Integrated Analog Design", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "EE3408E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TEE2021 or TEE2027", + "corequisite": "" + }, + { + "moduleCode": "TEE3431", + "title": "Microelectronics Materials and Devices", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "EE3406E, EE2004E, EE3431E", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "TEE2021 or TEE2027" + }, + { + "moduleCode": "TEE3501", + "title": "Power Electronics", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "EE3501E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TEE2021 or TEE2027", + "corequisite": "" + }, + { + "moduleCode": "TEE3506", + "title": "Electrical Energy Systems", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 3 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TEE3731", + "title": "Signal Processing Methods", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "EE3731E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TEE2003 and TEE2023", + "corequisite": "" + }, + { + "moduleCode": "TEE3801", + "title": "Robust Design Of Electronic Circuits", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TE3801", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(TEE2021 or TEE2027) and TEE2003", + "corequisite": "" + }, + { + "moduleCode": "TEE4001", + "title": "BTech Dissertation", + "moduleCredit": 12, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2, + 3 + ], + "preclusion": "TE4001", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "Level 4 standing", + "corequisite": "" + }, + { + "moduleCode": "TEE4101", + "title": "Radio-Frequency (RF) Communications", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "EE4101E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TEE2011", + "corequisite": "" + }, + { + "moduleCode": "TEE4112", + "title": "Radio Frequency Design and Systems", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "EE4112E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TEE2011", + "corequisite": "" + }, + { + "moduleCode": "TEE4113", + "title": "Digital Communications & Coding", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "EE4102E, EE4103E, EE4113E", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "TEE2003 & TEE3131", + "corequisite": "" + }, + { + "moduleCode": "TEE4204", + "title": "Computer Networks", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "CS2105, CS3103, EE3204E, TEE3204, EE4204E", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "TEE2003", + "corequisite": "" + }, + { + "moduleCode": "TEE4210", + "title": "Network Protocols and Applications", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "EE4210E, TIC2501", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TEE2003", + "corequisite": "" + }, + { + "moduleCode": "TEE4211", + "title": "Data Science for the Internet of Things", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "- TE2003/TEE2003 Advanced Mathematics for Engineers\n- Familiarity with the Python programming language", + "corequisite": "" + }, + { + "moduleCode": "TEE4214", + "title": "Real-Time Embedded Systems", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "EE4214E, TIC2401", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TEE2101 and (TEE2024 or TEE2028)", + "corequisite": "" + }, + { + "moduleCode": "TEE4303", + "title": "Industrial Control Systems", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "EE3302E, TEE3302, EE4303E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TEE3331", + "corequisite": "" + }, + { + "moduleCode": "TEE4305", + "title": "Introduction To Fuzzy/Neural Systems", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 3 + ], + "preclusion": "EE4305E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TEE2023", + "corequisite": "" + }, + { + "moduleCode": "TEE4407", + "title": "Analog Electronics", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "EE3407E, TEE3407, EE4407E", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "TEE2021 or TEE2027", + "corequisite": "" + }, + { + "moduleCode": "TEE4415", + "title": "Integrated Digital Design", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "EE4415E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TEE2020 or TEE2026", + "corequisite": "" + }, + { + "moduleCode": "TEE4435", + "title": "Modern Transistors and Memory Devices", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "EE4408E, EE4412E, EE4435E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TEE2021 or TEE2027", + "corequisite": "TEE3431" + }, + { + "moduleCode": "TEE4436", + "title": "Fabrication Process Technology", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "EE4411E, EE4436E", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TEE2021 or TEE2027", + "corequisite": "" + }, + { + "moduleCode": "TEE4704", + "title": "Introduction to Computer Vision and Image Processing", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "CS4243, EE3206E, TEE3206, EE4704E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TEE2023", + "corequisite": "" + }, + { + "moduleCode": "TG1401", + "title": "Engineering Mathematics I", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2 + ], + "preclusion": "TE2102 or TM1401 or TTG1401", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TG1422", + "title": "Financial And Management Accounting", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TG1423", + "title": "Industrial Management", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TG2415", + "title": "Ethics In Engineering", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 3 + ], + "preclusion": "TTG2415", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TG3001", + "title": "Industrial Practice", + "moduleCredit": 12, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2, + 3 + ], + "preclusion": "TG3002, TTG3002, TTG3001, TIC3901", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "Completed at least 76MC of modules, including Advanced Placement Credits", + "corequisite": "" + }, + { + "moduleCode": "TG3002", + "title": "Industrial Practice", + "moduleCredit": 8, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2, + 3 + ], + "preclusion": "TG3001, TTG3001, TTG3002, TIC3901", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "Completed at least 76MC of modules, including Advanced Placement Credits", + "corequisite": "" + }, + { + "moduleCode": "TG3101A", + "title": "Independent Study", + "moduleCredit": 2, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "TTG3101A", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Level 3 standing and approval from Dean of SCALE", + "corequisite": "" + }, + { + "moduleCode": "TG3101B", + "title": "Independent Study", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "TTG3101B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Level 3 standing and approval from Dean of SCALE", + "corequisite": "" + }, + { + "moduleCode": "TIC1001", + "title": "Introduction to Computing and Programming I", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TE2101, TEE2101", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TIC1002", + "title": "Introduction to Computing and Programming II", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "TIC1001", + "corequisite": "" + }, + { + "moduleCode": "TIC1101", + "title": "Professional, Ethical, and Social Issues in Computing", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TIC1201", + "title": "Discrete Structures", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TMA1001", + "corequisite": "" + }, + { + "moduleCode": "TIC2001", + "title": "Data Structures and Algorithms", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "TIC1002", + "corequisite": "" + }, + { + "moduleCode": "TIC2002", + "title": "Introduction to Software Engineering", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TIC2001", + "corequisite": "" + }, + { + "moduleCode": "TIC2003", + "title": "Software Development Project", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TIC2001 and TIC2601", + "corequisite": "" + }, + { + "moduleCode": "TIC2101", + "title": "Information Systems and Organisations", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 3 + ], + "preclusion": "", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TIC2301", + "title": "Introduction to Information Security", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TIC1002", + "corequisite": "" + }, + { + "moduleCode": "TIC2401", + "title": "Introduction to Computer Systems", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "EE4214E, TEE4214", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TIC1002", + "corequisite": "" + }, + { + "moduleCode": "TIC2501", + "title": "Computer Networks and Applications", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "EE4210E, TEE4210", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TIC1002", + "corequisite": "" + }, + { + "moduleCode": "TIC2601", + "title": "Database and Web Applications", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TIC1002", + "corequisite": "" + }, + { + "moduleCode": "TIC2701", + "title": "Principles of Programming Languages", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TIC2001", + "corequisite": "" + }, + { + "moduleCode": "TIC2901", + "title": "Communications for Computing Professionals", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed as least 40MCs of program requirements excluding APC", + "corequisite": "" + }, + { + "moduleCode": "TIC3001", + "title": "Software Requirements Analysis and Design", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TIC2002 and TIC2601", + "corequisite": "" + }, + { + "moduleCode": "TIC3002", + "title": "User Interface Design and Implementation", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TIC2002 and TIC2601", + "corequisite": "" + }, + { + "moduleCode": "TIC3301", + "title": "Information Security Management", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TIC2301 and TIC2101", + "corequisite": "" + }, + { + "moduleCode": "TIC3302", + "title": "Computer Systems Security", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TIC2301 and TIC2401 and TIC2501", + "corequisite": "" + }, + { + "moduleCode": "TIC3901", + "title": "Industrial Practice", + "moduleCredit": 12, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2, + 3 + ], + "preclusion": "TG3001, TTG3001, TG3002, TTG3002", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "Completed at least 40 MCs of programme requirements, excluding Advanced Placement Credits", + "corequisite": "" + }, + { + "moduleCode": "TIC4001", + "title": "Software Engineering Practicum I", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TIC3001", + "corequisite": "" + }, + { + "moduleCode": "TIC4002", + "title": "Software Engineering Practicum II", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TIC3001", + "corequisite": "" + }, + { + "moduleCode": "TIC4003", + "title": "Software Project Management", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TIC4001 or TIC4002", + "corequisite": "" + }, + { + "moduleCode": "TIC4004", + "title": "Software Quality Control", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TIC4001 or TIC4002", + "corequisite": "" + }, + { + "moduleCode": "TIC4005", + "title": "Parallel and Distributed Software Engineering", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TIC3001 and TIC2401 and TIC2501", + "corequisite": "" + }, + { + "moduleCode": "TIC4301", + "title": "Information Security Practicum I", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TIC3301 and TIC3302", + "corequisite": "" + }, + { + "moduleCode": "TIC4302", + "title": "Information Security Practicum II", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TIC3301 and TIC3302", + "corequisite": "" + }, + { + "moduleCode": "TIC4303", + "title": "Software Security", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TIC2002 and TIC2301", + "corequisite": "" + }, + { + "moduleCode": "TIC4304", + "title": "Web Security", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TIC2601 and TIC3302", + "corequisite": "" + }, + { + "moduleCode": "TIC4305", + "title": "Network Security", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TIC3302", + "corequisite": "" + }, + { + "moduleCode": "TIC4306", + "title": "Information Security Governance and Audit", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TIC3301", + "corequisite": "" + }, + { + "moduleCode": "TIC4901", + "title": "Independent Project", + "moduleCredit": 8, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed at least 56 MCs of programme requirement.", + "corequisite": "" + }, + { + "moduleCode": "TIC4902", + "title": "Capstone Computing Project", + "moduleCredit": 12, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed at least 76 MCs of programme requirement.", + "corequisite": "" + }, + { + "moduleCode": "TIE2010", + "title": "Introduction to Industrial System", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TM3161, IE2010E", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TIE2020", + "title": "Probability and Statistics", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "IE2120E, TMA2103, TIE2120, IE2020E", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TIE2030", + "title": "Programming Methodology with Python", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TE2101/TEE2101 Programming Methodology TIC1001 Introduction to Computing and Programming I", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TIE2100", + "title": "Probability Models with Applications", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "DSC3215, IE2100E", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "ST2131/TS2120/IE2120E/TIE2120" + }, + { + "moduleCode": "TIE2110", + "title": "Operations Research I", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "DSC3214, MA2215, MA3236, IE2110E", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "MA1102R/MA1505/MA1506/TE2102/TG1401/TTG1401" + }, + { + "moduleCode": "TIE2130", + "title": "Quality Engineering I", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2 + ], + "preclusion": "TM4271, IE2130E", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "MA1505, MA1506 or SA1101, or ST1131, or ST1131A, or ST1232, or ST2334 or TE2102 or TG1401 or TM1401 or TS2120 or IE2120E or TEE2102 or TTG1401 or TIE2120" + }, + { + "moduleCode": "TIE2140", + "title": "Engineering Economy", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "IE2140E", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TIE2150", + "title": "Human Factors Engineering", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "IE2150E", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TIE3010", + "title": "Systems Thinking and Design", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "IE3010E", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TIE3100", + "title": "Systems Design Project", + "moduleCredit": 8, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2, + 3 + ], + "preclusion": "IE3100E", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "Level 3 standing", + "corequisite": "" + }, + { + "moduleCode": "TIE3101", + "title": "Statistics for Engineering Applications", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "IE3101E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "ST1131/ST2131/ST1232/TS2120/IE2120E/TIE2120" + }, + { + "moduleCode": "TIE3110", + "title": "Simulation", + "moduleCredit": 5, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "DSC3221, IE3110E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "TIE2100/DSC3215, IE2100E" + }, + { + "moduleCode": "TIE4101", + "title": "B.Tech. Dissertation", + "moduleCredit": 8, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2, + 3 + ], + "preclusion": "IE4101E, IE4100E", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "Stage 4 standing", + "corequisite": "" + }, + { + "moduleCode": "TIE4203", + "title": "Decision Analysis in Industrial & Operations Management", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TIE2120/IE2120E/TIE2020 Probability & Statistics", + "corequisite": "" + }, + { + "moduleCode": "TIE4212", + "title": "Advanced Modeling in Operations Management", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 3 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IE2110E/TIE2110 Operations Research I", + "corequisite": "" + }, + { + "moduleCode": "TIE4220", + "title": "Supply Chain Modelling", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "IE4220E", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "IE2100E/TIE2100 & IE2110E/TIE2110" + }, + { + "moduleCode": "TIE4229", + "title": "Selected Topics in Logistics", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "IE4229E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TIE2110", + "corequisite": "" + }, + { + "moduleCode": "TIE4230", + "title": "Quality Engineering II", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "IE4230E", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "IE2130E/TIE2130 & IE3101E/TIE3101" + }, + { + "moduleCode": "TIE4239", + "title": "Selected Topics in Quality Engineering", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 3 + ], + "preclusion": "IE4239E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TIE2100, TIE3101", + "corequisite": "" + }, + { + "moduleCode": "TIE4240", + "title": "Project Management", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "IE4240E", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "TIE2140, IE2140E" + }, + { + "moduleCode": "TIE4242", + "title": "Cost Analysis And Management", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "IE4242E", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TIE2140", + "corequisite": "" + }, + { + "moduleCode": "TIE4246", + "title": "New Product Management and Innovation", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TIE2140 Engineering Economy", + "corequisite": "" + }, + { + "moduleCode": "TIE4249", + "title": "Selected Topics in Engineering Management", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "IE4249E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TIE2140", + "corequisite": "" + }, + { + "moduleCode": "TIE4252", + "title": "Introduction to Systems Engineering", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IE3010E/TIE3010 Systems Thinking and Design", + "corequisite": "" + }, + { + "moduleCode": "TIE4259", + "title": "Selected Topics in Systems Engineering", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "IE4259E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TIE4299", + "title": "Selected Topics in Industrial Engineering", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "IE4299E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TIE2010", + "corequisite": "" + }, + { + "moduleCode": "TM2401", + "title": "Engineering Mathematics II", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2 + ], + "preclusion": "TE2002 or TC2401 or TC1402 or TM1402 or TME2401", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "TG1401" + }, + { + "moduleCode": "TM3101", + "title": "Mechanical Systems Design", + "moduleCredit": 6, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TME3101", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TM2101 or ME2101E", + "corequisite": "" + }, + { + "moduleCode": "TM4101", + "title": "B.Tech. Dissertation", + "moduleCredit": 12, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2, + 3 + ], + "preclusion": "TM4102, TME4102", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "Senior Level 3 Standing (For AY 2006/2007 intake & earlier); Level 4 standing (For AY 2007/2008 intake onwards)", + "corequisite": "" + }, + { + "moduleCode": "TM4102", + "title": "B.Tech. Dissertation", + "moduleCredit": 8, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2 + ], + "preclusion": "TME4102, TM4101", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "Stage 4 standing", + "corequisite": "" + }, + { + "moduleCode": "TM4263", + "title": "Manufact'G Simulat'N & Data Communicat'N", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 3 + ], + "preclusion": "TME4263", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ME3162 , ME3162E, TME2162, TM2162, ME2162E", + "corequisite": "" + }, + { + "moduleCode": "TM4264", + "title": "Fundamentals of Automotive Engineering", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TME4264", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TMA1001", + "title": "Introductory Mathematics", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TMA2101", + "title": "Calculus for Computing", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TMA1001", + "corequisite": "" + }, + { + "moduleCode": "TMA2102", + "title": "Linear Algebra", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2, + 3 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TMA1001", + "corequisite": "" + }, + { + "moduleCode": "TMA2103", + "title": "Probability and Statistics", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "IE2120, TIE2120, TIE3101, IE3101E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TMA2101", + "corequisite": "" + }, + { + "moduleCode": "TME2101", + "title": "Fundamentals of Mechanical Design", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TM2101, ME2101E", + "attributes": [ + true, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TME2114", + "title": "Mechanics of Materials II", + "moduleCredit": 3, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TM1111, ME2114E, ME2114", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "ME2112 or equivalent", + "corequisite": "" + }, + { + "moduleCode": "TME2121", + "title": "Engineering Thermodynamics", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TM1121, ME2121E", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "PC1431 or PC1431FC or PC1431X or equivalent", + "corequisite": "" + }, + { + "moduleCode": "TME2134", + "title": "Fluid Mechanics I", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TM1131, ME2134E", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TME2135", + "title": "Fluid Mechanics II", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TM2131, ME2135E, ME2135", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TME2134, ME2134E", + "corequisite": "" + }, + { + "moduleCode": "TME2142", + "title": "Feedback Control Systems", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TM3142, ME2142E", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "TME2401, TM2401", + "corequisite": "" + }, + { + "moduleCode": "TME2143", + "title": "Sensors and Actuators", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TM2141, ME2143E, ME2143", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "PC1431 or PC1431FC or PC1431X or equivalent", + "corequisite": "" + }, + { + "moduleCode": "TME2151", + "title": "Principles of Mechanical Engineering Materials", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TM1151, ME2151E", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TME2162", + "title": "Manufacturing Processes", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TM2162, ME3162E, TME3162", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TME2401", + "title": "Engineering Mathematics II", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2 + ], + "preclusion": "TE2002 or TEE2002 or TC2401 or TC1402 or TM1402", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "TTG1401, TG1401" + }, + { + "moduleCode": "TME3101", + "title": "Mechanical Systems Design", + "moduleCredit": 6, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TM3101", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TME2101, ME2101E", + "corequisite": "" + }, + { + "moduleCode": "TME3112", + "title": "Mechanics of Machines", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2 + ], + "preclusion": "TM2112, ME3112E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TME3122", + "title": "Heat Transfer", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TM2122, ME3122E, ME2143", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TME3211", + "title": "Mechanics of Solids", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TM3211, ME3211E", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + true, + false + ], + "prerequisite": "TME2114, ME2114E", + "corequisite": "" + }, + { + "moduleCode": "TME3233", + "title": "Unsteady Flow in Fluid Systems", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "ME3233, ME3233E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TME2135 or equivalent", + "corequisite": "" + }, + { + "moduleCode": "TME3241", + "title": "Microprocessor Applications", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TM3241, ME3241E", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "TME2143, ME2143E" + }, + { + "moduleCode": "TME3242", + "title": "Automation", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TM3242, ME3242E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "TME2143, ME2143E" + }, + { + "moduleCode": "TME3251", + "title": "Materials For Engineers", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TM3251, ME3251E, ME2143, ME3252", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TME2151, ME2151E", + "corequisite": "" + }, + { + "moduleCode": "TME3261", + "title": "Computer-Aided Design and Manufacturing", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TM3261, ME3261E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "TME3162, ME3162E, TM2162, ME2162E and TME2162" + }, + { + "moduleCode": "TME3263", + "title": "Design for Manufacturing and Assembly", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TM3261, ME3263E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "ME3162E, TME3162, TM2162, ME2162E and TME2162" + }, + { + "moduleCode": "TME4102", + "title": "B.Tech. Dissertation", + "moduleCredit": 8, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2, + 3 + ], + "preclusion": "TM4102, TM4101", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "Stage 4 standing", + "corequisite": "" + }, + { + "moduleCode": "TME4209", + "title": "The Management Of New Prod. Development", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "TM4209", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TME4213", + "title": "Vibration Theory & Applications", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "TM3213, ME4213E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TME3112, ME3112E", + "corequisite": "" + }, + { + "moduleCode": "TME4223", + "title": "Thermal Environmental Engineering", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TM3223, ME4223E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TME2121 & TME3122, ME2121E, ME3122E", + "corequisite": "" + }, + { + "moduleCode": "TME4225", + "title": "Applied Heat Transfer", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TM4225, ME4225E, ME2143", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TME3122, ME3122E", + "corequisite": "" + }, + { + "moduleCode": "TME4245", + "title": "Robot Mechanics and Control", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TM4245, ME4245E", + "attributes": [ + false, + false, + true, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TME2142; TEE3331; ME2142E; EE3331E", + "corequisite": "" + }, + { + "moduleCode": "TME4251", + "title": "Thermal Engineering Of Materials", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "TM4251, ME4251E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TME2151, ME2151E", + "corequisite": "" + }, + { + "moduleCode": "TME4254", + "title": "Materials in Engineering Design", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "TM4254, ME4254E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TME2151, ME2151E", + "corequisite": "" + }, + { + "moduleCode": "TME4256", + "title": "Functional Materials and Devices", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "ME4256, ME4256E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TME2151, TME2143, ME2151E, ME2143E", + "corequisite": "" + }, + { + "moduleCode": "TME4261", + "title": "Tool Engineering", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TM4261, ME4261E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "TME3162, ME3162E, TM2162, ME2162E and TME2162" + }, + { + "moduleCode": "TME4262", + "title": "Automation in Manufacturing", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TM4262, ME4262E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "TME3162, ME3162E, TM2162, ME2162E and TME2162" + }, + { + "moduleCode": "TME4263", + "title": "Manufact'G Simulat'N & Data Communicat'N", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 3 + ], + "preclusion": "TM4263", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TME3162, ME3162, ME3162E, TME2162, TM2162, ME2162E", + "corequisite": "" + }, + { + "moduleCode": "TME4264", + "title": "Fundamentals of Automotive Engineering", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "TM4264", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TME4283", + "title": "Micro-Fabrication Processes", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "TM4283, ME4283E", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TP5001", + "title": "Research Project", + "moduleCredit": 8, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + true, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TP5025", + "title": "Intelligent Transportation Systems and Simulation", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "TCE5025", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE3121, or CE4-standing or higher", + "corequisite": "" + }, + { + "moduleCode": "TP5026", + "title": "Transportation Management & Policy", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [], + "preclusion": "TCE5026", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE4 standing or higher", + "corequisite": "" + }, + { + "moduleCode": "TP5028", + "title": "Intermodal Transportation Operations", + "moduleCredit": 4, + "department": "Civil and Environmental Engineering", + "faculty": "Engineering", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + true, + false, + false + ], + "prerequisite": "CE4 standing or higher", + "corequisite": "" + }, + { + "moduleCode": "TR2201", + "title": "Entrepreneurial Marketing", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "TR3003", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR2201A", + "title": "Entrepreneurial Marketing", + "moduleCredit": 4, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [], + "preclusion": "TR3003", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR2201B", + "title": "Entrepreneurial Marketing", + "moduleCredit": 4, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [], + "preclusion": "TR3003", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR2201Y", + "title": "Entrepreneurial Marketing", + "moduleCredit": 4, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [], + "preclusion": "TR3003", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR3000", + "title": "Independent Study Module in Entrepreneurship", + "moduleCredit": 4, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Applicable to NOC students only", + "corequisite": "" + }, + { + "moduleCode": "TR3001", + "title": "New Product Development", + "moduleCredit": 4, + "department": "Marketing", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR3002", + "title": "New Venture Creation", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 1, + 2 + ], + "preclusion": "TR3004, TR3005", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR3002A", + "title": "New Venture Creation", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "TR3004, TR3005", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR3002B", + "title": "New Venture Creation", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "TR3004, TR3005", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR3002N", + "title": "New Venture Creation", + "moduleCredit": 4, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "TR3004, TR3005", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR3003", + "title": "Global Entrepreneurial Marketing", + "moduleCredit": 4, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [], + "preclusion": "TR2201", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR3004", + "title": "Engineering Entrepreneurship I (C)", + "moduleCredit": 4, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [], + "preclusion": "TR3002", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR3005", + "title": "Engineering Entrepreneurship II", + "moduleCredit": 4, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [], + "preclusion": "TR3002", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TR3004", + "corequisite": "" + }, + { + "moduleCode": "TR3006", + "title": "High-Tech Product And Market Development", + "moduleCredit": 4, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [], + "preclusion": "TR2201, TR3001, TR3003", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TR3004", + "corequisite": "" + }, + { + "moduleCode": "TR3007", + "title": "Entrepreneurial Finance", + "moduleCredit": 4, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR3008", + "title": "Technological Innovation", + "moduleCredit": 4, + "department": "Strategy and Policy", + "faculty": "NUS Business School", + "semester": [ + 2 + ], + "preclusion": "IS3251; TR2202.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR3008A", + "title": "Technological Innovation", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "IS3251; TR2202.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR3008B", + "title": "Technological Innovation", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "IS3251; TR2202.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR3010", + "title": "Ideation - Creating A Business Idea", + "moduleCredit": 6, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR3011", + "title": "Planning-Developing A Venture", + "moduleCredit": 6, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR3012", + "title": "Execution - Running your own Company", + "moduleCredit": 6, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR3013", + "title": "Growth - Managing your Firm", + "moduleCredit": 6, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR3014", + "title": "Globalization of New Ventures", + "moduleCredit": 4, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TR2201: Entrepreneurial Marketing or TR3003: Global\nEntrepreneurial Marketing or equivalent. These modules both provide foundation tools and concepts that will help in market opportunity assessment, target market selection, and go-to-market strategies.", + "corequisite": "TR2201: Entrepreneurial Marketing or TR3003: Global Entrepreneurial Marketing or equivalent. These modules both provide foundation tools and concepts that will help in market opportunity assessment, target market selection, and go-to-market strategies." + }, + { + "moduleCode": "TR3049", + "title": "Topics in Entrepreneurship (TIE)", + "moduleCredit": 4, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Depends on the topics offered, there can be prerequisite(s) on existing modules offering similar topics for example new venture creation or new product development.", + "corequisite": "Depends on the topics offered, there can be preclusion(s) on existing modules offering similar topics for example new venture creation or new product development." + }, + { + "moduleCode": "TR3201", + "title": "Entrepreneurship Practicum", + "moduleCredit": 8, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [], + "preclusion": "TR3101", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR3201N", + "title": "Entrepreneurship Practicum", + "moduleCredit": 8, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "TR3101", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR3202", + "title": "Start-up Internship Programme", + "moduleCredit": 12, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [], + "preclusion": "TR3102", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR3202I", + "title": "Start-up Internship ProgrammeStart-up Internship Programme", + "moduleCredit": 12, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "TR3102", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR3202N", + "title": "Start-up Internship Programme", + "moduleCredit": 12, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "TR3102", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR3202S", + "title": "Start-up Internship Programme", + "moduleCredit": 12, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "TR3102", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR3202T", + "title": "Start-up Internship Programme", + "moduleCredit": 12, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "TR3102", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR3203", + "title": "Start-up Case Study & Analysis", + "moduleCredit": 8, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [], + "preclusion": "TR3103", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR3203E", + "title": "Start-up Case Study & Analysis", + "moduleCredit": 8, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR3203I", + "title": "Start-up Case Study & Analysis", + "moduleCredit": 8, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "TR3103", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR3203N", + "title": "Start-up Case Study & Analysis", + "moduleCredit": 8, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "TR3103", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR3203P", + "title": "Start-up Case Study & Analysis", + "moduleCredit": 8, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR3203T", + "title": "Start-up Case Study & Analysis", + "moduleCredit": 8, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "TR3103", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR3204", + "title": "Entrepreneurship Practicum (Short)", + "moduleCredit": 4, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [], + "preclusion": "TR3201 Entrepreneurial Practicum (8 MCs)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR3204S", + "title": "Entrepreneurship Practicum (Short)", + "moduleCredit": 4, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "TR3201 Entrepreneurial Practicum (8 MCs)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR3204T", + "title": "Entrepreneurship Practicum (Short)", + "moduleCredit": 4, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "TR3201 Entrepreneurial Practicum (8 MCs)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR3301", + "title": "Summer Programme in Entrepreneurship", + "moduleCredit": 4, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [ + 4 + ], + "preclusion": "TR5301 Summer Program in Entrepreneurship", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR4001", + "title": "Global Entrepreneurial Leadership", + "moduleCredit": 4, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR4049", + "title": "Seminars in Entrepreneurship", + "moduleCredit": 4, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Depends on the topics offered, there can be prerequisite(s) on existing modules offering similar topics for example new venture creation or new product development.\n\nOpen to students from FASS (Global Studies) who have completed 80 MCs with a minimum of 28 MCs in their major with a minimum CAP of 3.20 or be on the Honours track\n\nCohort 2020 onwards: Depends on the topics offered, there can be prerequisite(s) on existing modules offering similar topics for example new venture creation or new product development.", + "corequisite": "Depends on the topics offered, there can be preclusion(s) on existing modules offering similar topics for example new venture creation or new product development." + }, + { + "moduleCode": "TR4049N", + "title": "Seminars in Entrepreneurship - Lean Startup: Market Validation", + "moduleCredit": 4, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Depends on the topics offered, there can be prerequisite(s) on existing modules offering similar topics for example new venture creation or new product development.\n\nOpen to students from FASS (Global Studies) who have completed 80 MCs with a minimum of 28 MCs in their major with a minimum CAP of 3.20 or be on the Honours track\n\nCohort 2020 onwards: Depends on the topics offered, there can be prerequisite(s) on existing modules offering similar topics for example new venture creation or new product development.", + "corequisite": "Depends on the topics offered, there can be preclusion(s) on existing modules offering similar topics for example new venture creation or new product development." + }, + { + "moduleCode": "TR4049S", + "title": "Seminars in Entrepreneurship - Lean Startup: Market Validation", + "moduleCredit": 4, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Depends on the topics offered, there can be prerequisite(s) on existing modules offering similar topics for example new venture creation or new product development.\n\nOpen to students from FASS (Global Studies) who have completed 80 MCs with a minimum of 28 MCs in their major with a minimum CAP of 3.20 or be on the Honours track\n\nCohort 2020 onwards: Depends on the topics offered, there can be prerequisite(s) on existing modules offering similar topics for example new venture creation or new product development.", + "corequisite": "Depends on the topics offered, there can be preclusion(s) on existing modules offering similar topics for example new venture creation or new product development." + }, + { + "moduleCode": "TR4049T", + "title": "Seminars in Entrepreneurship - Lean Startup: Market Validation", + "moduleCredit": 4, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Depends on the topics offered, there can be prerequisite(s) on existing modules offering similar topics for example new venture creation or new product development.\n\nOpen to students from FASS (Global Studies) who have completed 80 MCs with a minimum of 28 MCs in their major with a minimum CAP of 3.20 or be on the Honours track\n\nCohort 2020 onwards: Depends on the topics offered, there can be prerequisite(s) on existing modules offering similar topics for example new venture creation or new product development.", + "corequisite": "Depends on the topics offered, there can be preclusion(s) on existing modules offering similar topics for example new venture creation or new product development." + }, + { + "moduleCode": "TR4203", + "title": "Business Opportunities In ICT", + "moduleCredit": 6, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR4204", + "title": "Design & Innovation in Context", + "moduleCredit": 6, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR5049", + "title": "Lean Startup Practicum", + "moduleCredit": 12, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR5105", + "title": "Technopreneurship", + "moduleCredit": 4, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR5301", + "title": "Summer Program in Entrepreneurship", + "moduleCredit": 4, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [ + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TR5302", + "title": "Experiential Entrepreneurship Internship", + "moduleCredit": 8, + "department": "NUS Entrepreneurship Centre", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TS1101E", + "title": "Introduction to Theatre and Performance", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "GEM1003", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Exempted from NUS Qualifying English Test, or passed NUS \nQualifying English Test, or exempted from further CELC Remedial English modules.", + "corequisite": "" + }, + { + "moduleCode": "TS2217", + "title": "Introduction to Performance Studies", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TS1101E or GEM1003", + "corequisite": "" + }, + { + "moduleCode": "TS2221", + "title": "Global Theatres", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TS2232", + "title": "Asian Theatres: Tradition and the Contemporary", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "GEM2001", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TS1101E", + "corequisite": "" + }, + { + "moduleCode": "TS2233", + "title": "Making Contemporary Performance", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TS1101E or GEM1003", + "corequisite": "" + }, + { + "moduleCode": "TS2234", + "title": "Cultural Policy, the Arts and Society", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TS1101E or GEM1003", + "corequisite": "" + }, + { + "moduleCode": "TS2235", + "title": "Marketing the Arts and Leisure Services", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TS1101E or GEM1003", + "corequisite": "" + }, + { + "moduleCode": "TS2236", + "title": "Crossing Boundaries in Performance", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TS1101E or GEM1003", + "corequisite": "" + }, + { + "moduleCode": "TS2237", + "title": "As If: Actors and Acting", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TS1101E or GEM1003", + "corequisite": "" + }, + { + "moduleCode": "TS2239", + "title": "Major Playwrights of the 20th Century", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TS1101E or EN1101E or GEM1003", + "corequisite": "" + }, + { + "moduleCode": "TS2240", + "title": "Voice Studies and Production", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TS1101E or GEM1003", + "corequisite": "" + }, + { + "moduleCode": "TS2241", + "title": "Writing the Short Film", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TS2242", + "title": "Intercultural Performance Practice", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TS1101E or GEM1003", + "corequisite": "" + }, + { + "moduleCode": "TS2243", + "title": "Film Genres: Stars and Styles", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "GEM2026", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TS2880", + "title": "Topics in Theatre", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TS1101E or GEM1003", + "corequisite": "" + }, + { + "moduleCode": "TS2880A", + "title": "Modern Drama in Asia", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TS1101E or GEM1003", + "corequisite": "" + }, + { + "moduleCode": "TS3103", + "title": "Theatre Lab", + "moduleCredit": 8, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TS major students who have completed a minimum of 80 MCs.", + "corequisite": "" + }, + { + "moduleCode": "TS3222", + "title": "Applied Theatre", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "TS4880B Applied Theatre", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TS1101E or GEM1003", + "corequisite": "" + }, + { + "moduleCode": "TS3231", + "title": "History and Theory of Western Theatre 2", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TS3232", + "title": "Performance & Social Space", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TS1101E / GEM1003 Introduction to Theatre and Performance", + "corequisite": "" + }, + { + "moduleCode": "TS3233", + "title": "Southeast Asian Performance", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TS1101E or GEM1003", + "corequisite": "" + }, + { + "moduleCode": "TS3234", + "title": "Performance and Popular Culture", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TS1101E or GEM1003", + "corequisite": "" + }, + { + "moduleCode": "TS3235", + "title": "Singapore English-Language Theatre", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "SSA3201", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TS1101E or GEM1003", + "corequisite": "" + }, + { + "moduleCode": "TS3236", + "title": "Theatre Ecologies", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TS1101E or GEM1003 or GEH1058 or GEK1055", + "corequisite": "" + }, + { + "moduleCode": "TS3237", + "title": "Acting and Directing in Asian Theatre", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TS1101E or GEM1003", + "corequisite": "" + }, + { + "moduleCode": "TS3238", + "title": "Acting for the Screen", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TS1101E or GEM1003", + "corequisite": "" + }, + { + "moduleCode": "TS3239", + "title": "Reading Asian Drama", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TS1101E or GEM1003", + "corequisite": "" + }, + { + "moduleCode": "TS3240", + "title": "Theatre Criticism", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TS1101E or GEM1003", + "corequisite": "" + }, + { + "moduleCode": "TS3241", + "title": "Modern Drama", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EN3267", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TS1101E or GEM1003", + "corequisite": "So long as students have fulfilled EN1101E/GEK1000, they may take this EN level-3000 module in the same semester as they are taking one of the following modules (EN2201, EN2202, EN2203, EN2204, EN2205, EN2207)." + }, + { + "moduleCode": "TS3242", + "title": "Intercultural Theatre", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TS1101E or GEM1003", + "corequisite": "" + }, + { + "moduleCode": "TS3243", + "title": "Stage and Screen", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TS3244", + "title": "Voice and Text", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TS1101E", + "corequisite": "" + }, + { + "moduleCode": "TS3245", + "title": "Professional Theatre Internship", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TS1101E. Only for TS Major students who are in or going into their third year.", + "corequisite": "" + }, + { + "moduleCode": "TS3246", + "title": "Shakespeare and Asian Performances", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TS1101E or GEM1003 or EN1101E or GEK1000", + "corequisite": "" + }, + { + "moduleCode": "TS3247", + "title": "Digital Archiving and Performance", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TS1101E or GEM1003", + "corequisite": "" + }, + { + "moduleCode": "TS3248", + "title": "Theatre and Orientalism", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TS1101E Introduction to Theatre and Performance", + "corequisite": "" + }, + { + "moduleCode": "TS3551", + "title": "FASS Undergraduate Research Opportunity (UROP)", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must:\nhave declared a Major, completed a minimum of 24 MCs in that Major, and have a CAP of at least 3.20.", + "corequisite": "" + }, + { + "moduleCode": "TS3880", + "title": "Topics in Group Practice Research", + "moduleCredit": 8, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TS1101E", + "corequisite": "" + }, + { + "moduleCode": "TS4212", + "title": "Playwriting: Practice and Production", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EN3271", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in TS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "TS4214", + "title": "Arts and the Law", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in TS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "TS4216", + "title": "Theatre and Gender", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in TS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "TS4217", + "title": "Cultural Performance in Asia", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in TS or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in TS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "TS4218", + "title": "Theatre and Postmodernism", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in TS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "TS4219", + "title": "Media and Popular Performance", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in TS or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in TS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "TS4220", + "title": "Shakespeare and Film", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2019 and before: Completed 80 MCs, including 28 MCs in TS or 28 MCs in EN or 28 MCs in EU/LA (French/ German/Spanish)/recognised modules or 28 MCs in GL/GL recognised non-language modules, with a minimum CAP of 3.20 or be on the Honours track.\n\nCohort 2020 onwards: Completed 80 MCs, including 28 MCs in TS or 28 MCs in EN or 28 MCs in EU/LA (French/ German/Spanish)/recognised modules, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "TS4221", + "title": "Performance Research", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in TS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "TS4222", + "title": "Performance as Research in Applied Theatre", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in TS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "TS4222A", + "title": "Performance as Research in Applied Theatre", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in TS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "TS4401", + "title": "Honours Thesis", + "moduleCredit": 15, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "TS4660", + "attributes": [ + false, + false, + false, + false, + true, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012 and before:\nCompleted 110 MCs, including 60 MCs of TS major requirements with a minimum CAP of 3.50.\n\nCohort 2013-2015:\nCompleted 110 MCs including 60 MCs of TS major requirements with a minimum SJAP of 4.00 and CAP of 3.50, or with recommendation by the programme committee. Students may seek a waiver of the SJAP pre-requisite from the department if they have a minimum CAP of 4.25 after completing 110 MCs.\n\nCohort 2016 onwards:\nCompleted 110 MCs including 44 MCs of TS major requirements with a minimum SJAP of 4.00 and CAP of 3.50, or with recommendation by the programme committee. Students may seek a waiver of the SJAP pre-requisite from the department if they have a minimum CAP of 4.25 after completing 110 MCs.", + "corequisite": "" + }, + { + "moduleCode": "TS4660", + "title": "Independent Study", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "TS4401", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012-2015:\nCompleted 100 MCs, including 60 MCs in TS, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nCompleted 100 MCs, including 44 MCs in TS, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "TS4880", + "title": "Topics in Theatre", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in TS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "TS4880C", + "title": "Contemporary Performance Practices", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed 80 MCs, including 28 MCs in TS, with a minimum CAP of 3.20 or be on the Honours track.", + "corequisite": "" + }, + { + "moduleCode": "TS5101", + "title": "Text and Performance", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TS5101R", + "title": "Text and Performance", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate Student in the University or with the approval of the Department", + "corequisite": "" + }, + { + "moduleCode": "TS5212", + "title": "Asian International Cinema", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate Student in the University or with the approval of the Department", + "corequisite": "" + }, + { + "moduleCode": "TS5212R", + "title": "Asian International Cinema", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate Student in the University or with the approval of the Department", + "corequisite": "" + }, + { + "moduleCode": "TS5213", + "title": "Performing Shakespeare in Asia", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student in the university or with the approval of the Department.", + "corequisite": "" + }, + { + "moduleCode": "TS5213R", + "title": "Performing Shakespeare in Asia", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate student in the university or with the approval of the Department.", + "corequisite": "" + }, + { + "moduleCode": "TS5232", + "title": "Performance, History and Cultural Memory", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate Student in the University or with the approval of the Department", + "corequisite": "" + }, + { + "moduleCode": "TS5232R", + "title": "Performance, History and Cultural Memory", + "moduleCredit": 5, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate Student in the University or with the approval of the Department", + "corequisite": "" + }, + { + "moduleCode": "TS5660", + "title": "Independent Study", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Must be registered as a Graduate Student in the University or with the approval of the Department", + "corequisite": "" + }, + { + "moduleCode": "TS6660", + "title": "Independent Study", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Admission to the PhD programme or doctoral competence in the discipline to be determined by the Department upon recommendation by the instruction", + "corequisite": "" + }, + { + "moduleCode": "TS6770", + "title": "Graduate Research Seminar", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Admission to the Ph.D. programme or doctoral competence in the discipline to be determined by the Department upon recommendation by the instructor.", + "corequisite": "" + }, + { + "moduleCode": "TS6880", + "title": "Advanced Topics in Theatre", + "moduleCredit": 4, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Admission to the Ph.D. programme or doctoral competence in the discipline to be determined by the Department upon recommendation by the instructor.", + "corequisite": "" + }, + { + "moduleCode": "TSC3100", + "title": "Supply Chain Design", + "moduleCredit": 8, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "TIE2100 Probability Models with Applications,\nTIE2110 Operations Research I,\nTIE2140 Engineering Economy", + "corequisite": "" + }, + { + "moduleCode": "TSC3222", + "title": "Global Sourcing & Supply Management", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TIE2110", + "corequisite": "" + }, + { + "moduleCode": "TSC3223", + "title": "Supply Chain Financial Analysis and Management", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TIE2140 Engineering Economy", + "corequisite": "" + }, + { + "moduleCode": "TSC3224", + "title": "Distribution & Warehousing", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TIE2110 Operations Research I", + "corequisite": "" + }, + { + "moduleCode": "TSC3226", + "title": "Transportation Management", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TIE2110", + "corequisite": "" + }, + { + "moduleCode": "TSC4101", + "title": "B. Tech Dissertation", + "moduleCredit": 8, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "B. Tech (SCM) 4th year standing", + "corequisite": "" + }, + { + "moduleCode": "TSC4225", + "title": "Port Logistics", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "TIE2110 Operations Research I", + "corequisite": "" + }, + { + "moduleCode": "TTG1401", + "title": "Engineering Mathematics I", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2 + ], + "preclusion": "TE2102 or TM1401 or TG1401", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TTG2415", + "title": "Ethics In Engineering", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 3 + ], + "preclusion": "TG2415", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TTG2901", + "title": "Communications for Engineering Professionals", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Completed at least 40MCs of programme requirements excluding APC.", + "corequisite": "" + }, + { + "moduleCode": "TTG3001", + "title": "Industrial Practice", + "moduleCredit": 12, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2, + 3 + ], + "preclusion": "TG3002, TTG3002, TG3001, TIC3901", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "Completed at least 76MC of modules, including Advanced Placement Credits", + "corequisite": "" + }, + { + "moduleCode": "TTG3002", + "title": "Industrial Practice", + "moduleCredit": 8, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [ + 1, + 2, + 3 + ], + "preclusion": "TG3001, TTG3001, TG3002, TIC3901", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "Completed at least 76MC of modules, including Advanced Placement Credits", + "corequisite": "" + }, + { + "moduleCode": "TTG3101A", + "title": "Independent Study", + "moduleCredit": 2, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "TG3101A", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Level 3 standing and approval from Dean of SCALE", + "corequisite": "" + }, + { + "moduleCode": "TTG3101B", + "title": "Independent Study", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "TG3101B", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Level 3 standing and approval from Dean of SCALE", + "corequisite": "" + }, + { + "moduleCode": "TX1901T", + "title": "Essential 1 for BTech Students", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TX1902T", + "title": "Essential 2 for BTech Students", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TX1903T", + "title": "Essential 3 for BTech Students", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TX1904T", + "title": "Essential 4 for BTech Students", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "TX1905T", + "title": "Essential 5 for BTech Students", + "moduleCredit": 4, + "department": "SCALE Dean's Office", + "faculty": "Cont and Lifelong Education", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UAI3100E", + "title": "Overseas ISM (ST)", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UAI4000E", + "title": "Overseas Exchange Module", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UAR2201", + "title": "Cyberart", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UAR2206", + "title": "Creating 'Reality'", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "Not applicable to USP modules.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Not applicable to USP First-Tier modules. USP Advanced modules (Course-Based Modules, CBMs) may state general pre-requisite skills/knowledge. Prerequisites should not make reference to NUS modules.", + "corequisite": "Not applicable to USP modules." + }, + { + "moduleCode": "UAR2207", + "title": "Reinventing Intercultural Exchanges", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Not applicable to USP First-Tier modules. \nUSP Advanced modules (Course-Based Modules, CBMs) may state general pre-requisite skills/knowledge. Prerequisites should not make reference to NUS modules.", + "corequisite": "" + }, + { + "moduleCode": "UAR2208", + "title": "From Lab to Stage: Writing the Science Play", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 2 + ], + "preclusion": "Not applicable to USP modules.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Not applicable to USP First-Tier modules. USP Advanced modules (Course-Based Modules, CBMs) may state general pre-requisite skills/knowledge. Pre-requisites should not make reference to NUS modules.", + "corequisite": "Not applicable to USP modules." + }, + { + "moduleCode": "UBM2201", + "title": "Hormesis and Life", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UBM2202", + "title": "Creating Wolverine in Real Life", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UBZ3001", + "title": "Conflict Resolution: Negotiation And Mediation", + "moduleCredit": 4, + "department": "Management and Organisation", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UCQ3101E", + "title": "History & culture basket (level 3000) 1", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UCQ3201E", + "title": "Society & Economy basket (level 3000) 1", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UCV2207", + "title": "Politics of Heritage : Singapore and the Region", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UCV2209", + "title": "The Heterogeneous Indians of Contemporary Singapore", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UD5221", + "title": "Theory and Elements of Urban Design", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UD5521", + "title": "Planning Process: Quantitative & Policy Dimensions", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UD5601", + "title": "Urban Design Studio 1", + "moduleCredit": 8, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UD5602", + "title": "Urban Studio Design 2", + "moduleCredit": 8, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UD5622", + "title": "Methods Of Urban Design & Urban Analysis", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UD5624", + "title": "Special Topics In Urban Design", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UD5628", + "title": "Sustainable Urban Design and Development", + "moduleCredit": 4, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UD5641", + "title": "Dissertation", + "moduleCredit": 8, + "department": "Architecture", + "faculty": "Design and Environment", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UHB2204", + "title": "Virtue And Leadership", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UHB2206", + "title": "Leadership in a Complex World", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UHB2207", + "title": "Language, Cognition, and Culture", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 1 + ], + "preclusion": "Not applicable to USP modules.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UHB2208", + "title": "Immigration and the City", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "Not applicable to USP modules.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Not applicable to USP First-Tier modules. \nUSP Advanced modules (Course-Based Modules, CBMs) may state general pre-requisite skills/knowledge. Prerequisites should not make reference to NUS modules.", + "corequisite": "Not applicable to USP modules." + }, + { + "moduleCode": "UHB2209", + "title": "Polycentric Governance: Possibilities and Pitfalls", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UHB2210", + "title": "Emotion in Daily Life", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "Not applicable to USP modules.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Not applicable to USP First-Tier modules.", + "corequisite": "Not applicable to USP modules." + }, + { + "moduleCode": "UHB2211", + "title": "Welcome to the Anthropocene: Agency in the Era of Climate Change", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UHB2212", + "title": "Singaporean Nostalgia", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UHB2213", + "title": "Engaging and Building Communities", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "This module would be cross listed by the new Chua Thian Poh Community Leadership Centre (CTPCLC) (module code CTP2101). A USP + CTPCLC student would be encouraged to take this module through the USP. Students that have taken UHB2213 will be precluded from CTP2101 and vice versa.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UHB2214", + "title": "Effective Decision Making", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS2921R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS2922R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS2923R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS2924R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS2951R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS2952R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3901", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3901S", + "title": "Independent Study Module (ST)", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3902", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3902S", + "title": "Independent Study Module (ST)", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3903", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3903S", + "title": "Independent Study Module (ST)", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3904R", + "title": "Independent Study Module (Ride On)", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3911", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3911AX", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3911CH", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3911CL", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3911EC", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3911EL", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3911EN", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3911EU", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3911GE", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3911GL", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3911HY", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3911JS", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3911MS", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3911NM", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3911PE", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3911PH", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3911PL", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3911PS", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3911R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3911SC", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3911SE", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3911SN", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3911SW", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3911TS", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3912", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3912AX", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3912CH", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3912CL", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3912EC", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3912EL", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3912EN", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3912EU", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3912GE", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3912GL", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3912HY", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3912JS", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3912MS", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3912NM", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3912PE", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3912PH", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3912PL", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3912PS", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3912R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3912SC", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3912SE", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3912SN", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3912SW", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3912TS", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3913", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3913R", + "title": "Course-Based Module (Riding-On Regular Module)", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3914R", + "title": "Course-Based Module (Riding-On Regular Module)", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3915EN", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3915HY", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3915PH", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3915PS", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3915R", + "title": "Course-based Module (Ride-on)", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3916EN", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3916HY", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3916PH", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3916PS", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3921", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "USP Student", + "corequisite": "" + }, + { + "moduleCode": "UIS3921R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "USP Student", + "corequisite": "" + }, + { + "moduleCode": "UIS3922", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "USP Student", + "corequisite": "" + }, + { + "moduleCode": "UIS3922R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "USP Student", + "corequisite": "" + }, + { + "moduleCode": "UIS3923", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "USP Student", + "corequisite": "" + }, + { + "moduleCode": "UIS3923R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "USP Student", + "corequisite": "" + }, + { + "moduleCode": "UIS3924", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "USP Student", + "corequisite": "" + }, + { + "moduleCode": "UIS3924R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "USP Student", + "corequisite": "" + }, + { + "moduleCode": "UIS3929R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 8, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3931", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3932", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3933", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3934", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3941", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3941R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3942", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3942R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3943", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "USP Student", + "corequisite": "" + }, + { + "moduleCode": "UIS3943R", + "title": "Independent Study Module (Ride On)", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3944", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "USP Student", + "corequisite": "" + }, + { + "moduleCode": "UIS3944R", + "title": "Independent Study Module (Ride On)", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3951CS", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 5, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3951R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "[CS2103 Software Engineering and CS2309 CS Research Methodology]\nor\nIS2103 Enterprise Systems Development Concepts\nor\nIS2150 E-Business Design and Implementation", + "corequisite": "" + }, + { + "moduleCode": "UIS3952CS", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 5, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3952R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CP3208/UIS3951R Undergraduate Research in Computing I", + "corequisite": "" + }, + { + "moduleCode": "UIS3953R", + "title": "Independent Project", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IS3102 Enterprise Systems Development Project or\nIS4102 E-Business Capstone Project or CS3201 Software Engineering Project I\nor CS3281 Thematic Systems Project I or CS4201 Interactive Systems Project I or\nCS4203 Game Development Project I", + "corequisite": "" + }, + { + "moduleCode": "UIS3954R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 8, + "department": "Information Systems and Analytics", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IS2101 Business and Technical Communication\nAND\nIS2103 Enterprise Systems Development Concepts", + "corequisite": "" + }, + { + "moduleCode": "UIS3955R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 8, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3956R", + "title": "Independent Study Module (Ride-on)", + "moduleCredit": 4, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3957R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "Computer Science", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3958R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS3971R", + "title": "Independent Study Module (Ride-on)", + "moduleCredit": 6, + "department": "Computing and Engineering Programme", + "faculty": "Multi Disciplinary Programme", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS4904R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS4911", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in the major, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in the major, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in the major, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4911AX", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4911CH", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in CH or CL, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in CH or CL, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in CH or CL, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4911CL", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in CH or CL, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in CH or CL, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in CH or CL, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4911EC", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in EC, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in EC, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in EC, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4911EL", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in EL, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in EL, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in EL, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4911EN", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in EN, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in EN, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in EN, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4911EU", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in EU, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in EU, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in EU, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4911GE", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in GE, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in GE, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in GE, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4911GL", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in GL, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in GL, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in GL, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4911HY", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in HY, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in HY, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in HY, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4911JS", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in JS, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in JS, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in JS, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4911MS", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in MS, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in MS, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in MS, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4911NM", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in NM, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in NM, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in NM, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4911PE", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS4911PEE", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS4911PEP", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS4911PES", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS4911PH", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in PH, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in PH, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in PH, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4911PL", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in PL, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in PL, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in PL, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4911PS", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in PS, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in PS, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in PS, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4911R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS4911SC", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in SC, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in SC, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in SC, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4911SE", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in SE, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in SE, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in SE, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4911SN", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in SN, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in SN, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in SN, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4911SW", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in SW, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in SW, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in SW, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4911TS", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in TS, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in TS, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in TS, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4912", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in the major, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in the major, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in the major, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4912AX", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4912CH", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in CH, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in CH, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in CH, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4912CL", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in CH or CL, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in CH or CL, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in CH or CL, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4912EC", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in EC, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in EC, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in EC, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4912EL", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in EL, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in EL, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in EL, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4912EN", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in EN, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in EN, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in EN, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4912EU", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in EU, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in EU, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in EU, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4912GE", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in GE, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in GE, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in GE, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4912GL", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in GL, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in GL, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in GL, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4912HY", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in HY, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in HY, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in HY, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4912JS", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in JS, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in JS, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in JS, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4912MS", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in MS, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in MS, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in MS, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4912NM", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in NM, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in NM, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in NM, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4912PE", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS4912PEE", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS4912PEP", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS4912PES", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS4912PH", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in PH, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in PH, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in PH, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4912PL", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in PL, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in PL, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in PL, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4912PS", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in PS, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in PS, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in PS, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4912R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS4912SC", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in SC, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in SC, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in SC, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4912SE", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in SE, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in SE, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in SE, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4912SN", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in SN, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in SN, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in SN, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4912SW", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in SW, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in SW, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in SW, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4912TS", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in TS, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in TS, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in TS, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4913", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in the major, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in the major, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in the major, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4913R", + "title": "Course-based Module (Ride-on)", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS4914R", + "title": "Course-based Module (Ride-on)", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS4915EN", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in EN, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in EN, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in EN, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4915HY", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in HY, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in HY, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in HY, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4915PH", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in PH, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in PH, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in PH, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4915PS", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in PS, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in PS, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in PS, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4915R", + "title": "Course-based Module (Ride-on)", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS4916EN", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in EN, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in EN, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in EN, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4916HY", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in HY, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in HY, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in HY, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4916PH", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in PH, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in PH, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in PH, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4916PS", + "title": "Independent Study Module", + "moduleCredit": 5, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before;\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in PS, with a minimum CAP of 3.50.\n\nCohort 2012-2015:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 60 MCs in PS, with a minimum CAP of 3.20.\n\nCohort 2016 onwards:\nTo be offered subject to the agreement of the Supervisor and Department. Completed 100 MCs, including 44 MCs in PS, with a minimum CAP of 3.20.", + "corequisite": "" + }, + { + "moduleCode": "UIS4921", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "USP Student", + "corequisite": "" + }, + { + "moduleCode": "UIS4921R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "USP Student", + "corequisite": "" + }, + { + "moduleCode": "UIS4922", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "USP Student", + "corequisite": "" + }, + { + "moduleCode": "UIS4922R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "USP Student", + "corequisite": "" + }, + { + "moduleCode": "UIS4923", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "USP Student", + "corequisite": "" + }, + { + "moduleCode": "UIS4923R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "USP Student", + "corequisite": "" + }, + { + "moduleCode": "UIS4924", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "USP Student", + "corequisite": "" + }, + { + "moduleCode": "UIS4924R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "USP Student", + "corequisite": "" + }, + { + "moduleCode": "UIS4931", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS4932", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS4933", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS4934", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS4935R", + "title": "Independent Study Module (Ride-on)", + "moduleCredit": 8, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS4941", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS4941R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS4942", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS4942R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS4943", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "USP Student", + "corequisite": "" + }, + { + "moduleCode": "UIS4943R", + "title": "Independent Study Module (Ride On)", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS4944", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "USP Student", + "corequisite": "" + }, + { + "moduleCode": "UIS4944R", + "title": "Independent Study Module (Ride On)", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS4945", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS4946", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS4947", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS4951R", + "title": "Independent Study Module (Ride-on)", + "moduleCredit": 4, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS4952R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS4953R", + "title": "Independent Study Module (Ride-on)", + "moduleCredit": 8, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS5921R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS5922R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS5923R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS5924R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS5931R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS5932R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS5933R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS5934R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS5941", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "USP Student", + "corequisite": "" + }, + { + "moduleCode": "UIS5941R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS5942", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "USP Student", + "corequisite": "" + }, + { + "moduleCode": "UIS5942R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS5943", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "USP Student", + "corequisite": "" + }, + { + "moduleCode": "UIS5943R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS5944", + "title": "Independent Study Module", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "USP Student", + "corequisite": "" + }, + { + "moduleCode": "UIS5944R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS5951R", + "title": "Independent Study Module (Ride-on)", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "CS1231 or CS3234", + "corequisite": "" + }, + { + "moduleCode": "UIS6922R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS6931R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS6942R", + "title": "Independent Study Module (Ride On)", + "moduleCredit": 4, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIS6951R", + "title": "Independent Study Module (Ride-On)", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "Computing", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIT2201", + "title": "Computer Science & The I.T. Revolution", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIT2205", + "title": "Quantum computation", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIT2206", + "title": "The Importance of Being Formal", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "Not applicable to USP modules.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Not applicable to USP First-Tier modules. USP Advanced modules (Course-Based Modules, CBMs) may state general pre-requisite skills/knowledge. Prerequisites should not make reference to NUS modules.", + "corequisite": "" + }, + { + "moduleCode": "UIT2207", + "title": "Computational Thinking and Modelling", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIT2208", + "title": "Thinking 4.0", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UIT2209", + "title": "AI Projects and Case Studies", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "CS3243 Introduction to Artificial Intelligence \nCS3244 Machine Learning", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ULS2201", + "title": "The Biomolecular Revolution", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ULS2202", + "title": "Evolution", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ULS2204", + "title": "Biodiversity And Conservation Biology", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ULS2205", + "title": "Biosemiotics: Signs In Nature", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ULS2206", + "title": "The Doors of Perception: Biology, Technology & Culture", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ULS2207", + "title": "The Biology and Phenomenology of Pain", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ULS2208", + "title": "Biodiversity and Natural History in Singapore", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ULS2209", + "title": "Multidisciplinary Inquiries Into The Mystery Of ‘Mind’", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "UWC2101R Writing & Critical Thinking: Multidisciplinary Perspectives on “Mind”", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ULT2298D", + "title": "Representing War", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ULT2299A", + "title": "Understanding Irony", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "Precludes other modules from the ULT2299(x) \"Topics in Lit. 2\" series.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ULT2299C", + "title": "Topics in Lit. 2: The Subject of Reading", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "Not applicable to USP modules.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Not applicable to USP First-Tier modules. USP Advanced modules (Course-Based Modules / USP Advanced Multidisciplinary Seminars) may state general pre-requisite skills/knowledge. Pre-requisites should not make reference to NUS modules.", + "corequisite": "Not applicable to USP modules." + }, + { + "moduleCode": "ULT2299D", + "title": "The Politics of Language and Literacy in Singapore", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "Not applicable to USP modules.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Not applicable to USP First-Tier modules.\nUSP Advanced modules (Course-Based Modules, CBMs)\nmay state general pre-requisite skills/knowledge. Prerequisites\nshould not make reference to NUS modules.", + "corequisite": "Not applicable to USP First-Tier modules." + }, + { + "moduleCode": "ULT2299E", + "title": "Appealing Arguments: Logos, Pathos, and Ethos", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "Not applicable to USP modules.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Not applicable to USP First-Tier modules. \nUSP Advanced modules (Course-Based Modules, CBMs) may state general pre-requisite skills/knowledge. Prerequisites should not make reference to NUS modules.", + "corequisite": "Not applicable to USP modules." + }, + { + "moduleCode": "ULT2299F", + "title": "Close Reading and Its Vicissitudes", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ULT2299G", + "title": "The Modern History of Southeast Asia through Fiction", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UNL2201", + "title": "Space, Time & Matter: The Shape and Size of the Cosmos", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UNL2205", + "title": "Waves in Nature", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UNL2206", + "title": "Nature's Threads", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UNL2207", + "title": "The Nature of Natural Law", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 1 + ], + "preclusion": "Not applicable to USP modules.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Not applicable to USP modules.", + "corequisite": "Not applicable to USP modules." + }, + { + "moduleCode": "UNL2208", + "title": "Complexity and Recursion", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UNL2209", + "title": "Quantum Reality and Appearance", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "Not applicable to USP modules.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UNL2210", + "title": "Mathematics and Reality", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UPC2201", + "title": "Chemicals And Us", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UPC2206", + "title": "Nanoscale Science And Technology", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UPC2207", + "title": "The Technology of Life - Machines That Go Squish", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "Not applicable to USP modules.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Not applicable to USP First-Tier modules. USP Advanced modules (Course-Based Modules, CBMs) may state general pre-requisite skills/knowledge. Prerequisites should not make reference to NUS modules.", + "corequisite": "Not applicable to USP modules." + }, + { + "moduleCode": "UPC2208", + "title": "Molecular Courtship", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 2 + ], + "preclusion": "Not applicable to USP modules.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Not applicable to USP First-Tier modules.", + "corequisite": "Not applicable to USP modules." + }, + { + "moduleCode": "UPC2209", + "title": "Pollution Control Engineering in Singapore", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UPC2210", + "title": "Energy in Singapore: Is Technology the Answer?", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UPC2211", + "title": "Re-examining the Deterministic World of Matter", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UPI2205", + "title": "Ethics And The Environment", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UPI2206", + "title": "Creative Thinking", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "Not applicable to USP modules.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Not applicable to USP First-Tier modules. USP Advanced modules (Course-Based Modules, CBMs) may state general pre-requisite skills/knowledge. Prerequisites should not make reference to NUS modules.", + "corequisite": "Not applicable to USP modules." + }, + { + "moduleCode": "UPI2207", + "title": "Ethics and Aesthetics: The Moral Value of Representational Art", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "Not applicable to USP modules." + }, + { + "moduleCode": "UPI2208", + "title": "Imagining Animals", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 2 + ], + "preclusion": "Not applicable to USP modules.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Not applicable to USP First-Tier modules.", + "corequisite": "Not applicable to USP modules." + }, + { + "moduleCode": "UPI2209", + "title": "Creation of Value", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "Not applicable to USP modules.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Not applicable to USP First-Tier modules.", + "corequisite": "Not applicable to USP modules." + }, + { + "moduleCode": "UPI2210", + "title": "Arts of Memory: Public Recollection & Memory Training", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UPI2211", + "title": "Utopia: Ideal Places from Plato to the Smart City", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 1 + ], + "preclusion": "Not applicable", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Not applicable", + "corequisite": "Not applicable" + }, + { + "moduleCode": "UPI2212", + "title": "Technologies of the Self: from Socrates to Self-Help", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UPI2213", + "title": "Making Sense of Colonial Ideology and Its Legacies", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UQF2101E", + "title": "Quantitative Reasoning Foundation: Quantifying Our Eco-Footprint", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "Not applicable to USP modules.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Not applicable to USP First-Tier modules. USP Advanced modules (Course-Based Modules, CBMs) may state general pre-requisite skills/knowledge. Prerequisites should not make reference to NUS modules.", + "corequisite": "Not applicable to USP modules." + }, + { + "moduleCode": "UQF2101F", + "title": "Quantitative Reasoning Foundation: Calculating Risks", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "Not applicable to USP modules.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Not applicable to USP First-Tier modules.\nUSP Advanced modules (Course-Based Modules, CBMs) may state general pre-requisite skills/knowledge. Prerequisites should not make reference to NUS modules.", + "corequisite": "Not applicable to USP modules." + }, + { + "moduleCode": "UQF2101G", + "title": "Quantitative Reasoning Foundation: Quantifying Nuclear Risks", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 2 + ], + "preclusion": "Not applicable to USP First-Tier modules.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Not applicable to USP First-Tier modules.", + "corequisite": "Not applicable to USP First-Tier modules." + }, + { + "moduleCode": "UQF2101H", + "title": "Quantitative Reasoning Foundation: War and Democracy", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "Not applicable to USP modules.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Not applicable to USP First-Tier modules.", + "corequisite": "Not applicable to USP modules." + }, + { + "moduleCode": "UQF2101I", + "title": "Quantitative Reasoning Foundation: Quantifying Environmental Quality", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 1, + 2 + ], + "preclusion": "Not applicable to USP modules.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Not applicable to USP First-Tier modules.", + "corequisite": "Not applicable to USP modules." + }, + { + "moduleCode": "UQF2101J", + "title": "Quantitative Reasoning Foundation: Pursuit of Happiness", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 1, + 2 + ], + "preclusion": "UTC1409 Jr Seminar: Pursuit of Happiness, offered by College of Alice and Peter Tan (CAPT)", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UQF2101K", + "title": "Quantitative Reasoning Foundation: In Search of Soulmate", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UQR2207", + "title": "Decision Analytics", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UQR2211", + "title": "Passing Time: Processes, Temporality, and Econometrics", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "Not applicable to USP modules.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "UQF2101% modules", + "corequisite": "Not applicable to USP modules." + }, + { + "moduleCode": "UQR2212", + "title": "How Linguists Work", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UQR2214", + "title": "Generative Syntax", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UQR2215", + "title": "Developing Meaningful Indicators", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "URM3301", + "title": "USP Undergraduate Research Opportunity", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "URM3302", + "title": "USP Undergraduate Research Opportunity (S&T-based UROP)", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "USC3001", + "title": "Complexity", + "moduleCredit": 4, + "department": "Physics", + "faculty": "Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "USE2209", + "title": "Globalizing Asian-Pacific Identities", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "USE2304", + "title": "Singapore: The Making Of A Nation", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "USE2306", + "title": "Disasters and Responses", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "Not applicable to USP modules.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Not applicable to USP First-Tier modules.\nUSP Advanced modules (Course-Based Modules, CBMs) may state general pre-requisite skills/knowledge. Prerequisites should not make reference to NUS modules.", + "corequisite": "" + }, + { + "moduleCode": "USE2308", + "title": "New Media and Politics", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "Not applicable to USP modules.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Not applicable to USP First-Tier modules. USP Advanced modules (Course-Based Modules, CBMs) may state general pre-requisite skills/knowledge. Prerequisites should not make reference to NUS modules.", + "corequisite": "" + }, + { + "moduleCode": "USE2309", + "title": "Ordinary Politics", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "Not applicable to USP modules.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Not applicable to USP First-Tier modules. USP Advanced modules (Course-Based Modules, CBMs) may state general pre-requisite skills/knowledge. Prerequisites should not make reference to NUS modules.", + "corequisite": "" + }, + { + "moduleCode": "USE2310", + "title": "Questioning Sustainable Development", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "Not applicable to USP modules.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Not applicable to USP First-Tier modules.\nUSP Advanced modules (Course-Based Modules, CBMs) may state general pre-requisite skills/knowledge. Prerequisites should not make reference to NUS modules.", + "corequisite": "Not applicable to USP modules." + }, + { + "moduleCode": "USE2311", + "title": "Archives, Biography, Memory in Singapore", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "USE2312", + "title": "Nationalism and the Arts", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 2 + ], + "preclusion": "Precludes other modules from the ULT2298(x) \"Topics in Lit. 1\" series.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "USE2313", + "title": "Understanding Law and Social Change", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "Not applicable to USP modules.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Second-year and above", + "corequisite": "Not applicable to USP modules." + }, + { + "moduleCode": "USE2314", + "title": "Politics and Emotion", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "Not applicable to USP modules.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Not applicable to USP First-Tier modules.\nUSP Advanced modules (Course-Based Modules, CBMs) may state general pre-requisite skills/knowledge. Prerequisites should not make reference to NUS modules.", + "corequisite": "Not applicable to USP First-Tier modules." + }, + { + "moduleCode": "USE2315", + "title": "Participatory Social Development in Southeast Asia", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "USE2316", + "title": "Satires and (Un)Serious Histories", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Not applicable to USP First-Tier modules. \nUSP Advanced modules (Course-Based Modules, CBMs) may state general pre-requisite skills/knowledge. Prerequisites should not make reference to NUS modules.", + "corequisite": "" + }, + { + "moduleCode": "USE2317", + "title": "Multiculturalism in Singapore and Its Contested Meanings", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 2 + ], + "preclusion": "Not applicable to USP modules.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Not applicable to USP First-Tier modules. \nUSP Advanced modules (Course-Based Modules, CBMs) may state general pre-requisite skills/knowledge. Pre-requisites should not make reference to NUS modules.", + "corequisite": "Not applicable to USP modules." + }, + { + "moduleCode": "USE2318", + "title": "Managing Cultural Difference:Theorizing the S’pore Model", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "Not applicable to USP modules.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Not applicable to USP First-Tier modules. USP Advanced modules (Course-Based Modules, CBMs) may state general pre-requisite skills/knowledge. Prerequisites should not make reference to NUS modules.", + "corequisite": "Not applicable to USP modules." + }, + { + "moduleCode": "USE2319", + "title": "Social Movements, Law, and Society", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "Not applicable to USP modules.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "USE2320", + "title": "Transitional Justice and War Crimes Trials: Case Studies from Singapore and Asia", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "USE2321", + "title": "Examining Local Lives", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "USE2322", + "title": "Situating Singapore in the Wider World", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "USE2323", + "title": "Culture and Technology", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "USE2324", + "title": "Gender and Ecology in Asia", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "USE2325", + "title": "Democracy and Inequality", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "USP2201", + "title": "Food Production and Society in Southeast Asia", + "moduleCredit": 2, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "USP2202", + "title": "Power, Identity, and Citizenship in Democratic Athens", + "moduleCredit": 2, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "USP3501", + "title": "The Problematic Concept Of 'Gender'", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "USP3505", + "title": "Asianism and Singapore", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "USP3506", + "title": "Religious Issues in the Contemporary World", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "USP3508", + "title": "The Politics of the Body", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "Not applicable to USP modules.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Not applicable to USP First-Tier modules.", + "corequisite": "" + }, + { + "moduleCode": "USP3509", + "title": "Law and Violence", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "Not applicable to USP modules.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Not applicable to USP First-Tier modules. USP Advanced modules (Course-Based Modules, CBMs) may state general pre-requisite skills/knowledge. Prerequisites\nshould not make reference to NUS modules.", + "corequisite": "Not applicable to USP modules." + }, + { + "moduleCode": "USP3510", + "title": "Reason, Secularization & Multiculturalism", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "Not applicable to USP modules.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "USR4002A", + "title": "Critical Reflection", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 1, + 2 + ], + "preclusion": "Not applicable to USP modules.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Open to students in years 3 and above", + "corequisite": "Not applicable to USP modules." + }, + { + "moduleCode": "USS2105", + "title": "University Scholars Seminar", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1102", + "title": "Junior Seminar", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1902% or GEM1912% or UTC11%", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1102B", + "title": "Junior Seminar: The Darwinian Revolution", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [ + 1 + ], + "preclusion": "GEM1902% or GEM1912% or UTC11% or GEM1536 or GET1020", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1102C", + "title": "Junior Seminar: Fakes", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [ + 1 + ], + "preclusion": "GEM1902% or GEM1912% or UTC11%", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1102D", + "title": "Junior Seminar: Images", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1902% or GEM1912% or UTC11%", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1102E", + "title": "Junior Seminar: Social Innovation", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1902% or GEM1912% or UTC11%", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1102F", + "title": "Junior Seminar: Leadership: Technology, Configuration, Work", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1902% or GEM1912% or UTC11%", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1102G", + "title": "Junior Seminar: Proof: What’s Truth got to do with it?", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [ + 1 + ], + "preclusion": "GEM1902% or GEM1912% or UTC11%", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1102H", + "title": "Junior Seminar: C.S.I. 101: Truth from evidence", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1902% or GEM1912% or UTC11%", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1102M", + "title": "Junior Seminar: On Blindness", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1902% or GEM1912% or UTC11%", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1102N", + "title": "Junior Seminar: The Bio‐tech Future: Sci‐Fi Film and Society", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1902% or GEM1912% or UTC11%", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1102P", + "title": "Junior Seminar: Murals: Expressions from/on the Walls", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1902% or GEM1912% or UTC11%", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1102R", + "title": "Junior Seminar: Green Capitalism: A Critical Engagement", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [ + 1 + ], + "preclusion": "GEM1902% or GEM1912% or UTC11%", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1102S", + "title": "Living and Dying in the Internet Age", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1902% or GEM1912% or UTC11%", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1102T", + "title": "Junior Seminar: Art and Social Change", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1902% or GEM1912% or UTC11%", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1102U", + "title": "Junior Seminar: Disasters", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1902% or GEM1912% or UTC11%", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1102V", + "title": "Junior Seminar: Ways of Knowing: Poetry and Science", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1902% or GEM1912% or UTC11%", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1112A", + "title": "Jr Sem Special Topics: Humanising Technology", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1902% or GEM1912% or UTC11%", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1112B", + "title": "Jr Sem Special Topics: Quality Journalism and Critical Reading", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1902% or GEM1912% or UTC11%", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1112C", + "title": "Special Topics Junior Seminar: Dissecting the Justice Machine", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1902% or GEM1912% or UTC11%", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1112D", + "title": "Leadership, Creativity and Innovation", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1902% or GEM1912% or UTC11%", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1112F", + "title": "Special Topics Junior Seminar: Science Fiction Movies in the East and West", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1902% or GEM1912% or UTC11%", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1112G", + "title": "Special Topics: “Sustainability – An Introduction”", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1902% or GEM1912% or UTC11%", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1113", + "title": "Junior Seminar: Ignorance and Uncertainty", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1902% or GEM1912% or UTC11%", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1114", + "title": "Junior Seminar From the Fire to the Frying Pan: Cooking and Eating in Human Culture(s)", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1902% or GEM1912% or UTC11%", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1115", + "title": "Junior Seminar Engineering Marvels", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1902% or GEM1912% or UTC11%", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1116", + "title": "Writing Women", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1902% or GEM1912% or UTC11%", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1117", + "title": "Junior Seminar: Radiation and Society", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [ + 1 + ], + "preclusion": "GEM1902% or GEM1912% or UTC11% or UTC2110 or GEM2910%", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1118", + "title": "Junior Seminar: The Social Lives of Drugs", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1902% or GEM1912% or UTC11%", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(For Tembusu students only)", + "corequisite": "" + }, + { + "moduleCode": "UTC1119", + "title": "Junior Seminar: Crime and Punishment", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1902% or GEM1912% or UTC11%", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1120", + "title": "Junior Seminar: Emotions and Society", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1902% or GEM1912% or UTC11%", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1121", + "title": "Technology, Horror, and the Unknown", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1902% or GEM1912% or UTC11%", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1122", + "title": "Skin", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1902% or GEM1912% or UTC11%", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1400", + "title": "Debating Singapore's Social and Economic History", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1402", + "title": "Jr Sem: Generation Y: Transitions to Adulthood", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1035", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1403", + "title": "Jr Sem: Hidden Communities", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [ + 1, + 2 + ], + "preclusion": "GEM1904", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1404", + "title": "Jr Sem: Power and Ideas", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [ + 1 + ], + "preclusion": "GEM1905", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1408", + "title": "Jr Sem: Technology and Human Progress", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1909", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1409", + "title": "Jr Sem: The Pursuit of Happiness", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [ + 1, + 2 + ], + "preclusion": "GEM1910\nUQF2101J", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1410", + "title": "Jr Sem: Special Topics", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1911", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1411", + "title": "Jnr Sem: Systems Systems Everywhere", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1914, GEM1915%, GEM1918, GEM1919,GET1011, UTC1700, UTC1701", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1413", + "title": "Jr Sem: A Brief History of Inequality", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1414", + "title": "Jr Sem: Discovering Singapore’s Natural History and Heritage", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1415", + "title": "Jr Sem: Family in a Changing Singapore", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1416", + "title": "Jr Sem: Games, Game Communities and Society", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [ + 1 + ], + "preclusion": "UTC14%", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1417", + "title": "Jr Sem: Bioethics in the 21st Century", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [ + 2 + ], + "preclusion": "All other Junior Seminars.\nUTC14%", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1418", + "title": "Jr Sem: Chances in Life", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [], + "preclusion": "All other UTCP Junior Seminars\nUTC11%, UTC14%, UTC17%", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1700", + "title": "Thinking in Systems: Ecosystems and Natural Resources", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1914 or GEM1915% or GEM1918 or GEM1919 or GET1011 or UTC1411 or UTC1702% or UTC1701 or UTC1700", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1701", + "title": "Thinking in Systems: Diseases and Healthcare", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1914 or GEM1915% or GEM1918 or GEM1919 or GET1011 or UTC1411 or UTC1702% or UTC1701 or UTC1700", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1702", + "title": "Thinking in Systems", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1914 or GEM1915% or GEM1918 or GEM1919 or GET1011 or UTC1411 or UTC1702% or UTC1701 or UTC1700", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1702A", + "title": "Thinking in Systems: Ecosystems and Natural Resources", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1914 or GEM1915% or GEM1918 or GEM1919 or GET1011 or UTC1411 or UTC1702% or UTC1701 or UTC1700", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1702B", + "title": "Thinking in Systems: Diseases and Healthcare", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [ + 1, + 2 + ], + "preclusion": "GEM1914 or GEM1915% or GEM1918 or GEM1919 or GET1011 or UTC1411 or UTC1702% or UTC1701 or UTC1700", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1702C", + "title": "Thinking in Systems: Sustainability and Us", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM1914 or GEM1915% or GEM1918 or GEM1919 or GET1011 or UTC1411 or UTC1702% or UTC1701 or UTC1700", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1702D", + "title": "Thinking in Systems: Population Dynamics", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [ + 1, + 2 + ], + "preclusion": "GEM1914 or GEM1915% or GEM1918 or GEM1919 or GET1011 or UTC1411 or UTC1702% or UTC1701 or UTC1700", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1702E", + "title": "Thinking in Systems: Energy Systems", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [ + 1, + 2 + ], + "preclusion": "GEM1914 or GEM1915% or GEM1918 or GEM1919 or GET1011 or UTC1411 or UTC1702% or UTC1701 or UTC1700", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC1702F", + "title": "Thinking in Systems: Disaster Resilience", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [ + 1, + 2 + ], + "preclusion": "GEM1914 or GEM1915% or GEM1918 or GEM1919 or GET1011 or UTC1411 or UTC1702% or UTC1701 or UTC1700", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC2100", + "title": "Humans, Animals and Ecosystems: The One Health Paradigm", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This programme is open to students from participating IARU universities and Tembusu College’s partner colleges. NUS undergraduates should have a minimum CAP of 3.0 on a 5- point scale. Non-NUS students will be assessed based on recruitment criteria and procedures administered by each participating residential college/university in consultation with NUS Tembusu College.", + "corequisite": "" + }, + { + "moduleCode": "UTC2101", + "title": "Time and Life", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [ + 1 + ], + "preclusion": "GEM2902% or GEM2905% or GEM2907% or GEM2908% or GEM2909% or GEM2910% or UTC21%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1902% or GEM1912% or UTC11%", + "corequisite": "" + }, + { + "moduleCode": "UTC2102", + "title": "Climate Change", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [ + 1 + ], + "preclusion": "GEM2902% or GEM2905% or GEM2907% or GEM2908% or GEM2909% or GEM2910% or UTC21%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1902% or GEM1912% or UTC11%", + "corequisite": "" + }, + { + "moduleCode": "UTC2105", + "title": "Singapore as ‘Model’ City?", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM2902% or GEM2905% or GEM2907% or GEM2908% or GEM2909% or GEM2910% or UTC21% or UTS2105 or SSU2004%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1902% or GEM1912% or UTC11%", + "corequisite": "" + }, + { + "moduleCode": "UTC2107", + "title": "Senior Seminar: Negotiating in a Complex World", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [ + 1 + ], + "preclusion": "GEM2902% or GEM2905% or GEM2907% or GEM2908% or GEM2909% or GEM2910% or UTC21%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1902% or GEM1912% or UTC11%", + "corequisite": "" + }, + { + "moduleCode": "UTC2108", + "title": "Knowledge and Expertise", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM2902% or GEM2905% or GEM2907% or GEM2908% or GEM2909% or GEM2910% or UTC21%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1902% or GEM1912% or UTC11%", + "corequisite": "" + }, + { + "moduleCode": "UTC2109", + "title": "Asia Now! The Archaeology of the Future City", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "SSU2000% or SSU2004% or SSU2006% or UTS21% or UTC2109 or GEM2909%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This programme is open to students from participating IARU universities and Tembusu College’s partner colleges.\n\nNUS undergraduates should have a minimum CAP of 3.0 on a 5‐point scale. Non‐NUS students will be assessed based on recruitment criteria and procedures administered by each participating residential college/university in consultation with NUS Tembusu College.\n\nStudents need to have interest in urban Asia, but there is no requirement to have prior background in Asia, Asian Studies, or Asian languages. Ideally, students in this class will be in their second or third year of a four‐year undergraduate program, but in general we will accept undergraduates at any level.\n\nFor Tembusu students - GEM1902% or GEM1912% or UTC11%", + "corequisite": "" + }, + { + "moduleCode": "UTC2111", + "title": "Picturing and Seeing Development", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM2902% or GEM2905% or GEM2907% or GEM2908% or GEM2909% or GEM2910% or UTC21%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1902% or GEM1912% or UTC11%", + "corequisite": "" + }, + { + "moduleCode": "UTC2112", + "title": "Animals and the City", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "UTS2112 or GEM29% or UTC21%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This four-week intensive module is intended only to be offered in the summer term.\n\nEnrolment will be offered to a select group of students, half of them from our IARU and Tembusu College partner residential colleges/university, and the others from NUS. NUS students may take this module as an unrestricted elective. Tembusu College students may take this module to count towards the University Town College Programme (as a Senior Seminar).\n\nNUS undergraduates, including Tembusu students, should have a minimum CAP of 3.0 on a 5-point scale. Non-NUS students will be assessed based on recruitment criteria and procedures administered by each participating residential college/university in consultation with NUS Tembusu College. Non-NUS students will have to apply to their home institutions for credit.\n\nIdeally, students in this class will be in their second or third year of a four-year undergraduate program, but in general we will accept undergraduates at any level.\n\nFor Tembusu students - GEM1902% or GEM1912% or UTC11%", + "corequisite": "" + }, + { + "moduleCode": "UTC2113", + "title": "Gaming Life", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [ + 1 + ], + "preclusion": "GEM2902% or GEM2905% or GEM2907% or GEM2908% or GEM2909% or GEM2910% or UTC21%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1902% or GEM1912% or UTC11%", + "corequisite": "" + }, + { + "moduleCode": "UTC2400", + "title": "Community Leadership", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [ + 1, + 2 + ], + "preclusion": "GEM2903%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC2402", + "title": "Environment and Civil Society in Singapore", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [ + 1 + ], + "preclusion": "GEM2906%\nSSU2005%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC2403", + "title": "Citizenship in a Changing World", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [ + 1 + ], + "preclusion": "GEM2028%\nSSU2007%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC2404", + "title": "(Re)Building Communities: Insights from India", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC2405", + "title": "Emerging Asia: Successes and Challenges", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC2406", + "title": "Cities and nature", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC2407", + "title": "Work and Inequality", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC2408", + "title": "Beyond Seeing: Looking at Art", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC2409", + "title": "Understanding Communities: Theory & Practice", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC2410", + "title": "Building Communities: Exploring Global Connections", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [], + "preclusion": "UTC24%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "UTC14% or UTW1001%", + "corequisite": "" + }, + { + "moduleCode": "UTC2410A", + "title": "Reconstructing Communities: Insights from the Balkans", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [ + 2, + 3 + ], + "preclusion": "UTC24%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "UTC14% or UTW1001%\nPriority will be given to UTCP students resident in CAPT, who need to take a senior seminar to complete UTCP", + "corequisite": "" + }, + { + "moduleCode": "UTC2410B", + "title": "Community, Culture, Conservation: Insights from Nepal", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "UTC11%, UTC14%, UTC17% (UTCP Junior Seminar)", + "corequisite": "" + }, + { + "moduleCode": "UTC2411", + "title": "Unequal Parenthoods in Asia", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC2412", + "title": "Mental wellness: Local and global approaches", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC2501", + "title": "Community Internship", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "For FASS, FOE, FOS, SOC, SDE students:\nCFG1002 Career Catalyst is preferred\n\nFor Business School students:\nEither Business Finishing School (BFS) or Career Creation Starter Workshops (STR) modules is preferred\nhttp://bba.nus.edu/images/bba/docs/2018/Internship-Guidelines-for-Students.pdf\n\nFor Music, Dentistry, Nursing, Medicine, Law students:\n- approved on case-by-case basis", + "corequisite": "" + }, + { + "moduleCode": "UTC2700", + "title": "An Undefeated Mind: An Experiential Inner Reengineering Approach", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [ + 2 + ], + "preclusion": "UTC27%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1918 or GEM1919 or UTC1700 or UTC1701 or UTC1702%", + "corequisite": "" + }, + { + "moduleCode": "UTC2701", + "title": "Business Systems: Dynamics and Policy Making", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [], + "preclusion": "UTC27%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1918 or GEM1919 or UTC1700 or UTC1701 or UTC1702%", + "corequisite": "" + }, + { + "moduleCode": "UTC2702", + "title": "Foundations in System Dynamics Thinking and Modelling", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [], + "preclusion": "UTC27%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1918 or GEM1919 or UTC1700 or UTC1701 or UTC1702%", + "corequisite": "" + }, + { + "moduleCode": "UTC2703", + "title": "Infectious Diseases: Dynamics, Strategies and Policies", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [ + 2 + ], + "preclusion": "UTC27%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1918 or GEM1919 or UTC1700 or UTC1701 or UTC1702%", + "corequisite": "" + }, + { + "moduleCode": "UTC2704", + "title": "Projects in Systems Thinking and System Dynamics", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [ + 1 + ], + "preclusion": "UTC27%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1918 or GEM1919 or UTC1700 or UTC1701 or UTC1702%", + "corequisite": "" + }, + { + "moduleCode": "UTC2705", + "title": "Housing, Healthcare and Harmony in Singapore: A Critical Perspective", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [], + "preclusion": "UTS2700 or UTC27%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1918 or GEM1919 or UTC1700 or UTC1701 or UTC1702%", + "corequisite": "" + }, + { + "moduleCode": "UTC2706", + "title": "Committed to Changing Our World: The Systems Pioneers", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [ + 1, + 2 + ], + "preclusion": "UTC27% or GEM2911%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1918 or GEM1919 or UTC1700 or UTC1701 or UTC1702%", + "corequisite": "" + }, + { + "moduleCode": "UTC2707", + "title": "Understanding Health and Social Care in Singapore", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [ + 1, + 2 + ], + "preclusion": "UTS2701 or UTC27%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1918 or GEM1919 or UTC1700 or UTC1701 or UTC1702%", + "corequisite": "" + }, + { + "moduleCode": "UTC2708", + "title": "Singapore - A Smart Nation in Context : IoT & Big Data", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [ + 1 + ], + "preclusion": "UTS2702 or UTC27%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1918 or GEM1919 or UTC1700 or UTC1701 or UTC1702%", + "corequisite": "" + }, + { + "moduleCode": "UTC2709", + "title": "Questioning Common Sense", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [], + "preclusion": "UTC27%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1918 or GEM1919 or UTC1700 or UTC1701 or UTC1702%", + "corequisite": "" + }, + { + "moduleCode": "UTC2710", + "title": "Energy and Environment: Singapore and ASEAN Perspectives", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [], + "preclusion": "UTS2703 or UTC27%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1918 or GEM1919 or UTC1700 or UTC1701 or UTC1702%", + "corequisite": "" + }, + { + "moduleCode": "UTC2711", + "title": "Heavenly Mathematics and Cultural Astronomy", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [], + "preclusion": "UTC27%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1918 or GEM1919 or UTC1700 or UTC1701 or UTC1702%", + "corequisite": "" + }, + { + "moduleCode": "UTC2712", + "title": "Hard to secure easy to waste - Singapore’s food story", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [], + "preclusion": "UTS2704 or UTC27%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1918 or GEM1919 or UTC1700 or UTC1701 or UTC1702%", + "corequisite": "" + }, + { + "moduleCode": "UTC2713", + "title": "Modelling Singlehood, Marriage & Fertility in Singapore", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [ + 1, + 2 + ], + "preclusion": "UTS2705 or UTC27%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1918 or GEM1919 or UTC1700 or UTC1701 or UTC1702%", + "corequisite": "" + }, + { + "moduleCode": "UTC2714", + "title": "A social critique of markets in Singapore", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [ + 1, + 2 + ], + "preclusion": "UTS2706 or UTC27%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1918 or GEM1919 or UTC1700 or UTC1701 or UTC1702%", + "corequisite": "" + }, + { + "moduleCode": "UTC2715", + "title": "Decoding Complexity", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [ + 1 + ], + "preclusion": "UTS2707 or UTC27%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1918 or GEM1919 or UTC1700 or UTC1701 or UTC1702%", + "corequisite": "" + }, + { + "moduleCode": "UTC2716", + "title": "Networks: Complexity and Order", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [ + 1 + ], + "preclusion": "UTC27%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1918 or GEM1919 or UTC1700 or UTC1701 or UTC1702%", + "corequisite": "" + }, + { + "moduleCode": "UTC2717", + "title": "Navigation in Singapore Waters-Bridges and Barriers", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [ + 1, + 2 + ], + "preclusion": "UTS2708 or UTC27%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1918 or GEM1919 or UTC1700 or UTC1701 or UTC1702%", + "corequisite": "" + }, + { + "moduleCode": "UTC2718", + "title": "Energy and Singapore: Dynamics, Dilemmas and Decisions", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [ + 2 + ], + "preclusion": "UTS2709 or UTC27%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1918 or GEM1919 or UTC1700 or UTC1701 or UTC1702%", + "corequisite": "" + }, + { + "moduleCode": "UTC2719", + "title": "Society and Economy in Singapore: A Systems View", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [ + 1, + 2 + ], + "preclusion": "UTS2710 or UTC27%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1918 or GEM1919 or UTC1700 or UTC1701 or UTC1702%", + "corequisite": "" + }, + { + "moduleCode": "UTC2720", + "title": "Income Inequality: A Teleological Perspective", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [], + "preclusion": "UTC27%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1918 or GEM1919 or UTC1700 or UTC1701 or UTC1702%", + "corequisite": "" + }, + { + "moduleCode": "UTC3101", + "title": "Independent Study", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM3900", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Ideally, a student should have completed the University Town\nCollege Programme of five modules before pursuing Independent Study.\nHowever, due to the diverse student population at Tembusu, the\nprerequisite is that students should have completed at least one Senior\nSeminar. This ensures that a student has gained some familiarity\nwith the exploration of topics in an inter‐disciplinary, multi‐disciplinary\nor trans‐disciplinary fashion. The student should approach a College\nFellow to work out an agreed topic, readings, and assignments for the\nmodule. Part of this conversation should be to specify in what sense\nthe topic and/or approach are interdisciplinary, multi‐disciplinary\nor trans‐disciplinary in character. A formal ISM contract is to be\nsubmitted to the Director of Studies for approval. Evaluation is based on\n100% Continuous Assessment and must be worked out between the\nstudent and the supervisor prior to seeking the College’s approval. In\nthe course of the semester, between 4 and 6 meetings between student\nand supervisor are expected. The student is expected to play an active\nrole in setting the agenda and preparing for these meetings.", + "corequisite": "" + }, + { + "moduleCode": "UTC3102", + "title": "Tembusu Undergraduate Research Opportunity (UROP)", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM3901", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "Ideally, a student should have completed the University Town Residential Programme of five modules before embarking on this UROP. \n\nHowever, due to the diverse student population at Tembusu, this is not always possible, and some exceptional students may want the chance to embark on a Tembusu UROP already in their second year. The prerequisite is that students should have completed at least one Junior or Senior Seminar at the College, as well as at least one Ideas and Exposition module or a faculty-based writing course.\n\nFor student-candidates who meet the prerequisite but who have not finished the five-module UTCP, the prospective supervisor/research leader is required to make a case to the UROP coordinator and/or the Director of Studies. The case should be based on (1) an evaluation of the student’s demonstrated aptitude and motivation for independent research and inquiry, and (2) the student’s demonstrated potential for producing high-quality academic writing.", + "corequisite": "" + }, + { + "moduleCode": "UTC3400", + "title": "Independent Study", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [ + 1 + ], + "preclusion": "GEM3902", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTC3401", + "title": "CAPT Undergraduate Research Opportunity (UROP)", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM3903", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + true + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTS2100", + "title": "Intelligence and Singapore Society", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [ + 1 + ], + "preclusion": "SSU2000% or SSU2004% or SSU2006% or UTS21%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1902% or GEM1912% or UTC11%", + "corequisite": "" + }, + { + "moduleCode": "UTS2101", + "title": "Biomedicine and Singapore Society", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [ + 1 + ], + "preclusion": "SSU2000% or SSU2004% or SSU2006% or UTS21%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1902% or GEM1912% or UTC11%", + "corequisite": "" + }, + { + "moduleCode": "UTS2105", + "title": "Singapore as ‘Model’ City?", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [ + 1 + ], + "preclusion": "SSU2000% or SSU2004% or SSU2006% or UTS21% or UTC2105 or GEM2905%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1902% or GEM1912% or UTC11%", + "corequisite": "" + }, + { + "moduleCode": "UTS2109", + "title": "Asia Now! The Archaeology of the Future City", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "SSU2000% or SSU2004% or SSU2006% or UTS21% or UTC2109 or GEM2909%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This programme is open to students from participating IARU universities and Tembusu College’s partner colleges.\n\nNUS undergraduates should have a minimum CAP of 3.0 on a 5‐point scale. Non‐NUS students will be assessed based on recruitment criteria and procedures administered by each participating residential college/university in consultation with NUS Tembusu College.\n\nStudents need to have interest in urban Asia, but there is no requirement to have prior background in Asia, Asian Studies, or Asian languages. Ideally, students in this class will be in their second or third year of a four‐year undergraduate program, but in general we will accept undergraduates at any level.\n\nFor Tembusu students - GEM1902% or GEM1912% or UTC11%", + "corequisite": "" + }, + { + "moduleCode": "UTS2112", + "title": "Animals and the City", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "GEM29% or UTC21%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "This four-week intensive module is intended only to be offered in the summer term.\n\nEnrolment will be offered to a select group of students, half of them from our IARU and Tembusu College partner residential colleges/university, and the others from NUS. NUS students may take this module as an unrestricted elective. Tembusu College students may take this module to count towards the University Town College Programme (as a Senior Seminar).\n\nNUS undergraduates, including Tembusu students, should have a minimum CAP of 3.0 on a 5-point scale. Non-NUS students will be assessed based on recruitment criteria and procedures administered by each participating residential college/university in consultation with NUS Tembusu College. Non-NUS students will have to apply to their home institutions for credit.\n\nIdeally, students in this class will be in their second or third year of a four-year undergraduate program, but in general we will accept undergraduates at any level.\n\nFor Tembusu students - GEM1902% or GEM1912% or UTC11%", + "corequisite": "" + }, + { + "moduleCode": "UTS2114", + "title": "Technologies and Ageing in Singapore", + "moduleCredit": 4, + "department": "Tembusu College", + "faculty": "Residential College", + "semester": [], + "preclusion": "SSU2000% or SSU2004% or SSU2006% or UTS21%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1902% or GEM1912% or UTC11%", + "corequisite": "" + }, + { + "moduleCode": "UTS2400", + "title": "Identities in Asia", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [ + 1, + 2 + ], + "preclusion": "SSU2002%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTS2402", + "title": "Environment and Civil Society in Singapore", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [ + 1 + ], + "preclusion": "GEM2906%\nSSU2005%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTS2403", + "title": "Citizenship in a Changing World", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [ + 1 + ], + "preclusion": "GEM2028%\nSSU2007%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTS2404", + "title": "Cities and nature", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTS2405", + "title": "Work and Inequality", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTS2406", + "title": "Beyond Seeing: Looking at Art", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTS2407", + "title": "Understanding Communities: Theory & Practice", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTS2408", + "title": "Unequal Parenthoods in Asia", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTS2409", + "title": "Mental wellness: Local and global approaches", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTS2500", + "title": "College 3 Capstone Experience", + "moduleCredit": 4, + "department": "College of Alice and Peter Tan", + "faculty": "Residential College", + "semester": [ + 1 + ], + "preclusion": "SSU2001%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UTS2700", + "title": "Housing, Healthcare and Harmony in Singapore: A Critical Perspective", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [], + "preclusion": "UTC2705 or UTS27%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1918 or GEM1919 or UTC1700 or UTC1701 or UTC1702%", + "corequisite": "" + }, + { + "moduleCode": "UTS2701", + "title": "Understanding Health and Social Care in Singapore", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [ + 1, + 2 + ], + "preclusion": "UTC2707 or UTS27%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1918 or GEM1919 or UTC1700 or UTC1701 or UTC1702%", + "corequisite": "" + }, + { + "moduleCode": "UTS2702", + "title": "Singapore - A Smart Nation in Context : IoT & Big Data", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [ + 1 + ], + "preclusion": "UTC2708 or UTS27%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1918 or GEM1919 or UTC1700 or UTC1701 or UTC1702%", + "corequisite": "" + }, + { + "moduleCode": "UTS2703", + "title": "Energy and Environment: Singapore and ASEAN Perspectives", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [], + "preclusion": "UTC2710 or UTS27%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1918 or GEM1919 or UTC1700 or UTC1701 or UTC1702%", + "corequisite": "" + }, + { + "moduleCode": "UTS2704", + "title": "Hard to secure easy to waste - Singapore’s food story", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [], + "preclusion": "UTC2712 or UTS27%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1918 or GEM1919 or UTC1700 or UTC1701 or UTC1702%", + "corequisite": "" + }, + { + "moduleCode": "UTS2705", + "title": "Modelling Singlehood, Marriage & Fertility in Singapore", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [ + 1, + 2 + ], + "preclusion": "UTC2713 or UTS27%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1918 or GEM1919 or UTC1700 or UTC1701 or UTC1702%", + "corequisite": "" + }, + { + "moduleCode": "UTS2706", + "title": "A social critique of markets in Singapore", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [ + 1, + 2 + ], + "preclusion": "UTC2714 or UTS27%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1918 or GEM1919 or UTC1700 or UTC1701 or UTC1702%", + "corequisite": "" + }, + { + "moduleCode": "UTS2707", + "title": "Decoding Complexity", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [ + 1 + ], + "preclusion": "UTC2715 or UTS27%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1918 or GEM1919 or UTC1700 or UTC1701 or UTC1702%", + "corequisite": "" + }, + { + "moduleCode": "UTS2708", + "title": "Navigation in Singapore Waters-Bridges and Barriers", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [ + 1 + ], + "preclusion": "UTC2717 or UTS27%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1918 or GEM1919 or UTC1700 or UTC1701 or UTC1702%", + "corequisite": "" + }, + { + "moduleCode": "UTS2709", + "title": "Energy and Singapore: Dynamics, Dilemmas and Decisions", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [ + 2 + ], + "preclusion": "UTC2718 or UTS27%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1918 or GEM1919 or UTC1700 or UTC1701 or UTC1702%", + "corequisite": "" + }, + { + "moduleCode": "UTS2710", + "title": "Society and Economy in Singapore: A Systems View", + "moduleCredit": 4, + "department": "Residential College 4", + "faculty": "Residential College", + "semester": [ + 1, + 2 + ], + "preclusion": "UTC2719 or UTS27%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "GEM1918 or GEM1919 or UTC1700 or UTC1701 or UTC1702%", + "corequisite": "" + }, + { + "moduleCode": "UTW1001A", + "title": "Identities and Ideas in Modern Market-Driven Societies", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 1 + ], + "preclusion": "Students who have already read a IEM1201, UTW1001 and ES1501 module.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have passed/been exempted from the NUS Qualifying English Test (QET) or have passed CELC English for Academic Purposes modules", + "corequisite": "" + }, + { + "moduleCode": "UTW1001B", + "title": "What is a nation? Texts, images and national identity", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 2 + ], + "preclusion": "Students who have already read a IEM1201%, UTW1001% and ES1501% module.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have passed/been exempted from the NUS Qualifying English Test (QET) or have passed CELC English for Academic Purposes modules", + "corequisite": "" + }, + { + "moduleCode": "UTW1001C", + "title": "At the Edges of the Law: Ethics, Morality and Society", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have already read a IEM1201%, UTW1001% and ES1501 module.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have passed/been exempted from the NUS Qualifying English Test (QET) or have passed CELC English for Academic Purposes modules", + "corequisite": "" + }, + { + "moduleCode": "UTW1001D", + "title": "Self, Society, and the Digital Tsunami era", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have already read a IEM1201% , UTW1001% and ES1501% module; have previously taken or are currently taking NM1101E/X Communications, New Media and Society", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have passed/been exempted from the NUS Qualifying English Test (QET) or have passed CELC English for Academic Purposes modules", + "corequisite": "" + }, + { + "moduleCode": "UTW1001E", + "title": "From Human to 'Posthuman'", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 1 + ], + "preclusion": "Students who have already read a WP2201 or IEM module, ES1201G, ES1201L, ES1501% (namely ES1501A, ES1501B and ES1501C) modules.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have passed/been exempted from the NUS Qualifying English Test (QET) or have passed CELC English for Academic Purposes modules.", + "corequisite": "" + }, + { + "moduleCode": "UTW1001F", + "title": "The Internationalisation of Higher Education: Impact and Challenges", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 1 + ], + "preclusion": "Students who have already read a IEM1201%, UTW1001% and ES1501% module.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have passed/been exempted from the NUS Qualifying English Test (QET) or have passed CELC English for Academic Purposes modules.", + "corequisite": "" + }, + { + "moduleCode": "UTW1001G", + "title": "Human Behaviours: How do 'I' fit in this Social World?", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 1 + ], + "preclusion": "Students who have already read a WP2201%, IEM1201%, ES1201G, ES1201L, UTW1001% or ES1501% module.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have passed/been exempted from the NUS Qualifying English Test (QET) or have passed CELC English for Academic Purposes modules.", + "corequisite": "" + }, + { + "moduleCode": "UTW1001H", + "title": "Eating Right(s): The Politics of Food", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 1 + ], + "preclusion": "IEM1201%,\nUTW1001%,\nES1501%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have passed/been exempted from the NUS Qualifying\nEnglish Test (QET) or have passed CELC English for Academic\nPurposes modules.", + "corequisite": "" + }, + { + "moduleCode": "UTW1001J", + "title": "Prizes and Popular Culture", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [], + "preclusion": "IEM1201%,\nUTW1001%,\nES1501%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have passed/been exempted from the NUS Qualifying\nEnglish Test (QET) or have passed CELC English for Academic\nPurposes modules.", + "corequisite": "" + }, + { + "moduleCode": "UTW1001K", + "title": "Photography and Society", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [], + "preclusion": "IEM1201%,\nUTW1001%,\nES1501%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have passed/been exempted from the NUS Qualifying\nEnglish Test (QET) or have passed CELC English for Academic\nPurposes modules.", + "corequisite": "" + }, + { + "moduleCode": "UTW1001L", + "title": "From Kodak to Instagram: How Images Tell Lies", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [], + "preclusion": "IEM1201%,\nUTW1001%,\nES1501%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have passed/been exempted from the NUS Qualifying\nEnglish Test (QET) or have passed CELC English for Academic\nPurposes modules.", + "corequisite": "" + }, + { + "moduleCode": "UTW1001M", + "title": "Sport and competition", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [], + "preclusion": "IEM1201%,\nUTW1001%,\nES1501%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have passed/been exempted from the NUS Qualifying\nEnglish Test (QET) or have passed CELC English for Academic\nPurposes modules.", + "corequisite": "" + }, + { + "moduleCode": "UTW1001N", + "title": "Public Persona and Self-presentations", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [], + "preclusion": "IEM1201%,\nUTW1001%,\nES1501%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have passed/been exempted from the NUS Qualifying\nEnglish Test (QET) or have passed CELC English for Academic\nPurposes modules.", + "corequisite": "" + }, + { + "moduleCode": "UTW1001P", + "title": "Heroes", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 1 + ], + "preclusion": "IEM1201%,\nUTW1001%,\nES1501%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have passed/been exempted from the NUS Qualifying\nEnglish Test (QET) or have passed CELC English for Academic\nPurposes modules.", + "corequisite": "" + }, + { + "moduleCode": "UTW1001Q", + "title": "English, Singlish and intercultural communication", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [], + "preclusion": "IEM1201%,\nUTW1001%,\nES1501%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have passed/been exempted from the NUS Qualifying\nEnglish Test (QET) or have passed CELC English for Academic\nPurposes modules.", + "corequisite": "" + }, + { + "moduleCode": "UTW1001R", + "title": "Oratory and the Public Mind", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [], + "preclusion": "IEM1201%,\nUTW1001%,\nES1501%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have passed/been exempted from the NUS Qualifying\nEnglish Test (QET) or have passed CELC English for Academic\nPurposes modules.", + "corequisite": "" + }, + { + "moduleCode": "UTW1001S", + "title": "Women in Film", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 2 + ], + "preclusion": "IEM1201%,\nUTW1001%,\nES1501%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have passed/been exempted from the NUS Qualifying\nEnglish Test (QET) or have passed CELC English for Academic\nPurposes modules.", + "corequisite": "" + }, + { + "moduleCode": "UTW1001T", + "title": "Ideology and Popular Culture in Singapore", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [], + "preclusion": "IEM1201%,\nUTW1001%,\nES1501%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have passed/been exempted from the NUS Qualifying\nEnglish Test (QET) or have passed CELC English for Academic\nPurposes modules.", + "corequisite": "" + }, + { + "moduleCode": "UTW1001U", + "title": "The Detective", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [], + "preclusion": "IEM1201%,\nUTW1001%,\nES1501%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have passed/been exempted from the NUS Qualifying\nEnglish Test (QET) or have passed CELC English for Academic\nPurposes modules.", + "corequisite": "" + }, + { + "moduleCode": "UTW1001W", + "title": "The Online Politician: The Use of Social Media in Political Communication", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 2 + ], + "preclusion": "Students who have already read a IEM1201%, UTW1001% and ES1501% module.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have passed/been exempted from the NUS Qualifying English Test (QET) or have passed CELC English for Academic Purposes modules.", + "corequisite": "" + }, + { + "moduleCode": "UTW1001Y", + "title": "Algorithmic Culture and its Discontents", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [], + "preclusion": "Students who have already read a IEM1201%, UTW1001% and ES1501% module.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have passed/been exempted from the NUS Qualifying English Test (QET) or have passed CELC English for Academic Purposes modules", + "corequisite": "" + }, + { + "moduleCode": "UTW1001Z", + "title": "Colour: Theory, meaning and practice", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 2 + ], + "preclusion": "Students who have already read a IEM1201%, UTW1001% and ES1501% module.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have passed/been exempted from the NUS Qualifying English Test (QET) or have passed CELC English for Academic Purposes modules.", + "corequisite": "" + }, + { + "moduleCode": "UTW2001E", + "title": "Ethics in Outer Space", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [], + "preclusion": "Students who have already read an I&E II module.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "I&E I", + "corequisite": "" + }, + { + "moduleCode": "UTW2001H", + "title": "RISK and Popular Culture", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 2 + ], + "preclusion": "IEM2201%,\nUTW2001%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IEM1201%,\nUTW1001%", + "corequisite": "" + }, + { + "moduleCode": "UTW2001J", + "title": "Blood, Death and Desire, Interpreting the Vampire", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "IEM2201%,\nUTW2001%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IEM1201%,\nUTW1001%", + "corequisite": "" + }, + { + "moduleCode": "UTW2001K", + "title": "Public Memory, Identity and Rhetoric", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [], + "preclusion": "IEM2201%,\nUTW2001%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IEM1201%,\nUTW1001%", + "corequisite": "" + }, + { + "moduleCode": "UTW2001L", + "title": "Visualizing Southeast Asian Cities", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [], + "preclusion": "IEM2201%,\nUTW2001%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IEM1201%,\nUTW1001%", + "corequisite": "" + }, + { + "moduleCode": "UTW2001M", + "title": "Sport and Socialization", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "IEM2201%,\nUTW2001%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IEM1201%,\nUTW1001%", + "corequisite": "" + }, + { + "moduleCode": "UTW2001P", + "title": "Science Fiction and Empire", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "IEM2201%,\nUTW2001%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IEM1201%,\nUTW1001%", + "corequisite": "" + }, + { + "moduleCode": "UTW2001Q", + "title": "'What's in a word?' Meaning across cultures", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "(i)\tUSP students may read any I&E module, but not in lieu of a Writing and Critical Thinking module.\n(ii)\tStudents who have already read an I&E II module.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "I&E I", + "corequisite": "" + }, + { + "moduleCode": "UTW2001R", + "title": "Discourse, Citizenship, and Society", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 1, + 2 + ], + "preclusion": "Students who have already read an I&E 2 module", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "I&E 1", + "corequisite": "" + }, + { + "moduleCode": "UTW2001S", + "title": "Masculinities on Film", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [], + "preclusion": "IEM2201%,\nUTW2001%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IEM1201%,\nUTW1001%", + "corequisite": "" + }, + { + "moduleCode": "UTW2001T", + "title": "Nobodiness: The Self as Story", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [], + "preclusion": "IEM2201%,\nUTW2001%", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "IEM1201%,\nUTW1001%", + "corequisite": "" + }, + { + "moduleCode": "UTW2001W", + "title": "Alter ego / authentic self? Online political identities", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 1 + ], + "preclusion": "Students who have already read an UTW2001% module.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "UTW1001%", + "corequisite": "" + }, + { + "moduleCode": "UTW2001Z", + "title": "The Semiotics of Colour", + "moduleCredit": 4, + "department": "Center for Engl Lang Comms", + "faculty": "NUS", + "semester": [ + 1 + ], + "preclusion": "Students who have already read an UTW2001% module.", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "UTW1001%", + "corequisite": "" + }, + { + "moduleCode": "UWC2101A", + "title": "Writing and Critical Thinking: Colonialism and Cosmopolitanism", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UWC2101AA", + "title": "Writing & Critical Thinking: Religion in Public Life", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UWC2101AB", + "title": "Writing and Critical Thinking: What is Wisdom?", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UWC2101B", + "title": "Writing and Critical Thinking: Civic Discourse in a Fractious World", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UWC2101C", + "title": "Writing and Critical Thinking Module: Monuments, Memorials, and Commemoration", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "Not applicable to USP modules.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Not applicable to USP First-Tier modules.", + "corequisite": "" + }, + { + "moduleCode": "UWC2101D", + "title": "Writing and Critical Thinking: Narrative in Everyday Life", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 1 + ], + "preclusion": "Not applicable to USP modules.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Not applicable to USP First-Tier modules.", + "corequisite": "Not applicable to USP modules." + }, + { + "moduleCode": "UWC2101F", + "title": "Writing and Critical Thinking: Human Trafficking and Labour Migration", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UWC2101G", + "title": "Writing & Critical Thinking: Apocalyptic Cultures", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "Not applicable to USP modules.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Not applicable to USP modules.", + "corequisite": "Not applicable to USP modules." + }, + { + "moduleCode": "UWC2101H", + "title": "Writing & Critical Thinking: Power, Space and Pleasure", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UWC2101I", + "title": "Writing & Critical Thinking: Interpreting Consumerism", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UWC2101J", + "title": "Writing & Critical Thinking: Sites of Tourism", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UWC2101L", + "title": "Writing and Critical Thinking: Conditions of Happiness", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "UTC1409: Jr Seminar: Pursuit of Happiness", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Not applicable to USP modules.", + "corequisite": "Not applicable to USP modules." + }, + { + "moduleCode": "UWC2101N", + "title": "Writing & Critical Thinking: Clothing Identities", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UWC2101R", + "title": "Writing & Critical Thinking: Multidisciplinary Perspectives on 'Mind'", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UWC2101S", + "title": "Writing & Critical Thinking: Danger and National Security", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UWC2101U", + "title": "Writing & Critical Thinking: Technologies of Home", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "UWC2101V", + "title": "Writing & Critical Thinking: Language, Culture and 'Natives' People", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Not applicable to USP First-Tier modules.", + "corequisite": "" + }, + { + "moduleCode": "UWC2101Y", + "title": "Writing and Critical Thinking: Issues in and Around Justice", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 1 + ], + "preclusion": "Not applicable to USP modules.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Not applicable to USP First-Tier modules", + "corequisite": "Not applicable to USP modules." + }, + { + "moduleCode": "UWC2101Z", + "title": "Writing & Critical Thinking: Vice, the State & Society", + "moduleCredit": 4, + "department": "University Scholars Programme", + "faculty": "University Scholars Programme", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "VM5101", + "title": "Introduction of Palliative Care", + "moduleCredit": 4, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "VM5102", + "title": "Symptom Management in Palliative Care I", + "moduleCredit": 4, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "VM5103", + "title": "Symptom Management in Palliative Care II", + "moduleCredit": 4, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "VM5104", + "title": "Psychiatry, Psychosocial Care & Spiritual Issues in Palliative Care", + "moduleCredit": 4, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "VM5105", + "title": "Communication and Ethical Issues", + "moduleCredit": 4, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "VM5106", + "title": "Practices of Palliative Medicine", + "moduleCredit": 4, + "department": "Division of Graduate Medical Studies", + "faculty": "Yong Loo Lin Sch of Medicine", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "WR1401", + "title": "Workplace Readiness", + "moduleCredit": 0, + "department": "Ridge View Residential College", + "faculty": "Residential College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "XD2102", + "title": "Health and Social Sciences", + "moduleCredit": 4, + "department": "FASS Dean's Office/Office of Programmes", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "XD1101", + "corequisite": "" + }, + { + "moduleCode": "XD3103", + "title": "Planet Earth", + "moduleCredit": 4, + "department": "Geography", + "faculty": "Arts and Social Science", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "XFA4401", + "title": "Integrated Honours Project", + "moduleCredit": 16, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "EC4660", + "attributes": [ + false, + false, + false, + false, + true, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before:\n(1) Completed 110 MCs including 60 MCs of EC major requirements with a minimum SJAP of 4.00 and CAP of 3.50\n(2) Passed EC4301/EC4101 or EC4302/EC4102.\n\nCohort 2012-2015:\nCompleted 110 MCs including 60 MCs of EC major requirements with a minimum SJAP of 4.00 and CAP of 3.50. Students may seek a waiver of the SJAP pre-requisite from the department if they have a minimum CAP of 4.25 after completing 110 MCs.\n\nCohort 2016 onwards:\nCompleted 110 MCs including 44 MCs of EC major requirements with a minimum SJAP of 4.00 and CAP of 3.50. Students may seek a waiver of the SJAP pre-requisite from the department if they have a minimum CAP of 4.25 after completing 110 MCs.", + "corequisite": "" + }, + { + "moduleCode": "XFA4402", + "title": "Integrated Honours Thesis", + "moduleCredit": 15, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "EC4660", + "attributes": [ + false, + false, + false, + false, + true, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before:\n(1) Completed 110 MCs including 60 MCs of EC major requirements with a minimum SJAP of 4.00 and CAP of 3.50\n(2) Passed EC4301/EC4101 or EC4302/EC4102.\n\nCohort 2012-2015:\nCompleted 110 MCs including 60 MCs of EC major requirements with a minimum SJAP of 4.00 and CAP of 3.50. Students may seek a waiver of the SJAP pre-requisite from the department if they have a minimum CAP of 4.25 after completing 110 MCs.\n\nCohort 2016 onwards:\nCompleted 110 MCs including 44 MCs of EC major requirements with a minimum SJAP of 4.00 and CAP of 3.50. Students may seek a waiver of the SJAP pre-requisite from the department if they have a minimum CAP of 4.25 after completing 110 MCs.", + "corequisite": "" + }, + { + "moduleCode": "XFA4403", + "title": "Integrated Honours Thesis", + "moduleCredit": 15, + "department": "Communications and New Media", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "NM4660 Independent Study", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2011 and before:\n(1) Be in the CNM-Business Double Degree\n(2) Completed 110 MCs, including 60 MCs of NM major requirements with a minimum SJAP of 4.00 and CAP of 3.50.\n(3) Passed NM4102\n\nCohort 2012-2015:\n(1) Be in the CNM-Business Double Degree\n(2) Completed 110 MCs, including 60 MCs of NM major requirements with a minimum SJAP of 4.00 and CAP of 3.50. Students may seek a waiver of the SJAP pre-requisite from the department if they have a minimum CAP of 4.25 after completing 110 MCs.\n(3) Passed NM4102\n\nCohort 2016 onwards:\n(1) Be in the CNM-Business Double Degree\n(2) Completed 110 MCs, including 44 MCs of NM major requirements with a minimum SJAP of 4.00 and CAP of 3.50. Students may seek a waiver of the SJAP pre-requisite from the department if they have a minimum CAP of 4.25 after completing 110 MCs.\n(3) Passed NM4102", + "corequisite": "" + }, + { + "moduleCode": "XFA4404", + "title": "Integrated Honours Thesis", + "moduleCredit": 15, + "department": "English Language and Literature", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EL4660 Independent Study", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012 and before:\nCompleted 110 MCs, including 60 MCs of EL major requirements with a minimum CAP of 3.50.\n\nCohort 2013‐2015:\nCompleted 110 MCs including 60 MCs of EL major requirements with a minimum SJAP of 4.00 and CAP of 3.50, or with recommendation by the programme committee. Students may seek a waiver of the SJAP\npre‐requisite from the department if they have a minimum CAP of 4.25 after completing 110 MCs.\n\nCohort 2016 onwards:\nCompleted 110 MCs including 44 MCs of EL major requirements with a minimum SJAP of 4.00 and CAP of 3.50, or with recommendation by the programme committee. Students may seek a waiver of the SJAP\npre‐requisite from the department if they have a minimum CAP of 4.25 after completing 110 MCs.", + "corequisite": "" + }, + { + "moduleCode": "XFA4405", + "title": "Integrated Honours Thesis", + "moduleCredit": 15, + "department": "Psychology", + "faculty": "Arts and Social Science", + "semester": [ + 1, + 2 + ], + "preclusion": "PL4660", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2015 and before: Completed 110 MCs, including 60 MCs of PL major requirements, with a minimum CAP of 3.50. \n\nCohorts 2016 and 2017: Completed 110 MCs, including 44 MCs of PL major requirements, with a minimum CAP of 3.50. \n\nCohort 2018 onwards: Completed 110 MCs, including 44 MCs of PL major requirements, with a minimum SJAP of 4.00 and CAP of 3.50. Students may seek a waiver of the SJAP pre-requisite from the department if they have a minimum CAP of 4.25 after completing 110 MCs.", + "corequisite": "" + }, + { + "moduleCode": "XFA4406", + "title": "Integrated Honours Thesis", + "moduleCredit": 15, + "department": "Economics", + "faculty": "Arts and Social Science", + "semester": [], + "preclusion": "EC4401, EC4660", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Cohort 2012-2015\n(1) Completed 110 MCs including 60 MCs of EC major requirements (or be on the Honours Track)\n(2) Minimum SJAP of 4.00 and CAP of 3.50 \nStudents may seek a waiver of the SJAP pre-requisite from the department if they have a minimum CAP of 4.25 after completing 110 MCs.\n\nCohort 2016 onwards\n(1) Completed 110 MCs including 44 MCs of EC major requirements (or be on the Honours Track)\n(2) Minimum SJAP of 4.00 and CAP of 3.50\nStudents may seek a waiver of the SJAP pre-requisite from the department if they have a minimum CAP of 4.25 after completing 110 MCs.", + "corequisite": "" + }, + { + "moduleCode": "XFB4001", + "title": "Integrated Honours Thesis", + "moduleCredit": 12, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "XFB4002", + "title": "Integrated Honours Dissertation", + "moduleCredit": 15, + "department": "BIZ Dean's Office", + "faculty": "NUS Business School", + "semester": [ + 1 + ], + "preclusion": "Integrated honours thesis/dissertation from other faculties", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "Vary, depending on specific research topic.", + "corequisite": "Vary, depending on specific research topic." + }, + { + "moduleCode": "XFC4101", + "title": "Integrated Honours Thesis", + "moduleCredit": 12, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [ + 1, + 2 + ], + "preclusion": "CS4101 B.Comp. Dissertation or CS4349 Game Research\nProject", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "Attain at least 70% of the MC requirement for the\nrespective degrees or departmental approval", + "corequisite": "" + }, + { + "moduleCode": "XFC4102", + "title": "Integrated Honours Dissertation", + "moduleCredit": 15, + "department": "SoC Dean's Office", + "faculty": "Computing", + "semester": [], + "preclusion": "CP4101, BT4101, CG4001, XFC4101 or any integrated\nhonours thesis/project/dissertation module", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "Completed at least 112 MCs for the respective degree.", + "corequisite": "" + }, + { + "moduleCode": "XFE4401", + "title": "Integrated Honours Project", + "moduleCredit": 16, + "department": "FoE Dean's Office", + "faculty": "Engineering", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "XFS4199M", + "title": "Integrated Honours Project", + "moduleCredit": 15, + "department": "Mathematics", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "MA4199", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must be in a double degree programme and must be reading the Bachelor of Science degree as the primary degree. Students must have met the Honours eligibility requirements for specific majors from both Faculties. Students must seek approval from both Faculties to take up this module with an agreement of a common scheme of assessment.", + "corequisite": "" + }, + { + "moduleCode": "XFS4199S", + "title": "Integrated Honours Project", + "moduleCredit": 15, + "department": "Statistics and Applied Probability", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "This module precludes XX4199 as well as XX4299 and vice versa.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must be in a double degree programme and must\nbe reading the Bachelor of Science degree as the primary\ndegree. Students must have met the Honours eligibility\nrequirements for specific majors from both Faculties.\nStudents must seek approval from both Faculties to take\nup this module with an agreement of a common scheme of\nassessment.", + "corequisite": "" + }, + { + "moduleCode": "YCC1111", + "title": "Literature and Humanities 1", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YCC1112", + "title": "Literature and Humanities 2", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YCC1113", + "title": "Philosophy and Political Thought 1", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YCC1114", + "title": "Philosophy and Political Thought 2", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1113 Philosophy and Political Thought 1 or with permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YCC1121", + "title": "Comparative Social Inquiry", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YCC1122", + "title": "Quantitative Reasoning", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YCC1131", + "title": "Scientific Inquiry 1", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YCC1133", + "title": "Week 7: Experiential Learning Field Trip", + "moduleCredit": 0, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YCC2121", + "title": "Modern Social Thought", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1113 Philosophy and Political Thought 1, YCC1114 Philosophy and Political Thought 2 and YCC1121 Comparative Social Inquiry or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YCC2137", + "title": "Scientific Inquiry 2", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1131 Scientific Inquiry 1 and YCC1122 Quantitative Reasoning or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YCT1201", + "title": "Transitions - Understanding College and College Life", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YCT1202", + "title": "Dialogue: Social Issues in Intergroup Relations", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU2202", + "title": "Introduction to Creative Nonfiction", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU2203", + "title": "Masterpieces of Western Art: Renaissance to the Present", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU2205", + "title": "Integrative Music Theory 1", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "MUT1201 Introduction to Classical Music Composition", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU2206", + "title": "Introduction to Mathematical Logic", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU2209", + "title": "Death and the Meaning of Life", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1113 Philosophy and Political Thought 1 and YCC1114 Philosophy and Political Thought 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU2211", + "title": "Roman Literary Cultures", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU2212", + "title": "Classical Chinese", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YLC2202 Intermediate Chinese 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU2213", + "title": "Philosophy of Law", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1113 Philosophy and Political Thought 1 and YCC1114 Philosophy and Political Thought 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU2215", + "title": "Drawing Methods", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU2218", + "title": "Chinese Migrations to Southeast Asia", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "YHU1208 Chinese Migrations to Southeast Asia", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU2222", + "title": "Digital Narratives", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU2223", + "title": "Documentary Photography", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU2224", + "title": "Forms of Poetry", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU2225", + "title": "Love and Friendship", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1114 Philosophy and Political Thought 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU2228", + "title": "The Atlantic World", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU2232", + "title": "Global Science Fiction: Their Worlds, Ourselves", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU2233", + "title": "World Literature and its Discontents", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU2236", + "title": "Travel Writing", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU2241", + "title": "Why be moral?", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU2243", + "title": "Shakespeare & the Shape of Life: Intro to the Plays", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU2244", + "title": "History and Philosophy of the Scientific Revolution", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU2247", + "title": "Dystopian Fiction", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU2248", + "title": "Visual Storytelling", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU2249", + "title": "Poetry, Painting and Photography", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU2252", + "title": "Ancient Greek Philosophy", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1113 Philosophy and Political Thought 1 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU2256", + "title": "Literary Genres: Ancient Epic and Gangster Film", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU2260", + "title": "Late 20th Century French Philosophy", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU2267", + "title": "Modern Art in East Asia", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU2268", + "title": "Money", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU2269", + "title": "Ethics and Politics of Sex", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU2270", + "title": "Contemporary Egalitarianism", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU2272", + "title": "Writing Love: The Love Letter in Literature", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU2277", + "title": "Postcolonial Literatures: An Introduction", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU2278", + "title": "Music Performance Elective: Introduction to Voice", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU2279", + "title": "Philosophy as a Way of Life", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1114 Philosophy and Political Thought 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU2280", + "title": "Oppression and Injustice", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU2282", + "title": "Consciousness", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU2286", + "title": "Daily Themes", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Entrance to this module requires submission of a writing sample of not more than 3,000 words total. This can contain essays (personal and/or academic), poems, stories, a play or a mix of genres.", + "corequisite": "" + }, + { + "moduleCode": "YHU2287", + "title": "Neo-Confucianism and Chinese Buddhism", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU2288", + "title": "Queer Fictions", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU2290", + "title": "History and Culture of Southeast Asia", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "YHU1202 History and Culture of Southeast Asia", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU2291", + "title": "Introduction to Arts", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "YHU1209 Introduction to Arts", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU2292", + "title": "Introduction to Writing Poetry", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "YHU1210 Introduction to Writing Poetry", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU2293", + "title": "Introduction to Fiction Writing", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "YHU1212 Introduction to Fiction Writing", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU2294", + "title": "Mean Streets: The Detective and the City", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU2295", + "title": "The Global Short Story", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "EN4880C The Short Story as a Global Form", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU2296", + "title": "Ancient Epics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU2297", + "title": "Classical Chinese Philosophy", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1113 Philosophy and Political Thought 1 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU2300", + "title": "Exhibitions and the Sites of Display", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All Year 1 Common Curriculum modules or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU2302", + "title": "Realism and Naturalism", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1112 Literature and Humanities 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU2303", + "title": "The Aesthetics of Fear: Horror & the Philosophy of Art", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU2304", + "title": "Global Histories of Slavery", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "First Semester Common Curriculum modules only:\nYCC1111 Literature and Humanities 1 and\nYCC1113 Philosophy and Political Thought 1 and\nYCC1122 Quantitative Reasoning and\nYCC1121 Comparative Social Inquiry", + "corequisite": "" + }, + { + "moduleCode": "YHU2305", + "title": "Bad Love in 20C Literature", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 or with permission of the instructor", + "corequisite": "" + }, + { + "moduleCode": "YHU2307", + "title": "History of Crises: Europe's 20th Century", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU2308", + "title": "Introduction to Vocal Technique and Performance", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU2309", + "title": "Medieval Romance: Magic and the Supernatural", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU2310", + "title": "A Reporters Toolbox: The Practice of Daily Journalism", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 and YCC1113 Philosophy and Political Thought 1 and YCC1114 Philosophy and Political Thought 2 or with permission of the instructor.", + "corequisite": "YCC1112 Literature and Humanities 2 and YCC1114 Philosophy and Political Thought 2; or with permission of the instructor." + }, + { + "moduleCode": "YHU2311", + "title": "Girlfriends: Narratives of Friendship", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "YHU2288 Queer Fictions", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 1; or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU2312", + "title": "Literatures of the Islamic World", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU2313", + "title": "Introduction to the Philosophy of Art", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1113 Philosophy and Political Thought 1 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU2314", + "title": "Rome from City State to Empire", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All Year 1 Common Curriculum modules and YCC2121 Modern Social Thought; or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU2315", + "title": "Classical Indian Philosophy", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1113 Philosophy and Political Thought 1 and YCC1114 Philosophy and Political Thought 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU2316", + "title": "Narrative Ethics: Stories and Self-Improvement", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1113 Philosophy and Political Thought 1 and YCC1114 Philosophy and Political Thought 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU2317", + "title": "Sculpting Movement: Artist in Residence (AIR) Special Project", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU2318", + "title": "State and Society in the Ancient Near East", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All Year 1 Common Curriculum modules or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU2319", + "title": "Beginning Acting for the Stage", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU2320", + "title": "Foundations of Environmental Humanities", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "YID2208 Foundations of Environmental Humanities", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YID1201 Introduction to Environmental Studies or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3201", + "title": "Drawing Process", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU3205", + "title": "Ming Imperial Voyages", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU3210", + "title": "Proseminar in Literary Studies", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3210A", + "title": "Proseminar in Literary Studies", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "Previous iterations of YHU3210 Proseminar in Literary Studies", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3210B", + "title": "Proseminar in Literary Studies", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "Previous iterations of YHU3210 Proseminar in Literary Studies", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3210C", + "title": "Proseminar in Literary Studies", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "Previous iterations of YHU3210 Proseminar in Literary Studies", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3210D", + "title": "Proseminar Lit Studies: How to Do Things with Literature", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "Previous iterations of YHU3210 Proseminar in Literary Studies", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3210E", + "title": "Proseminar in Literary Studies", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "Previous iterations of YHU3210 Proseminar in Literary Studies", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3210F", + "title": "Proseminar in Literary Studies", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "Previous iterations of the YHU3210 Proseminar in Literary Studies", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 or permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3211", + "title": "Chinese Tales of the Strange", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YHU2212 Introduction to Classical Chinese or A‐level Chinese Proficiency or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3212", + "title": "Kant", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU3214", + "title": "Indian Buddhist Philosophy", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1114 Philosophy and Political Thought 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3216", + "title": "Photojournalism", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU3217", + "title": "Forms of Nonfiction: Literary Journalism from Print to Sound", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU3221", + "title": "Nietzsche: An Untimely Thinker and His Times", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU3222", + "title": "Ovid the Innovator", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU3224", + "title": "Warring States China Intellectual and Political History", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1113 Philosophy and Political Thought 1 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3225", + "title": "Pompeii: Art, Urban Life & Culture in the Roman Empire", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU3230", + "title": "The First Opium War, 1839‐42", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU3234", + "title": "Metaphysics of Human Nature", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU3238", + "title": "Empire, Slavery and the Making of the Americas", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All Year 1 Common Curriculum modules or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3239", + "title": "Kazimir Malevich and the Black Square", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU3240", + "title": "The Russo-Japanese War of 1904-5", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU3243", + "title": "Woolf, Historiography, and the Scene of the Modern", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU3244", + "title": "Writing Pedagogy and Practice", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Entrance into this module requires submission of a cover letter stating your interest in the course, an academic writing sample (3-5 pages double spaced). Students also have the option of submitting a creative writing sample, although this is not required. In your cover letter, include your class standing, residential college, and past writing courses taken.", + "corequisite": "" + }, + { + "moduleCode": "YHU3245", + "title": "Aristotle", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1113 Philosophy and Political Thought 1 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3246", + "title": "Novel Evidence:19th-Century British Fiction and the Law", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2", + "corequisite": "" + }, + { + "moduleCode": "YHU3247", + "title": "The Afropolitans: Contemporary African Lit. & Film", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3248", + "title": "Food and Ethics in Roman Literature and Culture", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3252", + "title": "The Roman Emperor Nero: Sex, Stage and Scandal", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All Year 1 and 2 Common Curriculum modules or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3254", + "title": "From Edo to Modern City: Tokyo", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All Year 1 and 2 Common Curriculum modules or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3259", + "title": "World Religious Poetry", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature & Humanities 1 and YCC1113 Philosophy & Political Thought 1 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3260", + "title": "Heretics and Deviants: Writing, Rebellion, and Islam", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3261", + "title": "Analogical Reasoning and Metaphor", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1113 Philosophy and Political Thought 1 and YCC1114 Philosophy and Political Thought 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3263", + "title": "The Bandung Conference of 1955", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All Year 1 and 2 Common Curriculum modules or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3265", + "title": "Philosophy of Religion", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1113 Philosophy and Political Thought 1 and YCC1114 Philosophy and Political Thought 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3266", + "title": "Democratic Theory", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "YHU2245 Democratic Theory", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC2121 Modern Social Thought or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3267", + "title": "Classical Indian Philosophy of Language", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "YHU2251 Classical Indian Philosophy of Language", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1113 Philosophy and Political Thought 1 and YCC1114 Philosophy and Political Thought 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3268", + "title": "The Japanese Empire in Global History", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "One 2000 or 3000 level History module or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3270", + "title": "English Women Novelists: Austen and her Predecessors", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "EN4226 English Women Novelists 1800-1900 and EN3228 Women Novelists: 1750-1800.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3271", + "title": "Love in Antiquity: Eros in Translation", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 and one literature elective or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3272", + "title": "Literary Activism: Texts, Aesthetics, & Politics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3274", + "title": "Painting the Orient", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU3275", + "title": "Descartes and the Perfection of Human Knowledge", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU3276", + "title": "The Historian’s Craft", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "YHU2217 The Historian’s Craft", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All Year 1 Common Curriculum modules or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3281", + "title": "English Women Novelists: the Brontës to George Eliot", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "EN4226 English Women Novelists 1800-1900", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3282", + "title": "Equiano's Slave Narrative: Texts & Contexts", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All Year 1 and 2 Common Curriculum modules or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3283", + "title": "Reality", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed one philosophy elective.", + "corequisite": "" + }, + { + "moduleCode": "YHU3284", + "title": "Postcolonial Literatures Today", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3285", + "title": "Rebellion and Revolution in Vietnamese History", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "YHU3226 Modern Vietnamese History and Literature", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU3286", + "title": "Living & Dying as Japanese in WWII Anime and Drama", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All Year 1 and 2 Common Curriculum modules or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3288", + "title": "Installation Art", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU3289", + "title": "Beyond China: Sinophone Literature, Film, and Culture", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3290", + "title": "Dante’s Divine Comedy", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "YHU2230 Dante and the European Middle Ages", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3291", + "title": "Sacrifice, Sex, and Power in Medieval Kashmir", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU3292", + "title": "Life Drawing", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "YHU4213 Life Drawing", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU3293", + "title": "Japanese Woodblock Prints", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "YHU1211 Japanese Woodblock Prints", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU3294", + "title": "Socrates on Trial", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1113 Philosophy and Political Thought 1 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3295", + "title": "Nasty Girls: Gender, Sexuality & Race in Early America", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All Year 1 Common Curriculum modules or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3296", + "title": "Fiction and the Supernatural", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3297", + "title": "Debate and Reasoning in Indian Philosophy", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1113 Philosophy and Political Thought 1 YCC1114 Philosophy and Political Thought 2 and one Philosophy module or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3299", + "title": "Sex, Decadence and Decay: Weimar Berlin (1918-33)", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed first year Common Curriculum module requirements.", + "corequisite": "" + }, + { + "moduleCode": "YHU3300", + "title": "1917: War and Revolution", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU3302", + "title": "Latin American Realities", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU3306", + "title": "Philippine Literature: American Period", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All Year 1 and 2 Common Curriculum modules or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3310", + "title": "Global Modernisms", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and\nYCC1112 Literature and Humanities 2 or\nwith the permission of the instructor", + "corequisite": "" + }, + { + "moduleCode": "YHU3311", + "title": "Ancient Tragedy: Gender, Politics, and Poetry", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and\nYCC1112 Literature and Humanities 2 or\nwith the permission of the instructor", + "corequisite": "" + }, + { + "moduleCode": "YHU3312", + "title": "Hollywood in the 1930s", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All Year 1 and 2 Common Curriculum modules or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3313", + "title": "The Amarna Letters: Diplomacy in the Late Bronze Age", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU3314", + "title": "1989: The End of the Cold War", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU3315", + "title": "Gospels as Literature", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 and at least one non-Common Curriculum Humanities module or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3316", + "title": "Singapore under Japanese Occupation", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU3317", + "title": "The Words and World of Lu Xun", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU3318", + "title": "Sexuality in Modern Europe and Its Empires", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC2121 Modern Social Thought or with the permission of the instructor.", + "corequisite": "YCC2121 Modern Social Thought or with the permission of the instructor." + }, + { + "moduleCode": "YHU3319", + "title": "Disability and the Arts", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3320", + "title": "Vasubandhu", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1113 Philosophy and Political Thought 1 and YCC1114 Philosophy and Political Thought 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3321", + "title": "British Comic Fiction: The 20th Century", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3322", + "title": "Crazy Rich Europeans: Wealth & Power in Modern History", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "YHU4239 The Age of Capital: Business, Elites and Power in 19th and 20th Century Europe", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU3323", + "title": "Model Operas and the Chinese Cultural Revolution", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All Year 1 and 2 Common Curriculum modules or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3324", + "title": "Advanced Latin: Catullus", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "YLL3201 Advanced Latin: Catullus", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YLL2201 Intermediate Latin or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3325", + "title": "Advanced Latin: Catiline in the Roman Elite Imagination", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "YLL3202 Advanced Latin: Catiline in the Roman Elite Imagination", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YLL2201 Intermediate Latin or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3327", + "title": "Social Practice Art", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YHU2291 Introduction to Arts or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3328", + "title": "Contemporary Korean Cinema and the Colonial Past", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All Year 1 Common Curriculum modules or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3329", + "title": "Advanced Latin: Ovid’s Metamorphoses", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YLL2201 Intermediate Latin or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3330", + "title": "Hinduism, Nationalism, and the Bhagavad Gita in the 20th Century", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All Year 1 and Year 2 Common Curriculum modules or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3331", + "title": "Refining Vocal Technique and Performance", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1113 Philosophy and Political Thought 1 and YHU2278 Music Performance Elective: Introduction to Voice or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3332", + "title": "Poetry in/and/of the World", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All Year 1 Common Curriculum modules and at one 2000 level Literature module or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3333", + "title": "The Arab Defeat of 1967 and its Aesthetic Afterlives", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU3334", + "title": "Mexican Revolutionary Aesthetics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and \nYCC1112 Literature and Humanities 2 or \nwith the permission of instructor", + "corequisite": "" + }, + { + "moduleCode": "YHU3335", + "title": "Phenomenology and Existentialism", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1113 Philosophy and Political Thought 1 and YCC1114 Philosophy and Political Thought 2; or with the permission of the Instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3336", + "title": "Goodbye Mao: China's Post Socialist Transformations", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU3337", + "title": "Money and the Rise of the State", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All Year 1 and 2 Common Curriculum modules or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3338", + "title": "Confronting the Holocaust in Text, Film and Music", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 and one Literature module or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3339", + "title": "Rome in Antiquity", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC2121 Modern Social Thought or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3340", + "title": "The Bacchae of Euripides", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU3341", + "title": "Postcolonial Art", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "One 2000 level Arts and Humanities module or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3342", + "title": "Integrative Music Theory 2", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YHU2205 Integrative Music Theory 1 or with the permission frof the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU3343", + "title": "Another World is Possible: Ecotopian Visions", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "YID3203 Another World is Possible: Ecotopian Visions", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YID1201 Introduction to Environmental Studies or YID2208 Foundations of Environmental Humanities strongly recommended but not required.", + "corequisite": "YID1201 Introduction to Environmental Studies or YID2208 Foundations of Environmental Humanities strongly recommended but not required." + }, + { + "moduleCode": "YHU3345", + "title": "Death, Mourning and Memory in Medieval Literature", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU4101", + "title": "History Capstone Project", + "moduleCredit": 10, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "All Year 1 and 2 Common Curriculum modules or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU4102", + "title": "Literature Capstone Project", + "moduleCredit": 10, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "All Year 1 and 2 Common Curriculum modules or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU4103", + "title": "Philosophy Capstone Project", + "moduleCredit": 10, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "All Year 1 and 2 Common Curriculum modules or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU4104", + "title": "Arts and Humanities Capstone Project", + "moduleCredit": 10, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "All Year 1 and 2 Common Curriculum modules or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU4206", + "title": "The History of History", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU4207", + "title": "Critical Approaches to Art History", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All Year 1 and 2 Common Curriculum modules and at least one 1000 or 2000 level Art History module or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU4212", + "title": "The Problem of Evil from the Enlightenment to Auschwitz", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All Year 1 and 2 Common Curriculum modules or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU4214", + "title": "Advanced Creative Nonfiction", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "YHU3206 Advanced Creative Nonfiction", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YHU2202 Introduction to Creative Nonfiction or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU4215", + "title": "Advanced Fiction Writing", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YHU2293 Introduction to Fiction Writing or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU4216", + "title": "Advanced Poetry Writing", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YHU2292 Introduction to Writing Poetry or with the permission of the instructor.\nEntrance into this course requires submission of a portfolio of poems.", + "corequisite": "" + }, + { + "moduleCode": "YHU4217", + "title": "Novel Evidence:19th-Century British Fiction and the Law", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU4218", + "title": "Chinese Poetry", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YHU2212 Classical Chinese or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU4219", + "title": "Doing Things with Words", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Two Philosophy modules other than YCC1113 Philosophy and Political Thought 1 and YCC1114 Philosophy and Political Thought 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU4220", + "title": "The Political Philosophy of Spinoza", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "YHU3233 The Political Philosophy of Spinoza", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1114 Philosophy and Political Thought 2 and YCC2121 Modern Social Thought or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU4222", + "title": "The Historiography of Sima Qian", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All Year 1 and 2 Common Curriculum modules or with the permission of the instructor. For Year 3 onwards.", + "corequisite": "" + }, + { + "moduleCode": "YHU4225", + "title": "Imperial Outlaws: Social Deviants in the Age of Empires", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "YHU3253 Imperial Outlaws: Social Deviants in the Age of Empires", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Taken one 2000 level, one 3000 level and one 4000 level History module or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU4227", + "title": "Ancient Humour: Greece and Rome", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 and one Literature module or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU4228", + "title": "Oceanic Frameworks: Shifting Currents in Lit. Studies", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YHU3210 Proseminar in Literary Studies or one Literature module or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU4229", + "title": "Plato on Knowing and Being Good", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Two Philosophy modules other than YCC1113 Philosophy and Political Thought 1 and YCC1114 Philosophy and Political Thought 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU4231", + "title": "Ancient Economies of the Mediterranean and Western Asia", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC2121 Modern Social Thought or with the permission of the instructor", + "corequisite": "" + }, + { + "moduleCode": "YHU4233", + "title": "Violence, Poetry and the Arts", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All Year 1 and 2 Common Curriculum modules and at least one 2000 or 3000 level Arts & Humanities or Literature module or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU4234", + "title": "Trauma, Loss, Exile and the Literary Imagination", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU4236", + "title": "“New” Media: Inquiries into Literature & Technology", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 and one Literature module or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU4237", + "title": "Chinese Prose", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YHU2212 Classical Chinese or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU4238", + "title": "The Female Image in Japanese Art and Literature", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "YHU3232 The Female Image in Japanese Art and Literature", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "At least one 2000 or 3000 level Art History or Literature module or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU4240", + "title": "American Modernist Poetry", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 and at least one 2000 and one 3000 level Literatue module or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU4242", + "title": "The History of the Book in East and Southeast Asia", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YHU4243", + "title": "Art Studio Research, Experimentation and Critique", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YHU2223 Documentary Photography or YHU3201 Drawing Process or YHU3216 Photojournalism or YHU3273 Intermediate Oil Painting or YHU3288 Installation Art or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU4245", + "title": "Perception", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "One Philosophy module other than YCC1113 Philosophy and Political Thought 1 and YCC1114 Philosophy and Political Thought 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU4246", + "title": "The Population Bomb: Biopolitics & Geopolitics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Non-history majors should have already taken their HI module. \nStudents who have previously taken YHU3318: Sexuality in Modern Europe and Its Empires would be familiar with several of the issues explored.", + "corequisite": "" + }, + { + "moduleCode": "YHU4247", + "title": "Museums and Libraries as Cultural Institutions", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 and at least one 3000 level History or Literature module or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU4249", + "title": "The Self and Society: The Novel of Development", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YHU3210% Proseminar in Literary Studies or with the permission of the\ninstructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU4251", + "title": "Experimental Animation and the Mechanics of Movement", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YHU2215 Drawing Methods or \nYHU2222 Digital Narratives or \nYHU2237 Film and Other Arts or \nYHU2248 Visual Storytelling or \nYHU2291 Introduction to Arts or \nYHU3216 Photojournalism or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU4253", + "title": "The Global South Novel", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2; or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU4254", + "title": "The Global Renaissance", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 and one Literature module or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU4255", + "title": "Borges and Literary Theory", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and YCC1112 Literature and Humanities 2 and at least one other Literature module or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YHU4256", + "title": "Solidarity and Social Change", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1113 Philosophy and Political Thought 1 and YCC1114 Philosophy and Political Thought 2 and at least one 3000 level Philosophy module or two 2000 level Philosophy modules or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YID1201", + "title": "Introduction to Environmental Studies", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "ENV1101", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YID2201", + "title": "Theory and Practice of Environmental Policymaking", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YID1201 Introduction to Environmental Studies or with the permission of instructor.", + "corequisite": "" + }, + { + "moduleCode": "YID2205", + "title": "Systems Thinking and Analysis", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YID2207", + "title": "Social Theory and the Environment", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC2121 Modern Social Thought and YID1201 Introduction to Environmental Studies or with the permission of the instructor.", + "corequisite": "YID1201 Introduction to Environmental Studies or with the permission of the instructor." + }, + { + "moduleCode": "YID2208", + "title": "Foundations of Environmental Humanities", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YID1201 Introduction to Environmental Studies or with the permission of instructor.", + "corequisite": "" + }, + { + "moduleCode": "YID2209", + "title": "Biogeophysical Systems", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YID1201 Introduction to Environmental Studies or with the permission of instructor.", + "corequisite": "YID1201 Introduction to Environmental Studies or with the permission of instructor." + }, + { + "moduleCode": "YID2210", + "title": "Understanding and Building Resilience", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YID1201 Introduction to Environmental Studies or with the permission of the instructor", + "corequisite": "" + }, + { + "moduleCode": "YID2212", + "title": "Data Science for the Environment", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "YSS2242 Data Science for the Environment", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YID3202", + "title": "Special Topics in Environmental Studies", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YID3202B", + "title": "Special Topics in Environmental Studies", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YID3202C", + "title": "Special Topics: Data Analysis in Environmental Studies", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YID3202D", + "title": "Special Topics: Climate Change and the Future of Energy", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "YID1201 Introduction to Environmental Studies or with the permission of the instructor." + }, + { + "moduleCode": "YID3202E", + "title": "Special Topics: Himalayan Diversities", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YID1201 Introduction to Environmental Studies or with the permission of instructor.", + "corequisite": "" + }, + { + "moduleCode": "YID3202F", + "title": "Special Topic: Ocean and Society in Southeast Asia", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YID1201 Introduction to Environmental Studies or with the permission of instructor.", + "corequisite": "" + }, + { + "moduleCode": "YID3202G", + "title": "Special Topics: Planetary Health", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YID3202H", + "title": "Special Topics: Asia's Edible Ocean", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YID3203", + "title": "Another World is Possible: Ecotopian Visions", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YID3205", + "title": "Global Environmental Governance", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YID1201 Introduction to Environmental Studies or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YID3206", + "title": "Agrarian Change and Environmental Transformations", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YID2207 Social Theory and the Environment or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YID3207", + "title": "China’s Energy and Environmental Sustainability", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YID1201 Introduction to Environmental Studies or with the permission of instructor.", + "corequisite": "" + }, + { + "moduleCode": "YID3208", + "title": "Environmental Movements: Past, Present and Future", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YID3209", + "title": "Climate Science and Policy", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YID1201 Introduction to Environmental Studies or with the permission of instructor.", + "corequisite": "" + }, + { + "moduleCode": "YID3210", + "title": "Energy Humanities: Culture, Energy, and the Environment", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "YID2202 Energy Humanities: Culture, Energy, and the Environment", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YID1201 Introduction to Environmental Studies or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YID3211", + "title": "Ecological Economics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "YID2204 Ecological Economics", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YID1201 Introduction to Environmental Studies or with the permission of the instructor.", + "corequisite": "YID1201 Introduction to Environmental Studies or with the permission of the instructor." + }, + { + "moduleCode": "YID3212", + "title": "Risk and Geohazard", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YID1201 Introduction to Environmental Studies or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YID3213", + "title": "Environmental Conflict and Collaboration", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YID1201 Introduction to Environmental Studies or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YID3214", + "title": "Urban Ecological Systems", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "YSS3272 Urban Ecological Systems", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "One Environmental Studies or Urban Studies module or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YID3215", + "title": "Sustainable Consumption", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YID1201 Introduction to Environmental Studies or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YID3216", + "title": "Environment, Development and Mobilisation in Asia", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YID1201 Introduction to Environmental Studies or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YID3217", + "title": "Modelling a Dynamic World", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YID1201 Introduction to Environmental Studies or with the permission of instructor.", + "corequisite": "" + }, + { + "moduleCode": "YID3218", + "title": "Singapore Biodiversity: Past, Present and Future", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "GES1021", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YID3219", + "title": "Volcanos, Climate, and Society in the 19th Century", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All Year 1 and 2 Common Curriculum modules or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YID3220", + "title": "The Ethics and Politics of Reproduction in the Age of Climate Change", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YID1201 Introduction to Environmental Studies or YID2208 Foundations of Environmental Humanities or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YID3221", + "title": "Wildlife Forensics and the Shark Fin Trade", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YID4101", + "title": "Environmental Studies Capstone Project", + "moduleCredit": 10, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "All Year 1 and 2 Common Curriculum modules or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YID4201", + "title": "Advanced Seminar in Environmental Studies", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YID1201 Introduction to Environmental Studies or YID2201 The Theory and Practice of Environmental Policymaking or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YID4201A", + "title": "Advanced Seminar in Environmental Studies: Forest Landscape Restoration", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "One YID3000 or YSC3000 level module or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YID4202", + "title": "Applied Environmental Research", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YIL1201B", + "title": "Directed Language Study: Beginning Bangla 1", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YIL1201I", + "title": "Directed Language Study: Beginning Italian 1", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YIL1201S", + "title": "Directed Language Study: Beginning Sanskrit", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YIL1202B", + "title": "Directed Language Study: Beginning Bangla 2", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YIL1201B Directed Language Study: Beginning Bangla 1 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YIL1202I", + "title": "Directed Language Study: Beginning Italian 2", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YIL1201I Directed Language Study: Beginning Italian 1 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YIL2201I", + "title": "Directed Language Study: Intermediate Italian 1", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YIL1202I Directed Language Study: Beginning Italian 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YIL2201R", + "title": "Directed Language Study: Intermediate Russian 1", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YIL1202R Directed Language Study: Beginning Russian 2", + "corequisite": "" + }, + { + "moduleCode": "YIL2201S", + "title": "Directed Language Study: Intermediate Sanskrit", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YIL1201S Directed Language Study: Beginning Sanskrit or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YIL3201S", + "title": "Directed Language Study: Advanced Sanskrit", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YIL2201S Directed Language Study: Intermediate Sanskrit or equivalent", + "corequisite": "" + }, + { + "moduleCode": "YIR3301", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Nil.\n(Consent of the Supervisor, Divisional Director, Vice Rector and Dean of Faculty)", + "corequisite": "" + }, + { + "moduleCode": "YIR3301G", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Nil.\n(Consent of the Supervisor, Divisional Director, Vice Rector and Dean of Faculty)", + "corequisite": "" + }, + { + "moduleCode": "YIR3302", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Nil.\n(Consent of the Supervisor, Divisional Director, Vice Rector and Dean of Faculty)", + "corequisite": "" + }, + { + "moduleCode": "YIR3302G", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Nil.\n(Consent of the Supervisor, Divisional Director, Vice Rector and Dean of Faculty)", + "corequisite": "" + }, + { + "moduleCode": "YIR3303", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Nil.\n(Consent of the Supervisor, Divisional Director, Vice Rector and Dean of Faculty)", + "corequisite": "" + }, + { + "moduleCode": "YIR3303G", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Nil.\n(Consent of the Supervisor, Divisional Director, Vice Rector and Dean of Faculty)", + "corequisite": "" + }, + { + "moduleCode": "YIR3304", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Nil.\n(Consent of the Supervisor, Divisional Director, Vice Rector and Dean of Faculty)", + "corequisite": "" + }, + { + "moduleCode": "YIR3304G", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Nil.\n(Consent of the Supervisor, Divisional Director, Vice Rector and Dean of Faculty)", + "corequisite": "" + }, + { + "moduleCode": "YIR3305", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Nil.\n(Consent of the Supervisor, Divisional Director, Vice Rector and Dean of Faculty)", + "corequisite": "" + }, + { + "moduleCode": "YIR3305G", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Nil.\n(Consent of the Supervisor, Divisional Director, Vice Rector and Dean of Faculty)", + "corequisite": "" + }, + { + "moduleCode": "YIR3306", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Nil.\n(Consent of the Supervisor, Divisional Director, Vice Rector and Dean of Faculty)", + "corequisite": "" + }, + { + "moduleCode": "YIR3306G", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Nil.\n(Consent of the Supervisor, Divisional Director, Vice Rector and Dean of Faculty)", + "corequisite": "" + }, + { + "moduleCode": "YIR3307", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Nil.\n(Consent of the Supervisor, Divisional Director, Vice Rector and Dean of Faculty)", + "corequisite": "" + }, + { + "moduleCode": "YIR3307G", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Nil.\n(Consent of the Supervisor, Divisional Director, Vice Rector and Dean of Faculty)", + "corequisite": "" + }, + { + "moduleCode": "YIR3308", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Nil.\n(Consent of the Supervisor, Divisional Director, Vice Rector and Dean of Faculty)", + "corequisite": "" + }, + { + "moduleCode": "YIR3308G", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Nil.\n(Consent of the Supervisor, Divisional Director, Vice Rector and Dean of Faculty)", + "corequisite": "" + }, + { + "moduleCode": "YIR3309", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Nil.\n(Consent of the Supervisor, Divisional Director, Vice Rector and Dean of Faculty)", + "corequisite": "" + }, + { + "moduleCode": "YIR3309G", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Nil.\n(Consent of the Supervisor, Divisional Director, Vice Rector and Dean of Faculty)", + "corequisite": "" + }, + { + "moduleCode": "YIR3310", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Nil.\n(Consent of the Supervisor, Divisional Director, Vice Rector and Dean of Faculty)", + "corequisite": "" + }, + { + "moduleCode": "YIR3310G", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Nil.\n(Consent of the Supervisor, Divisional Director, Vice Rector and Dean of Faculty)", + "corequisite": "" + }, + { + "moduleCode": "YIR3311", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YIR3311G", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YIR3312", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YIR3312G", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YIR3313", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + true, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YIR3313G", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YIR3314", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Nil.\n(Consent of the Supervisor, Divisional Director, Vice Rector and Dean of Faculty)", + "corequisite": "" + }, + { + "moduleCode": "YIR3314G", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Nil.\n(Consent of the Supervisor, Divisional Director, Vice Rector and Dean of Faculty)", + "corequisite": "" + }, + { + "moduleCode": "YIR3315", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Nil.\n(Consent of the Supervisor, Divisional Director, Vice Rector and Dean of Faculty)", + "corequisite": "" + }, + { + "moduleCode": "YIR3315G", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Nil.\n(Consent of the Supervisor, Divisional Director, Vice Rector and Dean of Faculty)", + "corequisite": "" + }, + { + "moduleCode": "YIR3316", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Nil.\n(Consent of the Supervisor, Divisional Director, Vice Rector and Dean of Faculty)", + "corequisite": "" + }, + { + "moduleCode": "YIR3316G", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Nil.\n(Consent of the Supervisor, Divisional Director, Vice Rector and Dean of Faculty)", + "corequisite": "" + }, + { + "moduleCode": "YIR3317", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Nil.\n(Consent of the Supervisor, Divisional Director, Vice Rector and Dean of Faculty)", + "corequisite": "" + }, + { + "moduleCode": "YIR3317G", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Nil.\n(Consent of the Supervisor, Divisional Director, Vice Rector and Dean of Faculty)", + "corequisite": "" + }, + { + "moduleCode": "YIR3318", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Nil.\n(Consent of the Supervisor, Divisional Director, Vice Rector and Dean of Faculty)", + "corequisite": "" + }, + { + "moduleCode": "YIR3318G", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Nil.\n(Consent of the Supervisor, Divisional Director, Vice Rector and Dean of Faculty)", + "corequisite": "" + }, + { + "moduleCode": "YIR3319", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Nil.\n(Consent of the Supervisor, Divisional Director, Vice Rector and Dean of Faculty)", + "corequisite": "" + }, + { + "moduleCode": "YIR3319G", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Nil.\n(Consent of the Supervisor, Divisional Director, Vice Rector and Dean of Faculty)", + "corequisite": "" + }, + { + "moduleCode": "YIR3320", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Nil.\n(Consent of the Supervisor, Divisional Director, Vice Rector and Dean of Faculty)", + "corequisite": "" + }, + { + "moduleCode": "YIR3320G", + "title": "Independent Reading and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Nil.\n(Consent of the Supervisor, Divisional Director, Vice Rector and Dean of Faculty)", + "corequisite": "" + }, + { + "moduleCode": "YIR3401", + "title": "Independent Language Study and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Project proposal with consent of Faculty Supervisor, Language Coordinator, Divisional Director, Vice Rector and Dean of Faculty.", + "corequisite": "" + }, + { + "moduleCode": "YIR3401G", + "title": "Independent Language Study and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Project proposal with consent of Faculty Supervisor, Language Coordinator, Divisional Director, Vice Rector and Dean of Faculty.", + "corequisite": "" + }, + { + "moduleCode": "YIR3402", + "title": "Independent Language Study and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Project proposal with consent of Faculty Supervisor, Language Coordinator, Divisional Director, Vice Rector and Dean of Faculty.", + "corequisite": "" + }, + { + "moduleCode": "YIR3402G", + "title": "Independent Language Study and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Project proposal with consent of Faculty Supervisor, Language Coordinator, Divisional Director, Vice Rector and Dean of Faculty.", + "corequisite": "" + }, + { + "moduleCode": "YIR3403", + "title": "Independent Language Study and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Project proposal with consent of Faculty Supervisor, Language Coordinator, Divisional Director, Vice Rector and Dean of Faculty.", + "corequisite": "" + }, + { + "moduleCode": "YIR3403G", + "title": "Independent Language Study and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Project proposal with consent of Faculty Supervisor, Language Coordinator, Divisional Director, Vice Rector and Dean of Faculty.", + "corequisite": "" + }, + { + "moduleCode": "YIR3404", + "title": "Independent Language Study and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Project proposal with consent of Faculty Supervisor, Language Coordinator, Divisional Director, Vice Rector and Dean of Faculty.", + "corequisite": "" + }, + { + "moduleCode": "YIR3404G", + "title": "Independent Language Study and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Project proposal with consent of Faculty Supervisor, Language Coordinator, Divisional Director, Vice Rector and Dean of Faculty.", + "corequisite": "" + }, + { + "moduleCode": "YIR3405", + "title": "Independent Language Study and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Project proposal with consent of Faculty Supervisor, Language Coordinator, Divisional Director, Vice Rector and Dean of Faculty.", + "corequisite": "" + }, + { + "moduleCode": "YIR3405G", + "title": "Independent Language Study and Research", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Project proposal with consent of Faculty Supervisor, Language Coordinator, Divisional Director, Vice Rector and Dean of Faculty.", + "corequisite": "" + }, + { + "moduleCode": "YIR4301", + "title": "Special Project in Science", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Unusually strong preparation in science, and prior approval of the Director of the Science Division.", + "corequisite": "" + }, + { + "moduleCode": "YIR4301G", + "title": "Special Project in Science", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Unusually strong preparation in science, and prior approval of the Director of the Science Division.", + "corequisite": "" + }, + { + "moduleCode": "YIR4302", + "title": "Special Project in Science", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Unusually strong preparation in science, and prior approval of the Director of the Science Division.", + "corequisite": "" + }, + { + "moduleCode": "YIR4302G", + "title": "Special Project in Science", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Unusually strong preparation in science, and prior approval of the Director of the Science Division.", + "corequisite": "" + }, + { + "moduleCode": "YIR4303", + "title": "Special Project in Science", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Unusually strong preparation in science, and prior approval of the Director of the Science Division.", + "corequisite": "" + }, + { + "moduleCode": "YIR4303G", + "title": "Special Project in Science", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Unusually strong preparation in science, and prior approval of the Director of the Science Division.", + "corequisite": "" + }, + { + "moduleCode": "YIR4304", + "title": "Special Project in Science", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Unusually strong preparation in science, and prior approval of the Director of the Science Division.", + "corequisite": "" + }, + { + "moduleCode": "YIR4304G", + "title": "Special Project in Science", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Unusually strong preparation in science, and prior approval of the Director of the Science Division.", + "corequisite": "" + }, + { + "moduleCode": "YIR4305", + "title": "Special Project in Science", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Unusually strong preparation in science, and prior approval of the Director of the Science Division.", + "corequisite": "" + }, + { + "moduleCode": "YIR4305G", + "title": "Special Project in Science", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Unusually strong preparation in science, and prior approval of the Director of the Science Division.", + "corequisite": "" + }, + { + "moduleCode": "YLC1201", + "title": "Beginning Chinese 1", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YLC1202", + "title": "Beginning Chinese 2", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YLC1201 Beginning Chinese 1 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YLC2201", + "title": "Intermediate Chinese 1", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YLC1202 Beginning Chinese 2 or passed GCE Chinese O & A Levels or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YLC2202", + "title": "Intermediate Chinese 2", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YLC2201 Intermediate Chinese 1 or passed GCE Chinese O & A Levels or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YLC3203", + "title": "Advanced Chinese 1", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YLC2202 Intermediate Chinese 2 or passed GCE Chinese O & A Levels or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YLC3204", + "title": "Advanced Chinese 2", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YLC3203 Advanced Chinese 1 or passed GCE Chinese O & A Levels or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YLC3205", + "title": "Advanced Readings in Chinese: Cinematic and Literary Texts", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "YLC3201 Advanced Readings in Chinese: Cinematic and Literary Texts", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YLC3204 Advanced Chinese 2 or passed GCE Chinese A Levels or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YLC3206", + "title": "Advanced Readings in Chinese: Modern Chinese Literature", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "YLC3202 Advanced Chinese: Readings in Modern Chinese Literature", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YLC3204 Advanced Chinese 2 or passed GCE Chinese A Levels or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YLG1201", + "title": "Beginning Ancient Greek", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "YLG2201 Intensive Elementary Greek", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YLG2202", + "title": "Intermediate Ancient Greek", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YLG1201 Beginning Ancient Greek or YLG2201 Intensive Elementary Greek or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YLG3201", + "title": "Advanced Ancient Greek Prose", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YLG2202 Intermediate Ancient Greek or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YLG3202", + "title": "Advanced Ancient Greek Poetry", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YLG2202 Intermediate Ancient Greek or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YLL1201", + "title": "Beginning Latin", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YLL2201", + "title": "Intermediate Latin", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "YLL1202 Intermediate Latin or YLL2202 Intermediate Latin", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YLL1201 Beginning Latin or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YLN1201", + "title": "Beginning Singapore Sign Language", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YLN2201", + "title": "Intermediate Singapore Sign Language", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YLN1201 Beginning Sign Language or with the permission of instructor.", + "corequisite": "" + }, + { + "moduleCode": "YLS1201", + "title": "Beginning Spanish 1", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YLS1202", + "title": "Beginning Spanish 2", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YLS1201 Beginning Spanish 1 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YLS2201", + "title": "Intermediate Spanish 1", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YLS1202 Beginning Spanish 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YLS2202", + "title": "Intermediate Spanish 2", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YLS2201 Intermediate Spanish 1 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YLS3201", + "title": "Advanced Spanish: Spain, a Mosaic of Cultures", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YLS2201 Intermediate Spanish 1 and YLS2202 Intermediate Spanish 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YLS3202", + "title": "Advanced Spanish: Latin America, Borders and Identities", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YLS2202 Intermediate Spanish 2 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC1207", + "title": "General Chemistry", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSC1208", + "title": "Dogs as Model Organisms", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSC1210A", + "title": "Modern Physics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSC1212", + "title": "Introduction to Computer Science", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1122 Quantitative Reasoning or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC1213", + "title": "General Physics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "PC1221, PC1222", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC1216 Calculus or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC1214", + "title": "Networks", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSC1215", + "title": "Genetic Engineering for All: An iGEM team for Yale-NUS?", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSC1216", + "title": "Calculus", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "MA1102R, MA1505, MA1511, MA1521", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSC1217", + "title": "Creativity, Imagination and Theoretical Physics", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSC1218", + "title": "Molecular Perspectives", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSC1219", + "title": "Introduction to Black Holes", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "YSC2223 Introduction to Black Holes", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Physics at A-level, AP or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC1220", + "title": "More is Different: Emergence in Physical Systems", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "YSC2242 More is Different: Emergence in Physical Systems", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSC1221", + "title": "Physics of the Electric Guitar", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSC2202", + "title": "Biology Laboratory", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSC2203", + "title": "Classical Mechanics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC1213 General Physics and YSC1216 Calculus or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC2207", + "title": "Techniques in Analytical Chemistry", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC2132 Foundations of Science 2\nor\nconsent of instructor", + "corequisite": "" + }, + { + "moduleCode": "YSC2208", + "title": "Techniques in Organic Chemistry", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC2132 Foundations of Science 2\nor\nconsent of instructor", + "corequisite": "Students should have taken or be concurrently taking Principles of Organic Chemistry." + }, + { + "moduleCode": "YSC2209", + "title": "Proof", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "YSC1203 Proof, MA1100", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSC2210", + "title": "Data Analysis and Visualization (DAVis) with R", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1122 Quantitative Reasoning or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC2213", + "title": "Discrete Mathematics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSC2214", + "title": "Introduction to Optics and Imaging", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSC2216", + "title": "Evolutionary Biology", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "LSM1105", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YC1122 Quantitative Reasoning and YC1131 Scientific Inquiry or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC2221", + "title": "Introduction to Python", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSC2222", + "title": "Organic Chemistry Laboratory", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC2224 Accelerated Organic Chemistry or with the permission of the instructor.", + "corequisite": "YSC2224 Accelerated Organic Chemistry or with the permission of the instructor." + }, + { + "moduleCode": "YSC2224", + "title": "Accelerated Organic Chemistry", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "YSC2206 Principles of Organic Chemistry", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC1207 General Chemistry or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC2225", + "title": "Physical Chemistry", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC1207 General Chemistry and YSC1213 General Physics or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC2227", + "title": "C: A Language for Science and Engineering", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "YSC3217 Programming Operating Systems, Interfaces & eXtras", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC1212 Introduction to Computer Science and YSC2221 Introduction to Python or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC2229", + "title": "Introductory Data Structures and Algorithms", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "YSC2204 Fundamentals of Programming", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC1212 Introduction to Computer Science or with the permission of the\ninstructor", + "corequisite": "" + }, + { + "moduleCode": "YSC2231", + "title": "Foundations of Neuroscience", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "YSC2211 Neurobiology and Behaviour, LSM3215", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSC2232", + "title": "Linear Algebra", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "YSC3205 Linear Algebra, MA1101R, MA1508E, MA1513", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Any MCS module or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC2233", + "title": "Genetics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "YSC3201 Genetics, LSM1102", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSC2234", + "title": "Human Biology", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "YSC1201 Human Biology, LSM2212, LSM3212", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSC2235", + "title": "Field Research", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSC2236", + "title": "Microbiomes", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSC2237", + "title": "Computational Methods in Physical Sciences", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC1207 General Chemistry or YSC1213 General Physics or YSC1216 Calculus or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC2239", + "title": "Introduction to Data Science", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "DSA1101", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "A level Mathematics or equivalent and YCC1122 Quantitative Reasoning or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC2240", + "title": "Research Tutorial in Animal Behaviour", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1122 Quantitative Reasoning and YCC1131 Scientific Inquiry 1 and either YSC2216 Evolutionary Biology or YSC2231 Foundations of Neuroscience or YSC3235 Animal Behaviour or YSS2201 Introduction to Psychology or with the permission of the instructor.", + "corequisite": "YSC2216 Evolutionary Biology or YSC2231 Foundations of Neuroscience or YSC3235 Animal Behaviour or YSS2201 Introduction to Pyschology or with the permission of the instructor." + }, + { + "moduleCode": "YSC2241", + "title": "Plant Biology", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSC2243", + "title": "Probability", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "MA2216", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC1216 Calculus or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC2244", + "title": "Programming for Data Science", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC1212 Introduction to Computer Science or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC2246", + "title": "Experimental Methods in Physical Sciences", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC1207 General Chemistry or YSC1213 General Physics or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC2247", + "title": "Ecology and Ecosystems", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSC2248", + "title": "Analytical Chemistry with Laboratory", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "CM3295, CM3292", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC1207 General Chemistry or with the permission of the instructor.", + "corequisite": "YSC1207 General Chemistry or with the permission of the instructor." + }, + { + "moduleCode": "YSC2249", + "title": "Writing about Science, Nature and the Environment", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSC2250", + "title": "Research Tutorial: DNA and Urban Wildlife", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1122 Quantitative Reasoning and YCC1131 Scientific Inquiry 1 and YCC2137 Scientific Inquiry 2 or with the permission of the instructor.", + "corequisite": "YCC2137 Scientific Inquiry 2 or with the permission of the instructor." + }, + { + "moduleCode": "YSC2252", + "title": "Multivariable Calculus", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "MA2104, MA1507", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC1216 Calculus or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC2253", + "title": "Biogeophysical Systems", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "YID2209 Biogeophysical Systems", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YID1201 Introduction to Environmental Studies or with the permission of instructor.", + "corequisite": "YID1201 Introduction to Environmental Studies or with the permission of instructor." + }, + { + "moduleCode": "YSC3203", + "title": "Advanced Algorithms and Data Structures", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC2229 Introductory Data Structures and Algorithms or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC3206", + "title": "Introduction to Real Analysis", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "MA2108, MA3110", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC2209 Proof or YSC2232 Linear Algebra or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC3208", + "title": "Programming Language Design and Implementation", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC2229 Introductory Data Structures and Algorithms or with the permission of the instructor.", + "corequisite": "YSC3232 Object-oriented Programming or with the permission of the instructor." + }, + { + "moduleCode": "YSC3209", + "title": "Quantum Chemistry", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC2133 Integrated Science 2 and YSC2205 Mathematical Methods in Physical Sciences or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC3210", + "title": "Introduction to Quantum Mechanics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "PC2130", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC2203 Classical Mechanics and YSC2205 Mathematical Methods in Physical Sciences or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC3211", + "title": "Introduction to Electrodynamics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "PC2131", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC2205 Mathematical Methods in Physical Sciences or YSC3240 Foundations of Applied Math or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC3213", + "title": "Experimental Physics Laboratory", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC1207 General Chemistry or YSC1213 General Physics or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC3214", + "title": "Biochemistry", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSC3215", + "title": "Research Seminar", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSC3217", + "title": "Programming Operating Systems, Interfaces & eXtras", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC1212 Introduction to Computer Science or YCC2221 Introduction to Python or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC3224", + "title": "Statistical Thermodynamics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "YSC2228 Statistical Thermodynamics", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC1207 General Chemistry and YSC1213 General Physics or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC3228", + "title": "Inorganic Chemistry with Laboratory", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC2224 Accelerated Organic Chemistry or YSC2225 Physical Chemistry or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC3232", + "title": "Software Engineering", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "YSC3207 Principles and Tools of Software Development", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC2221 Introduction to Python or YSC1212 Introduction to Computer Science or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC3233", + "title": "Molecular Cell Biology", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSC3234", + "title": "Principles of Biophysics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Sophomores can enroll with instructor’s permission. Given the physics bent of this course, it is recommended that students have taken or take concurrently some Calculus, in order to fully appreciate the content.", + "corequisite": "" + }, + { + "moduleCode": "YSC3235", + "title": "Animal Behaviour", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1122 Quantitative Reasoning and YCC1131 Scientific Inquiry 1 or with the permission of the instructor.", + "corequisite": "YSC2201 Introduction to Psychology or YSC2216 Evolutionary Biology or YSC2231 Foundations of Neuroscience or with the permission of the instructor." + }, + { + "moduleCode": "YSC3236", + "title": "Functional Programming and Proving", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC1212 Introduction to Computer Science or with the permission of the instructor", + "corequisite": "" + }, + { + "moduleCode": "YSC3237", + "title": "Introduction to Modern Algebra", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "YSC3204 Group Theory and YSC3220 Rings and Fields or with the permission of the instructor, MA2202, MA3201.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC2209 Proof or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC3238", + "title": "Developmental Biology", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC3233 Molecular Cell Biology or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC3239", + "title": "Geometry and the Emergence of Perspective", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSC3240", + "title": "Foundations of Applied Mathematics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "YSC2205 Mathematical Methods in Physical Sciences", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSC3241", + "title": "Computational and Systems Biology", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC2233 Genetics or YSC3233 Molecular Cell Biology or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC3242", + "title": "Agent-Based Modelling", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSC3243", + "title": "Bayesian Statistics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC2230 Probability and Statistics or with the permission of the instructor", + "corequisite": "" + }, + { + "moduleCode": "YSC3246", + "title": "Modern Astrophysics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC1213 General Physics or YSC2203 Classical Mechanics or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC3247", + "title": "The Genomics of Human History", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSC3248", + "title": "Parallel, Concurrent and Distributed Programming", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC1212 Introduction to Computer Science and YSC2229 Introductory Data Structures and Algorithms or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC3249", + "title": "Statistical Inference", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "YSC1204 Statistical Inference", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC2243 Probability or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC3250", + "title": "Immunology", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC3233 Molecular Cell Biology or YSC2233 Genetics or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC3251", + "title": "Conservation Biology", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "LSM2251, LSM4262", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC2137 Scientific Inquiry 2 or with the permission of the instructor.", + "corequisite": "YCC2137 Scientific Inquiry 2 or with the permission of the instructor." + }, + { + "moduleCode": "YSC3252", + "title": "Statistical Computing", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC2243 Probability or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC3253", + "title": "Coral Reef Ecology and Environmental Change", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YID2209 Biogeophysical Systems or YSC2216 Evolutionary Biolog or YSC2247 Ecology and Ecosystems or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC3255", + "title": "The Biology of Ageing", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "LSM3217, LSM4217", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC2202 Biology Laboratory or any two Life Sciences modules or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC3256", + "title": "Urban Ecological Systems", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "YSS3272 Urban Ecological Systems and YID3214 Urban Ecological Systems.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "One module in environmental studies or one module in urban studies or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC4101", + "title": "Physical Sciences Capstone Project", + "moduleCredit": 10, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "All Year 1 and 2 Common Curriculum modules or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC4102", + "title": "Life Sciences Capstone Project", + "moduleCredit": 10, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "All Year 1 and 2 Common Curriculum modules or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC4103", + "title": "Maths, Computational & Statistical Sci Capstone Project", + "moduleCredit": 10, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "All Year 1 and 2 Common Curriculum modules or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC4200G", + "title": "Special Project in Science", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Unusually strong preparation in science, and prior approval of the Director of\nthe Science Division.", + "corequisite": "" + }, + { + "moduleCode": "YSC4205", + "title": "Organometallic Chemistry", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC2224 Accelerated Organic Chemistry or YSC3228 Inorganic Chemistry with Laboratory or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC4206", + "title": "Harmonic Analysis", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC2209 Proof and YSC3206 Introduction to Real Analysis or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC4207", + "title": "Solid State Physics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC3210 Introduction to Quantum Mechanics and YSC3224 Statistical Thermodynamics or with the permission of the instructor.", + "corequisite": "YSC3213 Experimental Physics Laboratory or with the permission of the instructor." + }, + { + "moduleCode": "YSC4208", + "title": "Monte Carlo Simulations in Science and Statistics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "YSC4204 Statistical Computing", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC3216 Stochastic Processes and Models or YSC3249 Statistical Inference or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC4209", + "title": "Physical Sciences Research Seminar", + "moduleCredit": 4, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + true, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "YSC4101 Physical Sciences Capstone Project or with the permission of the instructor." + }, + { + "moduleCode": "YSC4211", + "title": "Adv Topics Molecular, Cellular & Developmental Biology", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC3214 Biochemistry or YSC3233 Molecular Cell Biology or YSC3238 Developmental Biology or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC4211A", + "title": "Adv Topics Molecular, Cell Bio: Heredity & Epigenetics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC3214 Biochemistry or YSC3233 Molecular Cell Biology or YSC3238 Developmental Biology or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC4211B", + "title": "Adv Topics Molecular, Cell & Developmental Bio: Stem Cells", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC2233 Genetics or YSC3214 Biochemistry or YSC3233 Molecular Cell Biology or YSC3238 Developmental Biology or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC4211C", + "title": "Adv Topics : Computational Biology", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "ZB4171", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC3241 Computational and Systems Biology or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC4212", + "title": "Statistical Case Studies (with R)", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC2210 Data Analysis and Visualization (DAVis) with R or YSC2230 Probability and Statistics or YSC2243 Probability or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC4214", + "title": "Theory of Quantum Information and Computation", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSC4216", + "title": "Machine Learning", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "YSC3227 Machine Learning, ST3248, ST4248", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Programming skill in Python,\nYSC1216 Calculus, YSC2232 Linear Algebra, YSC2243 Probability and YSC3249 Statistical Inference or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC4217", + "title": "Mechanised Reasoning", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC1212 Introduction to Computer Science and\nYSC3236 Functional Programming and Proving or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC4218", + "title": "Polymer Chemistry", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC2224 Accelerated Organic Chemistry or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC4219", + "title": "Advanced Organic Chemistry", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC2224 Accelerated Organic Chemistry or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC4220", + "title": "Ordinary and Partial Differential Equations", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "YSC3230 Ordinary and Partial Differential Equations", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC2232 Linear Algebra and YSC3240 Foundations of Applied Mathematics or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC4221", + "title": "Advanced Quantum Mechanics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC3210 Introduction to Quantum Mechanics or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC4222", + "title": "Chaos Theory", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC2203 Classical Mechanics or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC4223", + "title": "Physics in Curved Spacetime", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC2203 Classical Mechanics, YSC3210 Introduction to Quantum Mechanics and YSC3211 Introduction to Electrodynamics or with the permission of the instructor.", + "corequisite": "YSC3210 Introduction to Quantum Mechanics and YSC3211 Introduction to Electrodynamics or with the permission of the instructor." + }, + { + "moduleCode": "YSC4224", + "title": "Data Science Accelerator", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC2239 Introduction to Data Science or with the permission of the instructor. Familiarity with Python expected.", + "corequisite": "" + }, + { + "moduleCode": "YSC4225", + "title": "Stochastic Processes and Models (SPaM)", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC2243 Probability or YSC2230 Probability and Statistics; or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC4226", + "title": "Advanced Methods in Cell Biology", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC2202 Biology Laboratory and at least one Life Science module or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC4227", + "title": "Computer Vision and Deep Learning", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "YSC3221 Computer Vision and Deep Learning", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Programming skill in Python and\nYSC1216 Calculus and YSC2232 Linear Algebra and YSC2243 Probability and YSC3249 Statistical Inference or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSC4228", + "title": "Data Science in Quantitative Finance", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC2239 Introduction to Data Science or with the permission of the instructor. Familiarity with Python expected.", + "corequisite": "" + }, + { + "moduleCode": "YSC4229", + "title": "Molecular Neuroscience - Genes, Brains and Behaviour", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSC2233 Genetics or YSC3214 Biochemistry or YSC3233 Molecular Cell Biology or YSC3238 Developmental Biology or with the permission of the instructor", + "corequisite": "" + }, + { + "moduleCode": "YSH2401", + "title": "Short Course: Dante's Divine Comedy", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2402", + "title": "Short Course: How to Find an Asteroid", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2403", + "title": "Short Course: Joseph Conrad and Southeast Asia", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2404", + "title": "Short Course: London and Modernity 1800 - Present", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2405", + "title": "Short Course: Reimagining Bruce Lee", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2406", + "title": "Short Course: The Evolution of Beauty", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2407", + "title": "Short Course: The Idea of Statecraft", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2408", + "title": "Short Course: The Moralities of Everyday Life", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2409", + "title": "Short Course: Democracy and Justice", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2410", + "title": "Short Course: Economic Inequality ‐ For Better or Worse", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2411", + "title": "Short Course: Hispanic American Culture", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2412", + "title": "Short Course: Franz Kafka - The Novel of Institution", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2413", + "title": "Short Course: Future of Food - Global Challenges", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2414", + "title": "Short Course: Human Spirit in Great Contemporary Novels", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2415", + "title": "Short Course: Iconic Consciousness and Material Culture", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2416", + "title": "Short Course: International Law", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2417", + "title": "Short Course: Introduction to American Politics", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2418", + "title": "Short Course: Introduction to Nanoscience", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2419", + "title": "Short Course: Leo Tolstoy's Anna Karenina", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2420", + "title": "Short Course: Randomness in Physics and Biology", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2421", + "title": "Short Course: Revolution and War ‐ The Impact of WW1", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2422", + "title": "Global History of Sexual Politics", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2423", + "title": "Hollywood and Globalization", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2424", + "title": "Black Holes Across the Cosmos", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2425", + "title": "The Globalization of Food, 1000 to the Present", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2426", + "title": "Encouraging Invention: Insights from History", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2427", + "title": "The Mathematics of Language", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2428", + "title": "Effects of Climate on Marine Ecosystems", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2429", + "title": "Viruses: The Good, The Bad and The Ugly", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2430", + "title": "Global Health: Challenges and Promises", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2431", + "title": "Public Space: Urbanism, Architecture and Public Art", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2432", + "title": "The American City: History and Architecture", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2433", + "title": "Democracy and Justice", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2434", + "title": "Introduction to Imaging Science", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2435", + "title": "The Structure of Language", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2436", + "title": "The Fugues of J.S. Bach's Well Tempered Clavier, Vol. 1", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2437", + "title": "An Introduction to American Society, Government and Law", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2438", + "title": "Introduction to Financial Markets 1", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2439", + "title": "Introduction to Financial Markets 2", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSH2438 Introduction to Financial Markets 1", + "corequisite": "" + }, + { + "moduleCode": "YSH2440", + "title": "Collaborative Music Performance: Percussion", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "No prerequisite is required, although knowledge of basic music reading skills is to be expected.", + "corequisite": "" + }, + { + "moduleCode": "YSH2441", + "title": "9th - 10th Century Baghdad", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2442", + "title": "Alternative Energy", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2443", + "title": "Reading Medieval Manuscripts", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2444", + "title": "Chamber Music Performance", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2445", + "title": "Transformations in Euclidean Geometry", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2446", + "title": "Global Environmental Governance: Pathways for Sustainable Outcomes", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2447", + "title": "From Text Mining to Mapping: Digital Humanities Methods", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2448", + "title": "Material Literacy and the Global Object", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2449", + "title": "The Bible in Its Ancient Near Eastern Setting", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2450", + "title": "U.S. Strategy and the Rise of China", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2451", + "title": "Earth Materials (Minerals) and Human Health", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2452", + "title": "The Arts of South-East Asia", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2453", + "title": "American Architecture and Urbanism", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2454", + "title": "Intro to Corporate Environmental Management & Strategy", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2455", + "title": "Mahabharata: India’s Epic of Apocalypse and Renewal", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSH2456", + "title": "International Trade, Resource Use and the Environment", + "moduleCredit": 1, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSP1201", + "title": "Global Strategy and Leadership", + "moduleCredit": 10, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS1203", + "title": "Principles of Economics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "A level Mathematics and Economics (or equivalent Mathematics and Economics courses).", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS1205", + "title": "Introduction to Game Theory", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS1206", + "title": "Introduction to Comparative Politics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS1208", + "title": "Deviance and Conformity: An Introduction to Sociology", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS2201", + "title": "Introduction to Psychology", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS2202", + "title": "International Relations", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS2203", + "title": "Intermediate Microeconomics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "A-level Mathematics (or equivalent) or YSS1203 Principles of Economics or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS2208", + "title": "Ancient Greek Political Philosophy", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1113 Philosophy and Political Thought 1 or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS2210", + "title": "Contemporary Social Theory", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC2121 Modern Social Thought or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS2211", + "title": "Econometrics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "A-level Economics and Mathematics (or equivalent) or YSS1203 Principles of Economics or YSS2203 Intermediate Microeconomics or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS2212", + "title": "Firms' Strategies and Market Competition", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2203 Intermediate Microeconomics or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS2213", + "title": "Globalization: Past, Present and Future", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1121 Comparative Social Institutions", + "corequisite": "" + }, + { + "moduleCode": "YSS2214", + "title": "Intermediate Macroeconomics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "A-level Economics and Mathematics (or equivalent) or YSS1203 Principles of Economics or YSS2203 Intermediate Microeconomics or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS2215", + "title": "Sociology of Religion", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS2216", + "title": "Statistics and Research Methods for Psychology", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1122 Quantitative Reasoning and YSS2201 Introduction to Psychology or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS2217", + "title": "Political Concepts", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS2218", + "title": "International Political Economy", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1121 Comparative Social Inquiry or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS2220", + "title": "Adelaide to Zhuhai: Cities in Comparative Perspective", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "YSS1207 Introduction to Urban Studies", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS2221", + "title": "International Security", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "YSS3210 International Security", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS2223", + "title": "Religion, Ritual and Magic", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + true, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS2226", + "title": "Language, Culture, Power", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "YSS1204 Language, Culture, Power", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS2227", + "title": "Introduction to Anthropology", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS2228", + "title": "Modern Southeast Asia", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS2229", + "title": "Are you what you eat? Anthropology of Food and Eating", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS2230", + "title": "Ethnic Diversity in Japan", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1121 Comparative Social Inquiry or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS2231", + "title": "The Anthropology of Politics and Law: An Introduction", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS2232", + "title": "Medicine, Culture and Modernity", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS2233", + "title": "Investment Analysis and Economics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "A-level Economics (or equivalent), or YSS1203 Principles of Economics or YSS2203 Intermediate Microeconomics or YSS2214 Intermediate Macroeconomics or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS2234", + "title": "The Good Company", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS2236", + "title": "Middle East Societies and Politics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2202 International Relations or with the permission of the instructor.", + "corequisite": "YSS2202 International Relations or with the permission of the instructor." + }, + { + "moduleCode": "YSS2237", + "title": "Nuclear Politics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS2238", + "title": "Game Theory and International Relations", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "YSS1205 Introduction to Game Theory", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Familiar with basic concepts of linear algebra and probability and statistics (Bayes’ rule) or with the permssion of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS2239", + "title": "The Political Thought of the Enlightenment", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1113 Philosophy and Political Thought 1 and YCC1114 Philosophy and Political Thought 2 or with the permission of instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS2240", + "title": "Women and Work around the World", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS2241", + "title": "Contemporary Left Politics and Movements", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS2242", + "title": "Data Science for the Environment", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS3201", + "title": "International Migration", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS3202", + "title": "Ethnography", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS3203", + "title": "Behavioral Economics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2203 Intermediate Microeconomics or with the permission of the instructor.", + "corequisite": "YSS2203 Intermediate Microeconomics or with the permission of the instructor." + }, + { + "moduleCode": "YSS3204", + "title": "Development Economics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2203 Intermediate Microeconomics and YSS2211 Econometrics or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3205", + "title": "International Trade", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2203 Intermediate Microeconomics or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3206", + "title": "Law and Economics", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2203 Intermediate Microeconomics or with the permission of the instructor", + "corequisite": "YSS2203 Intermediate Microeconomics or with the permission of the instructor." + }, + { + "moduleCode": "YSS3207", + "title": "Advanced Econometrics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2211 Econometrics or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3208", + "title": "Advanced Microeconomics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2203 Intermediate Microeconomics or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3211", + "title": "Human Rights", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS3212", + "title": "Chinese Politics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC2121 Modern Social Thought or with the permission of the instructor.", + "corequisite": "YCC2121 Modern Social Thought or with the permission of the instructor." + }, + { + "moduleCode": "YSS3213", + "title": "Culture and Violence", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS3214", + "title": "Abnormal Psychology", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2201 Introduction to Psychology or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3215", + "title": "Cognitive Psychology", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2201 Introduction to Psychology or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3216B", + "title": "Current Issues in Urban Studies", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS3217", + "title": "Urbanization in China", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS3218", + "title": "Urban ASEAN: The Changing Southeast Asian City", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC2121 Modern Social Thought or with the permission of the instructor.", + "corequisite": "YSS2220 Adelaide to Zhuhai: Cities in Comparative Perspective or with the permission of the instructor." + }, + { + "moduleCode": "YSS3219", + "title": "Developmental Psychology", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2201 Introduction to Psychology or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3220", + "title": "Political Economy", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2203 Intermediate Microeconomics and YSS2211 Econometrics or with the permission of the instructor.", + "corequisite": "YSS2211 Econometrics or with permission of the instructor." + }, + { + "moduleCode": "YSS3221", + "title": "Politics of Southeast Asia", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS3222", + "title": "Urban Theory", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC2121 Modern Social Thought and YSS2220 Adelaide to Zhuhai: Cities in Comparative Perspective or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3223", + "title": "Asian Medicine, the Body and Globalization", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC2121 Modern Social Thought or with the permission of the instructor.", + "corequisite": "YCC2121 Modern Social Thought or with the permission of the instructor." + }, + { + "moduleCode": "YSS3224", + "title": "International Finance", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2203 Intermediate Microeconomics and YSS2214 Intermediate Macroeconomics or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3225", + "title": "Global Governance", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2202 International Relations or with the permission of the instructor.", + "corequisite": "YSS2202 International Relations or with the permission of the instructor." + }, + { + "moduleCode": "YSS3226", + "title": "Conflict and Cooperation in East Asia", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS3227", + "title": "The Economy‐Security Nexus", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2202 International Relations or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3229", + "title": "Urbanization and the Environment", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS3231", + "title": "Methods in the Social Sciences", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1121 Comparative Social Inquiry, YCC1122 Quantitative Reasoning and YCC2121 Modern Social Thought or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3232", + "title": "Crime and Punishment", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS3235", + "title": "Urban Spatial Representation", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC2121 Modern Social Thought or with the permission of instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3236", + "title": "Foreign Policy and Diplomacy: Issues and Practice", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS3237", + "title": "Gender Perspectives in Anthropology", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1121 Comparative Social Inquiry or with the permission of the instructor.", + "corequisite": "YCC2121 Modern Social Thought or with the permission of the instructor." + }, + { + "moduleCode": "YSS3238", + "title": "US Foreign Policy", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS3241", + "title": "Chinese Political Philosophy: Confucianism & its Rivals", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1113 Philosophy and Political Thought 1 and YCC1114 Philosophy and Political Thought 2 or with the permission of instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3242", + "title": "Religion and Politics in South Asia", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS3243", + "title": "Public Economics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2203 Intermediate Microeconomics or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3244", + "title": "Labour Economics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2211 Econometrics or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3245", + "title": "Key Debates in Urban Planning and Policy", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS3246", + "title": "Cities of the Global South", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS3248", + "title": "Advanced Macroeconomics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2214 Intermediate Macroeconomics or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3249", + "title": "Human Neuroscience", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2201 Introduction to Psychology or YSC2211 Neurobiology and Behavior or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3250", + "title": "Cityscapes and Urban Form", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS3251", + "title": "Urban Political Ecology", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS3252", + "title": "Lab in Applying Psychology to Public Policy", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2201 Introduction to Psychology and YSS2216 Statistics and Research Methods for Psychology or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3253", + "title": "Anthropology of Development", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS3254", + "title": "Globalization on the Ground", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "YSS2222 Globalization on the Ground", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1121 Comparative Social Inquiry or with the permission of the instructor.", + "corequisite": "YCC2121 Modern Social Thought or with the permission of the instructor." + }, + { + "moduleCode": "YSS3255", + "title": "International Development", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1121 Comparative Social Inquiry and YCC2121 Modern Social Thought or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3256", + "title": "Youth Urbanism: Global Trends, Local Perspectives", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS3257", + "title": "Seminar on Corporate Finance", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "YSS3258 Early Stage Private Equity Investing", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2203 Intermediate Microeconomics and YSS2211 Econometrics or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3258", + "title": "Early Stage Private Equity Investing", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "YSS3257 Seminar on Corporate Finance", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2203 Intermediate Microeconomics and YSS2211 Econometrics or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3259", + "title": "The Human Condition: Psychology & Health in Literature", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS3260", + "title": "Community Health Assessment and Improvement", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1122 Quantitative Reasonin or YSS2216 Statistics and Research Methods for Psychology or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3262", + "title": "Global Cities", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2218 International Political Economy or YSS2220 Adelaide to Zhuhai: Cities in Comparative Perspective or YSS2224 Introduction to Global Affairs or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3263", + "title": "Emotions and Politics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC2121 Modern Social Thought or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3264", + "title": "Bubbles, Crashes, Panics and Crises", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS1203 Principles of Economics or YSS2203 Intermediate Microeconomics or YSS2214 Intermediate Macroeconomics or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3265", + "title": "Urban Economics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2203 Intermediate Microeconomics or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3266", + "title": "Social and Behavioural Foundations of Health", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2216 Statistics and Research Methods for Psychology or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3267", + "title": "Lab in Cognitive Psychology", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2201 Introduction to Pyschology and YSS2216 Statistics and Research Methods for Psychology or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3268", + "title": "Anthropology of China", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC2121 Modern Social Thought or with the permission of the instructor", + "corequisite": "" + }, + { + "moduleCode": "YSS3269", + "title": "Water and Waste in Urban Environments", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS3270", + "title": "Ethics and Global Affairs", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "PS3233 Political and International Ethics", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS3271", + "title": "Contemporary Political Comedy", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS3273", + "title": "Geospatial & Demographic Methods", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS3274", + "title": "Urban Singapore", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS3275", + "title": "Social Life of Cities", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2220 Adelaide to Zhuhai: Cities in Comparative Perspective or with the permission of the instructor.", + "corequisite": "YSS2220 Adelaide to Zhuhai: Cities in Comparative Perspective or with the permission of the instructor." + }, + { + "moduleCode": "YSS3276", + "title": "International Political Theory", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1114 Philosophy and Political Thought 2 or with the permission of the instructor", + "corequisite": "" + }, + { + "moduleCode": "YSS3277", + "title": "The Anthropological Imagination", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "YSS2209 The Anthropological Imagination", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1121 Comparative Social Inquiry and YCC2121 Modern Social Thought or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3278", + "title": "Social Psychology", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "YSS2207 Introduction to Social Psychology", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2201 Introduction to Psychology or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3279", + "title": "Social Psychology Lab", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "YSS4201 Social Psychology Lab", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2201 Introduction to Psychology and YSS2216 Statistics and Research Methods for Psychology or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3280", + "title": "Contemporary Political Theory", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1111 Literature and Humanities 1 and\nYCC1112 Literature and Humanities 2 or with the permission of the instructor", + "corequisite": "" + }, + { + "moduleCode": "YSS3282", + "title": "Architecture and Society", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS3283", + "title": "Republican Political Theory", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS3284", + "title": "Healthy and Resilient Cities", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YID1201 Introduction to Environmental Studiesor YSS2220 Adelaide to Zhuhai: Cities in Comparative Perspective or YSS2224 Introduction to Global Affairs or with the permission of the instructor.", + "corequisite": "YID1201 Introduction to Environmental Studiesor YSS2220 Adelaide to Zhuhai: Cities in Comparative Perspective or YSS2224 Introduction to Global Affairs or with the permission of the instructor." + }, + { + "moduleCode": "YSS3285", + "title": "Organisational Psychology", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2201 Introduction to Psychology or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3286", + "title": "The Guru in Hinduism", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS3287", + "title": "Global Environmental Change: Anthropological Approaches", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS3288", + "title": "Empire, Country, Corporation: The Struggle for Control", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS3289", + "title": "International Organisations in World Politics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS3290", + "title": "Culture and Reproductive Health and Medicine", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "YSS4208B Adv Topic in Anthro: Reproductive Technologies", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS3291", + "title": "Economics of Globalisation", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2203 Intermediate Microeconomics and YSS2211 Econometrics or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3292", + "title": "Palestinian Politics in Changing Middle East", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2202 International Relations or with the permission of the instructor.", + "corequisite": "YSS2202 International Relations or with the permission of the instructor." + }, + { + "moduleCode": "YSS3293", + "title": "Christianities in Cross-Cultural Perspective", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC2121 Modern Social Thought or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3295", + "title": "Comparative International Education", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS3296", + "title": "International Trade, Resource Use and the Environment", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2203 Intermediate Microeconomics or with the permission of the instructor", + "corequisite": "YSS2203 Intermediate Microeconomics or with the permission of the instructor." + }, + { + "moduleCode": "YSS3297", + "title": "“Green” Cities and Urban Natures", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC2121 Modern Social Thought or with the permission of the instructor.", + "corequisite": "YSSS2220 Adelaide to Zhuhai: Cities in Comparative Perspective or with the permission of the instructor." + }, + { + "moduleCode": "YSS3299", + "title": "Money and Banking", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "A-level Economics (or equivalent) or YSS1203 Principles of Economics or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3300", + "title": "Research Tutorial: Lab in Developmental Psychology", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2201 Introduction to Psychology and YSS2216 Statistics and Research Methods for Psychology or with the permission of the instructor.", + "corequisite": "YSS3219 Developmental Psychology" + }, + { + "moduleCode": "YSS3301", + "title": "Alfred Russel Wallace and the Work of Natural History", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All Year 1 and 2 Common Curriculum modules; or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3302", + "title": "Colonialism and Decolonization", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS3303", + "title": "Cities and Economic Development", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS3304", + "title": "Port Cities: Logistics, Transnationality, Urbanization", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS3305", + "title": "The Political Economy of Capitalism", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1121 Comparative Social Inquiry and YCC2121 Modern Social Thought or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3306", + "title": "Modern History of Economic Globalisation", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS1203 Principles of Economics or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3307", + "title": "Environmental Economics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2214 Intermediate Microeconomics or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3308", + "title": "Boulevards, Arcades and Sewers: Paris 1830-1870", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC2121 Modern Social Thought or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3309", + "title": "Technology and Culture", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC2121 Modern Social Thought or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS3310", + "title": "Populism", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS3311", + "title": "Sustainable Consumption", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "YID3215 Sustainable Consumption", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YID1201 Introduction to Environmental Studies and with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS4101", + "title": "Global Affairs Capstone Project", + "moduleCredit": 10, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "All Year 1 and 2 Common Curriculum modules or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS4102", + "title": "Psychology Capstone Project", + "moduleCredit": 10, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "All Year 1 and 2 Common Curriculum modules or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS4103", + "title": "Anthropology Capstone Project", + "moduleCredit": 10, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "All Year 1 and 2 Common Curriculum modules or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS4104", + "title": "Economics Capstone Project", + "moduleCredit": 10, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "All Year 1 and 2 Common Curriculum modules or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS4105", + "title": "Urban Studies Capstone Project", + "moduleCredit": 10, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "All Year 1 and 2 Common Curriculum modules or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS4106", + "title": "Philosophy, Politics and Economics Capstone Project", + "moduleCredit": 10, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "All Year 1 and 2 Common Curriculum modules or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS4107", + "title": "Capstone Project", + "moduleCredit": 10, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "All Year 1 and 2 Common Curriculum modules or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS4202", + "title": "Goals and Motivation", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2201 Introduction to Psychology and YSS2216 Statistics and Research Methods for Psychology and at least one 3000 level Psychology module or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS4205", + "title": "Chinese Foreign Policy", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2202 International Relations or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS4206A", + "title": "Topics in Psychology: Moral Judgments", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "PL4235 The Psychology of Moral Judgments", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2201 Introduction of Psychology or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS4206B", + "title": "Topics in Psychology: Love in An Age of Technology", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2201 Introduction of Psychology or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS4206C", + "title": "Topics in Psychology: The Pursuit of Happiness", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2201 Introduction of Psychology or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS4207", + "title": "Creative Cities", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS4208B", + "title": "Adv Topic in Anthro: Reproductive Technologies", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC2121 Modern Social Thought or with the permission of the instructor.", + "corequisite": "YCC2121 Modern Social Thought or with the permission of the instructor." + }, + { + "moduleCode": "YSS4209", + "title": "Signs and the State", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC2121 Modern Social Thought or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS4210", + "title": "Critical Global Public Health", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS4211", + "title": "India as a Rising Power, 1947-Present", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2202 International Relations or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS4213", + "title": "Community Development: In Search of the Kampung Spirit", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS3222 Urban Theory or YSS3245 Key Debates in Urban Planning and Policy or with the permission of the instructor.", + "corequisite": "YSS3222 Urban Theory or YSS3245 Key Debates in Urban Planning and Policy or with the permission of the instructor." + }, + { + "moduleCode": "YSS4215", + "title": "Sexual Economies", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC2121 Modern Social Thought and either YSS2227 Introduction to Anthropology or YSS3202 Ethnography or YSS3277 The Anthropological Imagination or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS4216", + "title": "The Anthropology of Popular Culture", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS4217", + "title": "Production Networks in the Global Economy", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS1203 Principles of Economics and YSS2218 International Political Economy or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS4219", + "title": "Law, War, and Peace in the Middle East", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All Year 1 and Year 2 Common Curriculum modules and either YSS2202 International Relations or YSS2224 Introduction to Global Affairs or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS4220", + "title": "Housing and Social Inequality", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC2121 Modern Social Thought and YSS2220 Adelaide to Zhuhai: Cities in Comparative Perspective or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS4222", + "title": "Contemporary European Politics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All Year 1 and Year 2 Common Curriculum modules and either YSS1206 Introduction to Comparative Politics or YSS2202 International Relations or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS4223", + "title": "Politics of Identity in Developing Countries", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "YSS3234 Politics of Identity in Developing Countries", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1121 Comparative Social Inquiry and YCC1122 Quantitative Reasoning or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS4224", + "title": "Political Order and One-Party Rule", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS1206 Introduction to Comparative Politics or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS4225", + "title": "Contemporary Continental Political Thought", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS4226", + "title": "Migration Policy", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All Year 1 and Year 2 Common Curriculum modules and YSS3201 International Migration or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS4227", + "title": "Topics in Applied Econometrics", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2203 Intermediate Microeconomics and YSS2211 Econometrics or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS4228", + "title": "The Anthropology of Dreams and Sleep", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC1121 Comparative Social Inquiry and YCC2121 Modern Social Thought or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS4229", + "title": "The Anthropology of Human Rights", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC2121 Modern Social Thought and either YSS2227 Introduction to Anthropology or YSS3202 Ethnography or YSS3277 The Anthropological Imagination or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS4230", + "title": "Psychology of Mindfulness", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2201 Introduction to Psychology and YSS2216 Statistics and Research Methods for Psychology or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS4231", + "title": "Parenting and Child Development", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "PL4880K Parenting and Child Development", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2201 Understanding Behaviour and Cognition and YSS2216 Statistics\nand Research Methods for Psychology or with the permission of the\ninstructor", + "corequisite": "" + }, + { + "moduleCode": "YSS4232", + "title": "Advanced Topics in PPE: The Welfare State", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC2121 Modern Social Thought or with the permission of the instructor", + "corequisite": "" + }, + { + "moduleCode": "YSS4234", + "title": "Urban Heritage: Place, Memory, Identity", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YHU3276 The Historian’s Craft or YSS2220 Adelaide to Zhuhai: Cities in Comparative Perspective or with the permission of the instructor.", + "corequisite": "YHU3276 The Historian’s Craft or YSS2220 Adelaide to Zhuhai: Cities in Comparative Perspective or with the permission of the instructor." + }, + { + "moduleCode": "YSS4235", + "title": "Religion and the Media Turn", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS4236", + "title": "Medical Anthropology", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "One 2000 or 3000 level Anthropology module or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS4237", + "title": "Conquest, Territorial Expansion and International Law", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2202 International Relations or with the permission of the instructor", + "corequisite": "" + }, + { + "moduleCode": "YSS4238", + "title": "Micro-Finance and Sustainable Development in Asia", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2202 International Relations or YSS2218 International Political Economy or YSS3225 Global Governance or YSS3254 Globalisation on the Ground or YSS3255 International Development or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS4239", + "title": "Adv Seminar in Urban Studies: Transnational Urbanism", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2220 Adelaide to Zhuhai: Cities in Comparative Perspective and YSS3222 Urban Theory or with the permission of the instructor.", + "corequisite": "YSS3222 Urban Theory or with the permission of the instructor." + }, + { + "moduleCode": "YSS4240", + "title": "Advanced Clinical Psychology", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2201 Introduction to Psychology and YSS2216 Statistics and Research Methods in Psychology and YSS3214 Abnormal Psychology or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS4241", + "title": "Multispecies Ethnography", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "YCC2121 Modern Social Thought or with the permission of the instructor." + }, + { + "moduleCode": "YSS4242", + "title": "Urban Ethnography of Asia", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2227 Introduction to Anthropology or YSS3202 Ethnography or YSS3277 Anthropological Imagination or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS4243", + "title": "Study of Modern Wars", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2202 International Relations or YSS2221 International Security or with the permission of the instructor.", + "corequisite": "YSS2202 International Relations or YSS2221 International Security or with the permission of the instructor." + }, + { + "moduleCode": "YSS4244", + "title": "African Atlantic Perspectives", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC2121 Modern Social Thought or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS4245", + "title": "Anthropology of Violence", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2227 Introduction to Anthropology or YSS3202 Ethnography or YSS3277 Anthropological Imagination or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS4246", + "title": "Anthropology of Education", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YCC2121 Modern Social Thought or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS4247", + "title": "Transnational Urbanism", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2220 Adelaide to Zhuhai: Cities in Comparative Perspective or YSS2224 Introduction to Global Affairs or with permission of the instructor.", + "corequisite": "YSS2220 Adelaide to Zhuhai: Cities in Comparative Perspective or YSS2224 Introduction to Global Affairs or with permission of the instructor." + }, + { + "moduleCode": "YSS4248", + "title": "Conducting Qualitative Socio-Legal Research", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS4249", + "title": "The Economics of Inequality", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2203 Intermediate Microeconomics or YSS2214 Intermediate Macroeconomics or with the permission of the instructor", + "corequisite": "" + }, + { + "moduleCode": "YSS4250", + "title": "Gender and Sexuality in South Asia", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "One 2000 or 3000 level Anthropology module or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS4252", + "title": "Theory from the South: Critical Perspectives", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS4253", + "title": "Ethnography as Theory and Method: Classical and Contemporary Readings", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "YSS4256", + "title": "Empirical Qualitative Analysis in Global Affairs", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "All Year 1 first semester Common Curriculum modules or with the permission of the instructor.", + "corequisite": "If students have not already successfully completed the following courses, they should be taking any 2 of the 3 modules below in tandem with this proposed module: YSS2202, YSS3255 or YSS3231 or an equivalent methods course approved by the instructor)." + }, + { + "moduleCode": "YSS4257", + "title": "Topics in the Political Economy of Public Policy", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2203 Intermediate Microeconomics or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS4258", + "title": "Asset Pricing, Financial Markets & Behavioural Finance", + "moduleCredit": 5, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2203 Intermediate Microeconomics or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS4259", + "title": "The Economics of Climate Change", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "YSS2203 Intermediate Microeconomics or YSS2214 Intermediate Macroeconomics or with the permission of the instructor.", + "corequisite": "" + }, + { + "moduleCode": "YSS4260", + "title": "The Economics of Inequality", + "moduleCredit": 2, + "department": "Yale-NUS College", + "faculty": "Yale-NUS College", + "semester": [ + 1 + ], + "preclusion": "YSS4249 The Economics of Inequality", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "", + "corequisite": "" + }, + { + "moduleCode": "ZB3288", + "title": "Advanced UROPS in Computational Biology I", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Passed level 1000 and 2000 essential major requirements", + "corequisite": "" + }, + { + "moduleCode": "ZB3289", + "title": "Advanced UROPS in Computational Biology II", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "ZB3288", + "corequisite": "" + }, + { + "moduleCode": "ZB3310", + "title": "Undergraduate Professional Internship Programme", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [ + 3, + 4 + ], + "preclusion": "XX3310 modules offered in Science, where XX stands for the subject prefix of the respective major", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed 3 regular semesters of study, having declared Computational Biology as first major and have completed a minimum of 32 MCs in Computational Biology major at the time of application.", + "corequisite": "" + }, + { + "moduleCode": "ZB3311", + "title": "Undergraduate Professional Internship", + "moduleCredit": 4, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [ + 1, + 2, + 3, + 4 + ], + "preclusion": "XX3311 modules offered in Science, where XX stands for the subject prefix for the respective major.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed 3 regular semesters of study, have declared Computational Biology as first major and have completed a minimum of 32 MCs in Computational Biology major at time of application.", + "corequisite": "" + }, + { + "moduleCode": "ZB3312", + "title": "Enhanced Undergraduate Professional Internship Programme", + "moduleCredit": 12, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "XX3312 modules offered in Science, where XX stands for the subject prefix for the respective major.", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed 3 regular semesters of study, have declared Computational Biology as first major and have completed a minimum of 32 MCs in Computational Biology major at time of application.", + "corequisite": "" + }, + { + "moduleCode": "ZB3313", + "title": "Undergraduate Professional Internship Programme Extended", + "moduleCredit": 12, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "This module XX3313 Extended Undergraduate Professional Internship Programme, where XX stands for the subject prefix of the respective major", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must have completed 3 regular semesters of study, having declared Computational Biology as first major and have completed a minimum of 32 MCs in Comp Bio major at the time of application and have completed ZB3312", + "corequisite": "Students should be in their 3rd year of studies (SCI3)" + }, + { + "moduleCode": "ZB4171", + "title": "Advanced Topics in Bioinformatics", + "moduleCredit": 4, + "department": "Biological Sciences", + "faculty": "Science", + "semester": [ + 1 + ], + "preclusion": "YSC4211C", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "(CS1010S or equivalent or LSM2253) AND (LSM3241 or CS2220)", + "corequisite": "" + }, + { + "moduleCode": "ZB4199", + "title": "Honours Project in Computational Biology", + "moduleCredit": 12, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [ + 1, + 2 + ], + "preclusion": "", + "attributes": [ + false, + false, + false, + false, + true, + true, + false, + false, + false + ], + "prerequisite": "Students majoring in computational biology", + "corequisite": "" + }, + { + "moduleCode": "ZB4299", + "title": "Applied Project in Computational Biology", + "moduleCredit": 12, + "department": "FoS Dean's Office", + "faculty": "Science", + "semester": [], + "preclusion": "ZB4199", + "attributes": [ + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "prerequisite": "Students must be reading the Bachelor of Science degree and have met Honours eligibility requirements for the Major in Computational Biology", + "corequisite": "" + } +] \ No newline at end of file From 90d660e8add9d4969487ba895f7e3e42f95e26ca Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Mon, 28 Sep 2020 23:45:26 +0800 Subject: [PATCH 002/450] Add basic Academic Planner -Basic Functionality of adding modules into academic planner -Add Module object -Add Person Object --- src/main/java/apps/AcademicPlanner.java | 232 ++++++++++++++++++++++++ src/main/java/objects/Module.java | 128 +++++++++++++ src/main/java/objects/Person.java | 71 ++++++++ 3 files changed, 431 insertions(+) create mode 100644 src/main/java/apps/AcademicPlanner.java create mode 100644 src/main/java/objects/Module.java create mode 100644 src/main/java/objects/Person.java diff --git a/src/main/java/apps/AcademicPlanner.java b/src/main/java/apps/AcademicPlanner.java new file mode 100644 index 0000000000..782f9c4679 --- /dev/null +++ b/src/main/java/apps/AcademicPlanner.java @@ -0,0 +1,232 @@ +package apps; + +import moduledata.ModuleInitializer; +import objects.Module; +import objects.Person; +import org.apache.commons.lang3.builder.ToStringBuilder; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.HashMap; +import java.util.Scanner; + +public class AcademicPlanner { + //CONSTANTS + private final int STARTING_SEMESTER_INDEX = 1; + private final int FINAL_SEMESTER_INDEX = 10; + private final String ERROR_INVALID_COMMAND = "INVALID COMMAND"; + private final String ERROR_INVALID_SEMESTER_INDEX = "INVALID SEMESTER INDEX"; + private final String ERROR_INVALID_GRADE = "INVALID GRADE VALUE"; + private final String ERROR_NOT_OFFERED = " IS NOT OFFERED BY NUS"; + private final String ERROR_DUPLICATE_MOD = "You already have this mod on your calendar!"; + private final String ERROR_NOT_ADDED = "You have not added this module into your list yet"; + private final String ERROR_EDIT_OPTION = "Number entered does not correspond to any feature"; + private final String WELCOME_MESSAGE = "\nWelcome to Academic Planner!"; + private final String ADD_COMMAND = "ADD"; + private final String EDIT_COMMAND = "EDIT"; + private final String REMOVE_COMMAND = "REMOVE"; + private final String VIEW_COMMAND = "VIEW"; + private final String EXIT_COMMAND = "EXIT"; + private final String COMMANDS_LIST = "Available commands are: \n" + + " add \n" + + " edit \n" + + " remove \n" + + " view\n" + + " exit\n" + + "Type a command to continue..."; + + private ModuleInitializer allModules; + private ArrayList modulesList; + private HashMap modulesAddedMap; + private Person currentPerson; + + public AcademicPlanner(ModuleInitializer allModules, Person currentPerson) { + this.allModules = allModules; + this.modulesList = currentPerson.getModulesList(); + this.modulesAddedMap = currentPerson.getModulesAddedMap(); + this.currentPerson = currentPerson; + } + + private void printCommandsList() { + System.out.println(COMMANDS_LIST); + } + + public void planner() { + System.out.println(WELCOME_MESSAGE); + printCommandsList(); + Scanner scanner = new Scanner(System.in); + String fullInput = scanner.nextLine().toUpperCase(); + String[] inputs = fullInput.split(" "); + + while (!inputs[0].equals(EXIT_COMMAND)) { + if (inputs[0].equals(ADD_COMMAND)) { + addModule(scanner, inputs[1]); + } else if (inputs[0].equals(EDIT_COMMAND)) { +// editModule(scanner, inputs[1]); + } else if (inputs[0].equals(REMOVE_COMMAND)) { +// removeModule(inputs[1]); + } else if (inputs[0].equals(VIEW_COMMAND)) { +// printCalendar(); + } else { + System.out.println(ERROR_INVALID_COMMAND); + } + printCommandsList(); + fullInput = scanner.nextLine().toUpperCase(); + inputs = fullInput.split(" "); + } + System.out.println("Thank you for using Academic Planner!"); + } + + /** + * Adds a module to the user's academic calendar if it exists in ModuleDatum, + * else does not add module into user's academic calendar. + * Validates user's input semester and grade. + * If either is invalid, does not add module into user's academic calendar. + */ + private void addModule(Scanner in, String moduleCode) { + try { + if (checkIfModOfferedByNUS(moduleCode)) { + if (checkIfModTaken(moduleCode)) { + System.out.println(ERROR_DUPLICATE_MOD); + } + + System.out.println("Semester you plan to take " + moduleCode.toUpperCase() + "?"); + String userInput = in.nextLine(); + int semesterValue = Integer.parseInt(userInput); + + if (!checkValidSemester(semesterValue)) { + System.out.println(ERROR_INVALID_SEMESTER_INDEX); + return; + } + + System.out.println("Grade received for " + moduleCode.toUpperCase() +"?"); + String gradeValue = in.nextLine(); + if (!checkValidGrade(gradeValue)) { + System.out.println(ERROR_INVALID_GRADE); + return; + } + + int moduleCredit = getModuleCreditForModule(moduleCode); + Module newModuleToAdd = new Module(moduleCode, semesterValue, gradeValue, moduleCredit); + modulesList.add(newModuleToAdd); + modulesAddedMap.put(moduleCode, newModuleToAdd); + + //Incrementing total MC regardless of SU + currentPerson.setCurrentMC(currentPerson.getCurrentMC() + moduleCredit); + + //Incrementing total MC after SU only if module is not SU + if (newModuleToAdd.getCAP() != -1.00) { + currentPerson.setCurrentMCAfterSU(currentPerson.getCurrentMCAfterSU() + moduleCredit); + double newMCxGrade = newModuleToAdd.getCAP() * moduleCredit; + currentPerson.setCurrentTotalMCxGrade(currentPerson.getCurrentTotalMCxGrade() + newMCxGrade); + } + System.out.println(newModuleToAdd.getModuleCode() + + " added into Semester " + semesterValue + "."); + } else { + System.out.println(moduleCode + ERROR_NOT_OFFERED); + } + } catch (Exception e) { + System.out.println(ERROR_INVALID_COMMAND); + } + } + + /** + * Returns true if module code is offered by NUS, + * else returns false. + * @param moduleCode input module code + * @return boolean of module code in ModuleDatum + */ + private boolean checkIfModOfferedByNUS(String moduleCode) { + return (allModules.getModuleMap().get(moduleCode) > -1); + } + + /** + * Returns tru if module is in the user's academic calendar + * else returns false. + * + * @param moduleCode moduleCode to check + * @return boolean + */ + private boolean checkIfModTaken(String moduleCode) { + return (modulesAddedMap.containsKey(moduleCode)); + } + + /** + * Returns true if semsesterIndex is a valid semesterIndex + * else returns false + * + * @param semesterIndex semesterIndex to check + * @return false + */ + private boolean checkValidSemester (int semesterIndex) { + return (semesterIndex >= STARTING_SEMESTER_INDEX && semesterIndex <= FINAL_SEMESTER_INDEX); + } + + /** + * Returns true if grade is a Grade option offered by NUS, + * else returns false. + * + * @param grade grade to check + * @return boolean + */ + private boolean checkValidGrade(String grade) { + switch (grade.toUpperCase()) { + case "A+": + //Fallthrough + case "A": + //Fallthrough + case "A-": + //Fallthrough + case "B+": + //Fallthrough + case "B": + //Fallthrough + case "B-": + //Fallthrough + case "C+": + //Fallthrough + case "C": + //Fallthrough + case "D+": + //Fallthrough + case "D": + //Fallthrough + case "F": + //Fallthrough + case "CS": //Completed Satisfactorily + //Fallthrough + case "CU": //Completed Unsatisfactorily + //Fallthrough + case "S": //Satisfactory + //Fallthrough + case "U": //Unsatisfactory + //Fallthrough + case "W": //Withdrawn + //Fallthrough + case "IC": //Incomplete + //Fallthrough + case "IP": //In progress + //Fallthrough + case "AUD": //Audit + //Fallthrough + case "WU": //Withdrawn from University + //Fallthrough + case "EXE" : //Exempted + //Fallthrough + case "NT": //Not taken + return true; + default: + return false; + } + } + + /** + * Function to return module credits for module code + * + * @param moduleCode string of module code + * @return int of module credit + */ + private int getModuleCreditForModule(String moduleCode) { + int mapIndex = allModules.getModuleMap().get(moduleCode); + return allModules.getModuleFullDetails()[mapIndex].getModuleCredit(); + } +} diff --git a/src/main/java/objects/Module.java b/src/main/java/objects/Module.java new file mode 100644 index 0000000000..fd4cdd2b37 --- /dev/null +++ b/src/main/java/objects/Module.java @@ -0,0 +1,128 @@ +package objects; + +import org.apache.commons.lang3.builder.ToStringBuilder; + +public class Module implements Comparable{ + private String moduleCode; + private int semesterIndex; // 1 to 8 + private String grade; + private int moduleCredit; + private double CAP; + + public Module (String moduleCode, int semesterIndex, String grade, int moduleCredit) { + setModuleCode(moduleCode); + setSemesterIndex(semesterIndex); + setGrade(grade); + setModuleCredit(moduleCredit); + setCAP(grade); + } + + public String getModuleCode() { + return moduleCode; + } + + public Integer getModuleCredit() { + return moduleCredit; + } + + public String getGrade() { + return grade; + } + + public int getSemesterIndex() { + return semesterIndex; + } + + public void setModuleCredit(int moduleCredit) { + this.moduleCredit = moduleCredit; + } + + public void setModuleCode(String moduleCode) { + this.moduleCode = moduleCode; + } + + public void setSemesterIndex(int semesterIndex) { + this.semesterIndex = semesterIndex; + } + + public void setGrade(String grade) { + this.grade = grade; + setCAP(grade); + } + + public void setCAP(String grade) { + switch (grade.toUpperCase()) { + case "A+": + case "A": + this.CAP = 5.00; + break; + case "A-": + this.CAP = 4.50; + break; + case "B+": + this.CAP = 4.00; + break; + case "B": + this.CAP = 3.50; + break; + case "B-": + this.CAP = 3.00; + break; + case "C+": + this.CAP = 2.50; + break; + case "C": + this.CAP = 2.00; + break; + case "D+": + this.CAP = 1.50; + break; + case "D": + this.CAP = 1.00; + break; + case "F": + this.CAP = 0.00; + break; + case "CS": //Completed Satisfactorily + //Fallthrough + case "CU": //Completed Unsatisfactorily + //Fallthrough + case "S": //Satisfactory + //Fallthrough + case "U": //Unsatisfactory + //Fallthrough + case "W": //Withdrawn + //Fallthrough + case "IC": //Incomplete + //Fallthrough + case "IP": //In progress + //Fallthrough + case "AUD": //Audit + //Fallthrough + case "WU": //Withdrawn from University + //Fallthrough + case "EXE": //Exempted + //Fallthrough + case "NT": //Not taken + this.CAP = -1.00; + break; + default: + this.CAP = 0.00; + break; + } + } + + public double getCAP() { + return CAP; + } + + @Override + public int compareTo(Module module) { + return (Double.compare(this.getCAP(), module.getCAP())); + } + + @Override + public String toString() { + return ToStringBuilder.reflectionToString(this); + } +} diff --git a/src/main/java/objects/Person.java b/src/main/java/objects/Person.java new file mode 100644 index 0000000000..e2063b99f9 --- /dev/null +++ b/src/main/java/objects/Person.java @@ -0,0 +1,71 @@ +package objects; + +import java.util.ArrayList; +import java.util.HashMap; + +public class Person { + //General Variables + private String personName; + + //Variables needed for CAP Calculation + private double currentTotalMCxGrade; + private int currentMC; + private int currentMCAfterSU; + + //Variables needed for Academic Planner + private ArrayList modulesList; + private HashMap modulesAddedMap; + + public Person(String personName) { + this.currentTotalMCxGrade = 0.0; + this.currentMC = 0; + this.currentMCAfterSU = 0; + this.personName = personName; + this.modulesList = new ArrayList<>(); + this.modulesAddedMap = new HashMap<>(); + } + + public String getPersonName() { + return personName; + } + + public double getCurrentTotalMCxGrade() { + return currentTotalMCxGrade; + } + + public void setCurrentTotalMCxGrade(double currentTotalMCxGrade) { + this.currentTotalMCxGrade = currentTotalMCxGrade; + } + + public int getCurrentMC() { + return currentMC; + } + + public void setCurrentMC(int currentMC) { + this.currentMC = currentMC; + } + + public int getCurrentMCAfterSU() { + return currentMCAfterSU; + } + + public void setCurrentMCAfterSU(int currentMCAfterSU) { + this.currentMCAfterSU = currentMCAfterSU; + } + + public ArrayList getModulesList() { + return modulesList; + } + + public void setModulesList(ArrayList modulesList) { + this.modulesList = modulesList; + } + + public HashMap getModulesAddedMap() { + return modulesAddedMap; + } + + public void setModulesAddedMap(HashMap modulesAddedMap) { + this.modulesAddedMap = modulesAddedMap; + } +} From 91ecea87834a2b8dbf8d5e01ccaeec72c1d95a9e Mon Sep 17 00:00:00 2001 From: harryleecp Date: Tue, 29 Sep 2020 10:28:43 +0800 Subject: [PATCH 003/450] Added editModule and removeModule methods to the AcademicPlanner class --- src/main/java/apps/AcademicPlanner.java | 127 +++++++++++++++++++++++- 1 file changed, 125 insertions(+), 2 deletions(-) diff --git a/src/main/java/apps/AcademicPlanner.java b/src/main/java/apps/AcademicPlanner.java index 782f9c4679..b0702ac737 100644 --- a/src/main/java/apps/AcademicPlanner.java +++ b/src/main/java/apps/AcademicPlanner.java @@ -61,9 +61,9 @@ public void planner() { if (inputs[0].equals(ADD_COMMAND)) { addModule(scanner, inputs[1]); } else if (inputs[0].equals(EDIT_COMMAND)) { -// editModule(scanner, inputs[1]); + editModule(scanner, inputs[1]); } else if (inputs[0].equals(REMOVE_COMMAND)) { -// removeModule(inputs[1]); + removeModule(inputs[1]); } else if (inputs[0].equals(VIEW_COMMAND)) { // printCalendar(); } else { @@ -129,6 +129,129 @@ private void addModule(Scanner in, String moduleCode) { } } + /** + * Allows user to edit the module entry of his academic calendar. + * Parameters allowed to change are semesterIndex or Grade. + */ + private void editModule(Scanner in, String moduleCode) { + try { + if (checkIfModTaken(moduleCode)) { + System.out.println("Enter the number corresponding to the feature you wish to edit:" + + "\n1) Semester\n2) Grade"); + String choice = in.nextLine(); + if (choice.equals("1")) { + System.out.println("Enter the new semester value: "); + String newValue = in.nextLine(); + if (!checkValidSemester(Integer.parseInt(newValue))) { + System.out.println(ERROR_INVALID_SEMESTER_INDEX); + return; + } + for (Module item : modulesList) { + if (item.getModuleCode().equals(moduleCode)) { + item.setSemesterIndex(Integer.parseInt(newValue)); + break; + } + } + modulesAddedMap.get(moduleCode).setSemesterIndex(Integer.parseInt(newValue)); + System.out.println("Semester for " + moduleCode + " successfully updated!"); + } else if (choice.equals("2")) { + System.out.println("Enter the new grade: "); + String gradeValue = in.nextLine().toUpperCase(); + if (!checkValidGrade(gradeValue)) { + System.out.println(ERROR_INVALID_GRADE); + return; + } + + double oldCap; + double newCap; + + System.out.println(moduleCode); + + for (Module item : modulesList) { + if (item.getModuleCode().equals(moduleCode)) { + oldCap = item.getCAP(); + item.setGrade(gradeValue); + newCap = item.getCAP(); + + if (oldCap == -1.00 && newCap != -1.00) { //Case where previously was SU but new is not SU + currentPerson.setCurrentMCAfterSU(currentPerson.getCurrentMCAfterSU() + item.getModuleCredit()); + double newMCxGrade = newCap * item.getModuleCredit(); + currentPerson.setCurrentTotalMCxGrade(currentPerson.getCurrentTotalMCxGrade() + newMCxGrade); + } else if (oldCap != -1.00 && newCap == -1.00) { //Case where previously was not SU but now is SU + currentPerson.setCurrentMCAfterSU(currentPerson.getCurrentMCAfterSU() - item.getModuleCredit()); + double MCxGradeToMinus = oldCap * item.getModuleCredit(); + currentPerson.setCurrentTotalMCxGrade(currentPerson.getCurrentTotalMCxGrade() - MCxGradeToMinus); + } else if (oldCap != newCap) { //Case where previously and new cap are not SU but not the same + double oldMCxGrade = oldCap * item.getModuleCredit(); + double newMCxGrade = newCap * item.getModuleCredit(); + double MCxGradeToSet = newMCxGrade - oldMCxGrade; + currentPerson.setCurrentTotalMCxGrade(currentPerson.getCurrentTotalMCxGrade() + MCxGradeToSet); + } + break; + } + } + modulesAddedMap.get(moduleCode).setGrade(gradeValue); + + + //Below output are for debugging purposes + System.out.println("Current total MC taken: " + currentPerson.getCurrentMC()); + System.out.println("Current total MC x Grade: " + currentPerson.getCurrentTotalMCxGrade()); + System.out.println("Current total MC after SU: " + currentPerson.getCurrentMCAfterSU()); + System.out.println("Current CAP: " + currentPerson.getCurrentTotalMCxGrade() / (double) currentPerson.getCurrentMCAfterSU()); + + + System.out.println("Grade for " + moduleCode + " successfully updated!"); + } else { + System.out.println(ERROR_EDIT_OPTION); + } + } else { + System.out.println(ERROR_NOT_ADDED); + } + } catch (Exception e) { + System.out.println(ERROR_INVALID_COMMAND); + } + } + + /** + * Removes moduleCode from user's academic calendar if it exists, + * else prompts user of error. + */ + private void removeModule(String moduleCode) { + try { + if (checkIfModTaken(moduleCode)) { + modulesAddedMap.remove(moduleCode); + for (Module item : modulesList) { + if (item.getModuleCode().equals(moduleCode)) { + System.out.println(item.getModuleCode() + " has been removed from the list"); + + //Decreasing total MC regardless of SU + currentPerson.setCurrentMC(currentPerson.getCurrentMC() - item.getModuleCredit()); + + //Decreasing total MC after SU only if module is not SU + if (item.getCAP() != -1.00) { + currentPerson.setCurrentMCAfterSU(currentPerson.getCurrentMCAfterSU() - item.getModuleCredit()); + double MCxGradeToMinus = item.getCAP() * item.getModuleCredit(); + currentPerson.setCurrentTotalMCxGrade(currentPerson.getCurrentTotalMCxGrade() - MCxGradeToMinus); + } + + modulesList.remove(item); + break; + } + } + + //Below output are for debugging purposes + System.out.println("Current total MC taken: " + currentPerson.getCurrentMC()); + System.out.println("Current total MC x Grade: " + currentPerson.getCurrentTotalMCxGrade()); + System.out.println("Current total MC after SU: " + currentPerson.getCurrentMCAfterSU()); + System.out.println("Current CAP: " + currentPerson.getCurrentTotalMCxGrade() / (double) currentPerson.getCurrentMCAfterSU()); + } else { + System.out.println(ERROR_NOT_ADDED); + } + } catch (Exception e) { + System.out.println(ERROR_INVALID_COMMAND); + } + } + /** * Returns true if module code is offered by NUS, * else returns false. From 0df37c51d1d99ce694c08ad4b4792b140b8168ba Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Thu, 1 Oct 2020 22:24:54 +0800 Subject: [PATCH 004/450] Add skeleton documentations --- docs/AboutUs.md | 14 +++++++------- docs/DeveloperGuide.md | 4 +++- docs/README.md | 29 +++++++++++++++++++++++++++-- 3 files changed, 37 insertions(+), 10 deletions(-) diff --git a/docs/AboutUs.md b/docs/AboutUs.md index 0f072953ea..69a5333e88 100644 --- a/docs/AboutUs.md +++ b/docs/AboutUs.md @@ -1,9 +1,9 @@ # About us -Display | Name | Github Profile | Portfolio ---------|:----:|:--------------:|:---------: -![](https://via.placeholder.com/100.png?text=Photo) | John Doe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) -![](https://via.placeholder.com/100.png?text=Photo) | Don Joe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) -![](https://via.placeholder.com/100.png?text=Photo) | Ron John | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) -![](https://via.placeholder.com/100.png?text=Photo) | John Roe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) -![](https://via.placeholder.com/100.png?text=Photo) | Don Roe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) +Display | Name | Role | Github Profile +---|:---:|:---:|:---: +![](https://avatars3.githubusercontent.com/u/60382285?s=400) | Jerrold Lam | Team Leader | [jerroldlam](https://github.com/jerroldlam "Github User Profile") +![](https://avatars3.githubusercontent.com/u/56764814?s=100) | Khenus Tan | Git and Integration Expert | [Khenus](https://github.com/Khenus "Github User Profile") +![](https://avatars3.githubusercontent.com/u/60414537?s=100) | Harry Lee | Deliverables Expert | [harryleecp](https://github.com/harryleecp "Github User Profile") +![](https://avatars3.githubusercontent.com/u/57383789?s=100) | Ju Zihao | Scheduler Expert | [JuZihao](https://github.com/JuZihao "Github User Profile") +![](https://avatars3.githubusercontent.com/u/49282734?s=400) | Vanessa Kang | Code Quality Expert | [Vanessa-Kang](https://github.com/vanessa-kang "Github User Profile") diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 0ec3db103d..9c4b078293 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -18,7 +18,9 @@ |Version| As a ... | I want to ... | So that I can ...| |--------|----------|---------------|------------------| -|v1.0|new user|see usage instructions|refer to them when I forget how to use the application| +|v1.0|fresh undergraduate|visualize the modules in the recommended schedule and course requirements|better plan out my academic journey for the next 4-5 years in NUS| +|v1.0|undergraduate with at least 1 semester of study completed|calculate my CAP easily|forecast my own expected graduation CAP and if they match my expected CAP| +|v1.0|undergraduate with at least 1 semester of study completed|print out a personalised list of modules taken so far and grades obtained|track my academic progression in NUS| |v2.0|user|find a to-do item by name|locate a to-do without having to go through the entire list| ## Non-Functional Requirements diff --git a/docs/README.md b/docs/README.md index bbcc99c1e7..8ca5a98abd 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,8 +1,33 @@ -# Duke +# PlanNUS -{Give product intro here} +#### Foreword + +plaNUS is a greenfield project which aims to solve the gap in undergraduate academic planning in NUS. +With the `Academic Calendar Planner`,plaNUS will be able to assist undergraduate students in forecasting their academic journey for their 4 or 5 years in NUS. +With the `CAP Calulator` , plaNUS will be able to tell you your current CAP and forecast future grades needed to achieve your target CAP. + +## Target User Profile + +1. All Fresh NUS Undergraduates +1. NUS Undergraduates who have completed at least 1 semester of study + +## Feature List (for V1.0) + +1. Academic Calendar Planner + 1. Add module + 1. Edit module + 1. Remove module + 1. Print Calendar +1. CAP Calculator + 1. Get Cap + +## Planned Feature List for the future + +1. Saving of Academic Calendar Planner into text file. +2. Loading of Academic Calendar Planner from text file. Useful links: * [User Guide](UserGuide.md) * [Developer Guide](DeveloperGuide.md) * [About Us](AboutUs.md) +* [Planning Document](https://docs.google.com/document/d/1ikOD_2NS2qUSGtQJpqbVWX7g5mAFV6_jxhiAlka_SSs/edit?usp=sharing "Collaborative Document") From e9f717b814afb143915c25d4191817190a7e3b19 Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Fri, 2 Oct 2020 12:20:58 +0800 Subject: [PATCH 005/450] Add seedu.duke.DUk.java --- src/main/java/seedu/duke/Duke.java | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/main/java/seedu/duke/Duke.java diff --git a/src/main/java/seedu/duke/Duke.java b/src/main/java/seedu/duke/Duke.java new file mode 100644 index 0000000000..5c74e68d59 --- /dev/null +++ b/src/main/java/seedu/duke/Duke.java @@ -0,0 +1,21 @@ +package seedu.duke; + +import java.util.Scanner; + +public class Duke { + /** + * Main entry-point for the java.duke.Duke application. + */ + public static void main(String[] args) { + String logo = " ____ _ \n" + + "| _ \\ _ _| | _____ \n" + + "| | | | | | | |/ / _ \\\n" + + "| |_| | |_| | < __/\n" + + "|____/ \\__,_|_|\\_\\___|\n"; + System.out.println("Hello from\n" + logo); + System.out.println("What is your name?"); + + Scanner in = new Scanner(System.in); + System.out.println("Hello " + in.nextLine()); + } +} From e9c8b561dc3106a1c56ef45a0e2c6fca972a9908 Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Fri, 2 Oct 2020 12:48:24 +0800 Subject: [PATCH 006/450] Refactor all project packages to be under seedu.duke --- src/main/java/Main.java | 12 ------------ src/main/java/seedu/duke/Duke.java | 16 ++++++---------- .../{ => seedu/duke}/apps/AcademicPlanner.java | 11 +++++------ .../{ => seedu/duke}/moduledata/ModuleDatum.java | 2 +- .../duke}/moduledata/ModuleInitializer.java | 2 +- .../java/{ => seedu/duke}/objects/Module.java | 2 +- .../java/{ => seedu/duke}/objects/Person.java | 2 +- 7 files changed, 15 insertions(+), 32 deletions(-) delete mode 100644 src/main/java/Main.java rename src/main/java/{ => seedu/duke}/apps/AcademicPlanner.java (98%) rename src/main/java/{ => seedu/duke}/moduledata/ModuleDatum.java (98%) rename src/main/java/{ => seedu/duke}/moduledata/ModuleInitializer.java (96%) rename src/main/java/{ => seedu/duke}/objects/Module.java (99%) rename src/main/java/{ => seedu/duke}/objects/Person.java (98%) diff --git a/src/main/java/Main.java b/src/main/java/Main.java deleted file mode 100644 index 0f6de1cec5..0000000000 --- a/src/main/java/Main.java +++ /dev/null @@ -1,12 +0,0 @@ -import moduledata.ModuleDatum; -import moduledata.ModuleInitializer; - -public class Main { - public static void main(String[] args) { - ModuleInitializer allModules = new ModuleInitializer(); - Integer idx = allModules.getModuleMap().get("CS1010"); - ModuleDatum cs1010Data = allModules.getModuleFullDetails()[idx]; - - System.out.println(cs1010Data.toString()); - } -} diff --git a/src/main/java/seedu/duke/Duke.java b/src/main/java/seedu/duke/Duke.java index 5c74e68d59..a1623431d5 100644 --- a/src/main/java/seedu/duke/Duke.java +++ b/src/main/java/seedu/duke/Duke.java @@ -1,21 +1,17 @@ package seedu.duke; -import java.util.Scanner; +import seedu.duke.moduledata.ModuleDatum; +import seedu.duke.moduledata.ModuleInitializer; public class Duke { /** * Main entry-point for the java.duke.Duke application. */ public static void main(String[] args) { - String logo = " ____ _ \n" - + "| _ \\ _ _| | _____ \n" - + "| | | | | | | |/ / _ \\\n" - + "| |_| | |_| | < __/\n" - + "|____/ \\__,_|_|\\_\\___|\n"; - System.out.println("Hello from\n" + logo); - System.out.println("What is your name?"); + ModuleInitializer allModules = new ModuleInitializer(); + Integer idx = allModules.getModuleMap().get("CS1010"); + ModuleDatum cs1010Data = allModules.getModuleFullDetails()[idx]; - Scanner in = new Scanner(System.in); - System.out.println("Hello " + in.nextLine()); + System.out.println(cs1010Data.toString()); } } diff --git a/src/main/java/apps/AcademicPlanner.java b/src/main/java/seedu/duke/apps/AcademicPlanner.java similarity index 98% rename from src/main/java/apps/AcademicPlanner.java rename to src/main/java/seedu/duke/apps/AcademicPlanner.java index b0702ac737..5a76c5979c 100644 --- a/src/main/java/apps/AcademicPlanner.java +++ b/src/main/java/seedu/duke/apps/AcademicPlanner.java @@ -1,11 +1,10 @@ -package apps; +package seedu.duke.apps; + +import seedu.duke.moduledata.ModuleInitializer; +import seedu.duke.objects.Module; +import seedu.duke.objects.Person; -import moduledata.ModuleInitializer; -import objects.Module; -import objects.Person; -import org.apache.commons.lang3.builder.ToStringBuilder; import java.util.ArrayList; -import java.util.Comparator; import java.util.HashMap; import java.util.Scanner; diff --git a/src/main/java/moduledata/ModuleDatum.java b/src/main/java/seedu/duke/moduledata/ModuleDatum.java similarity index 98% rename from src/main/java/moduledata/ModuleDatum.java rename to src/main/java/seedu/duke/moduledata/ModuleDatum.java index 45124a2643..26dd4be256 100644 --- a/src/main/java/moduledata/ModuleDatum.java +++ b/src/main/java/seedu/duke/moduledata/ModuleDatum.java @@ -1,4 +1,4 @@ -package moduledata; +package seedu.duke.moduledata; import java.util.ArrayList; import java.util.HashMap; diff --git a/src/main/java/moduledata/ModuleInitializer.java b/src/main/java/seedu/duke/moduledata/ModuleInitializer.java similarity index 96% rename from src/main/java/moduledata/ModuleInitializer.java rename to src/main/java/seedu/duke/moduledata/ModuleInitializer.java index f117ade47b..54820ab0d7 100644 --- a/src/main/java/moduledata/ModuleInitializer.java +++ b/src/main/java/seedu/duke/moduledata/ModuleInitializer.java @@ -1,4 +1,4 @@ -package moduledata; +package seedu.duke.moduledata; import com.google.gson.Gson; diff --git a/src/main/java/objects/Module.java b/src/main/java/seedu/duke/objects/Module.java similarity index 99% rename from src/main/java/objects/Module.java rename to src/main/java/seedu/duke/objects/Module.java index fd4cdd2b37..d1fbb82121 100644 --- a/src/main/java/objects/Module.java +++ b/src/main/java/seedu/duke/objects/Module.java @@ -1,4 +1,4 @@ -package objects; +package seedu.duke.objects; import org.apache.commons.lang3.builder.ToStringBuilder; diff --git a/src/main/java/objects/Person.java b/src/main/java/seedu/duke/objects/Person.java similarity index 98% rename from src/main/java/objects/Person.java rename to src/main/java/seedu/duke/objects/Person.java index e2063b99f9..aa0ec64be4 100644 --- a/src/main/java/objects/Person.java +++ b/src/main/java/seedu/duke/objects/Person.java @@ -1,4 +1,4 @@ -package objects; +package seedu.duke.objects; import java.util.ArrayList; import java.util.HashMap; From 6d60110bac94ff3aa6023e0600c47529bfffa27d Mon Sep 17 00:00:00 2001 From: jerroldlam <60382285+jerroldlam@users.noreply.github.com> Date: Fri, 2 Oct 2020 16:11:12 +0800 Subject: [PATCH 007/450] Set theme jekyll-theme-merlot --- docs/_config.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 docs/_config.yml diff --git a/docs/_config.yml b/docs/_config.yml new file mode 100644 index 0000000000..c50ff38dab --- /dev/null +++ b/docs/_config.yml @@ -0,0 +1 @@ +theme: jekyll-theme-merlot \ No newline at end of file From 08cbadc9c6ad380580c5babfd06d1dea6aa0dcd0 Mon Sep 17 00:00:00 2001 From: JuZihao <57383789+JuZihao@users.noreply.github.com> Date: Sun, 4 Oct 2020 10:40:26 +0800 Subject: [PATCH 008/450] Added V0.1 Capcalc functions --- .../java/seedu/duke/apps/AcademicPlanner.java | 2 +- .../java/seedu/duke/apps/CapCalculator.java | 119 ++++++++++++++++++ 2 files changed, 120 insertions(+), 1 deletion(-) create mode 100644 src/main/java/seedu/duke/apps/CapCalculator.java diff --git a/src/main/java/seedu/duke/apps/AcademicPlanner.java b/src/main/java/seedu/duke/apps/AcademicPlanner.java index 5a76c5979c..d4aed05fe5 100644 --- a/src/main/java/seedu/duke/apps/AcademicPlanner.java +++ b/src/main/java/seedu/duke/apps/AcademicPlanner.java @@ -262,7 +262,7 @@ private boolean checkIfModOfferedByNUS(String moduleCode) { } /** - * Returns tru if module is in the user's academic calendar + * Returns true if module is in the user's academic calendar * else returns false. * * @param moduleCode moduleCode to check diff --git a/src/main/java/seedu/duke/apps/CapCalculator.java b/src/main/java/seedu/duke/apps/CapCalculator.java new file mode 100644 index 0000000000..81adece86e --- /dev/null +++ b/src/main/java/seedu/duke/apps/CapCalculator.java @@ -0,0 +1,119 @@ +package seedu.duke.apps; + +import seedu.duke.objects.Person; + +import java.math.RoundingMode; +import java.text.DecimalFormat; +import java.util.Scanner; + +public class CapCalculator { + private final Person person; + private final DecimalFormat formatFinalCAP = new DecimalFormat("#.##"); + + //CONSTANTS + private final String ERROR_INVALID_COMMAND = "INVALID COMMAND"; + private final String AWAIT_COMMAND = "Type a command to continue..."; + private final String EXIT_COMMAND = "EXIT"; + private final String CURRENT_COMMAND = "CURRENT"; + private final String SET_TARGET_COMMAND = "SET TARGET"; + private final String EXIT_MESSAGE = "EXITING CAPCALC"; + private final String WELCOME_MESSAGE = "Welcome to CAP Calculator! Commands available are:\n" + + " Current\n" + + " Set target\n" + + "To exit CAP Calculator, use command: \"exit\"\n\n" + + "Initializing your CAP..."; + + public CapCalculator(Person currentPerson) { + this.person = currentPerson; + } + + //Main Function + public void CAPCalculator() { + System.out.println(WELCOME_MESSAGE); + System.out.println(AWAIT_COMMAND); + Scanner scanner = new Scanner(System.in); + String input = scanner.nextLine().toUpperCase(); + formatFinalCAP.setRoundingMode(RoundingMode.UP); + + while (!input.equals(EXIT_COMMAND)) { + if (input.equals(CURRENT_COMMAND)) { + printCurrentCAP(); + } else if (input.equals(SET_TARGET_COMMAND)) { + setTargetCAP(); + }else { + System.out.println(ERROR_INVALID_COMMAND); + } + input = scanner.nextLine().toUpperCase(); + } + System.out.println(EXIT_MESSAGE); + } + + /** + * Prints out current CAP and number of graded MCs + */ + private void printCurrentCAP() { + double currentCAP = person.getCurrentTotalMCxGrade() / (double) person.getCurrentMCAfterSU(); + System.out.println("Your current now CAP is: " + formatCAPToString(currentCAP)); + System.out.println("Number of graded MCs taken is: " + person.getCurrentMCAfterSU()); + } + + /** + * Allow the user to set the target CAP that user want to achieve in the next given MCs. + */ + private void setTargetCAP() { + Scanner in = new Scanner(System.in); + try { + System.out.println("What is your target CAP?"); + double targetCAP = Double.parseDouble(in.nextLine()); + + System.out.println("How many graded MCs you are taking to achieve the target CAP?"); + int targetGradedMC = Integer.parseInt(in.nextLine()); + + calculateResults(targetCAP, targetGradedMC); + } catch(NullPointerException e) { + System.out.println(ERROR_INVALID_COMMAND); + System.out.println(AWAIT_COMMAND); + } + } + + /** + * Calculate what should be the user's minimum CAP in order to achieve user's target CAP. + */ + private void calculateResults(double targetCAP,int targetGradedMC) { + int totalMCToTarget = person.getCurrentMCAfterSU() + targetGradedMC; + double targetCAPxTargetMC = (double) totalMCToTarget * targetCAP; + double neededCAP = (targetCAPxTargetMC - person.getCurrentTotalMCxGrade()) / (double) targetGradedMC; + + if (neededCAP <= 5) { + System.out.println("You should achieve a minimum CAP of " + formatCAPToString(neededCAP) + " for your next " + + targetGradedMC + " MCs to achieve your target CAP of " + targetCAP + "."); + } else { + System.out.println("OOPS!! Looks like you are not able to achieve your target CAP of " + targetCAP + + " with you target MCs of " + targetGradedMC + "."); + } + } + + /** + * Returns CAP score as a string + * + * @param academicPoint academic point to parse + * @return string of academic point + */ + private String formatCAPToString(double academicPoint) { + if (isNaN(academicPoint)) { + return "0"; + } + return formatFinalCAP.format(academicPoint); + } + + /** + * Returns true if CAP is NaN + * else returns false. + * + * @param academicPoint academic point to check + * @return boolean + */ + public boolean isNaN(double academicPoint) { + return (academicPoint != academicPoint); + } +} From 16c85e3c7195a582f6a1f6d3d526fb42ae923a5d Mon Sep 17 00:00:00 2001 From: JuZihao <57383789+JuZihao@users.noreply.github.com> Date: Sun, 4 Oct 2020 10:57:19 +0800 Subject: [PATCH 009/450] Minor coding standard adjustments --- .../java/seedu/duke/apps/AcademicPlanner.java | 24 ++++++++--------- .../java/seedu/duke/apps/CapCalculator.java | 26 +++++++++---------- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/src/main/java/seedu/duke/apps/AcademicPlanner.java b/src/main/java/seedu/duke/apps/AcademicPlanner.java index d4aed05fe5..9585d7d188 100644 --- a/src/main/java/seedu/duke/apps/AcademicPlanner.java +++ b/src/main/java/seedu/duke/apps/AcademicPlanner.java @@ -25,13 +25,13 @@ public class AcademicPlanner { private final String REMOVE_COMMAND = "REMOVE"; private final String VIEW_COMMAND = "VIEW"; private final String EXIT_COMMAND = "EXIT"; - private final String COMMANDS_LIST = "Available commands are: \n" + - " add \n" + - " edit \n" + - " remove \n" + - " view\n" + - " exit\n" + - "Type a command to continue..."; + private final String COMMANDS_LIST = "Available commands are: \n" + + " add \n" + + " edit \n" + + " remove \n" + + " view\n" + + " exit\n" + + "Type a command to continue..."; private ModuleInitializer allModules; private ArrayList modulesList; @@ -97,7 +97,7 @@ private void addModule(Scanner in, String moduleCode) { return; } - System.out.println("Grade received for " + moduleCode.toUpperCase() +"?"); + System.out.println("Grade received for " + moduleCode.toUpperCase() + "?"); String gradeValue = in.nextLine(); if (!checkValidGrade(gradeValue)) { System.out.println(ERROR_INVALID_GRADE); @@ -262,7 +262,7 @@ private boolean checkIfModOfferedByNUS(String moduleCode) { } /** - * Returns true if module is in the user's academic calendar + * Returns true if module is in the user's academic calendar, * else returns false. * * @param moduleCode moduleCode to check @@ -273,13 +273,13 @@ private boolean checkIfModTaken(String moduleCode) { } /** - * Returns true if semsesterIndex is a valid semesterIndex + * Returns true if semsesterIndex is a valid semesterIndex, * else returns false * * @param semesterIndex semesterIndex to check * @return false */ - private boolean checkValidSemester (int semesterIndex) { + private boolean checkValidSemester(int semesterIndex) { return (semesterIndex >= STARTING_SEMESTER_INDEX && semesterIndex <= FINAL_SEMESTER_INDEX); } @@ -342,7 +342,7 @@ private boolean checkValidGrade(String grade) { } /** - * Function to return module credits for module code + * Function to return module credits for module code. * * @param moduleCode string of module code * @return int of module credit diff --git a/src/main/java/seedu/duke/apps/CapCalculator.java b/src/main/java/seedu/duke/apps/CapCalculator.java index 81adece86e..ed6b374b4d 100644 --- a/src/main/java/seedu/duke/apps/CapCalculator.java +++ b/src/main/java/seedu/duke/apps/CapCalculator.java @@ -17,11 +17,11 @@ public class CapCalculator { private final String CURRENT_COMMAND = "CURRENT"; private final String SET_TARGET_COMMAND = "SET TARGET"; private final String EXIT_MESSAGE = "EXITING CAPCALC"; - private final String WELCOME_MESSAGE = "Welcome to CAP Calculator! Commands available are:\n" + - " Current\n" + - " Set target\n" + - "To exit CAP Calculator, use command: \"exit\"\n\n" + - "Initializing your CAP..."; + private final String WELCOME_MESSAGE = "Welcome to CAP Calculator! Commands available are:\n" + + " Current\n" + + " Set target\n" + + "To exit CAP Calculator, use command: \"exit\"\n\n" + + "Initializing your CAP..."; public CapCalculator(Person currentPerson) { this.person = currentPerson; @@ -40,7 +40,7 @@ public void CAPCalculator() { printCurrentCAP(); } else if (input.equals(SET_TARGET_COMMAND)) { setTargetCAP(); - }else { + } else { System.out.println(ERROR_INVALID_COMMAND); } input = scanner.nextLine().toUpperCase(); @@ -49,7 +49,7 @@ public void CAPCalculator() { } /** - * Prints out current CAP and number of graded MCs + * Prints out current CAP and number of graded MCs. */ private void printCurrentCAP() { double currentCAP = person.getCurrentTotalMCxGrade() / (double) person.getCurrentMCAfterSU(); @@ -70,7 +70,7 @@ private void setTargetCAP() { int targetGradedMC = Integer.parseInt(in.nextLine()); calculateResults(targetCAP, targetGradedMC); - } catch(NullPointerException e) { + } catch (NullPointerException e) { System.out.println(ERROR_INVALID_COMMAND); System.out.println(AWAIT_COMMAND); } @@ -85,16 +85,16 @@ private void calculateResults(double targetCAP,int targetGradedMC) { double neededCAP = (targetCAPxTargetMC - person.getCurrentTotalMCxGrade()) / (double) targetGradedMC; if (neededCAP <= 5) { - System.out.println("You should achieve a minimum CAP of " + formatCAPToString(neededCAP) + " for your next " + - targetGradedMC + " MCs to achieve your target CAP of " + targetCAP + "."); + System.out.println("You should achieve a minimum CAP of " + formatCAPToString(neededCAP) + " for your next " + + targetGradedMC + " MCs to achieve your target CAP of " + targetCAP + "."); } else { - System.out.println("OOPS!! Looks like you are not able to achieve your target CAP of " + targetCAP + - " with you target MCs of " + targetGradedMC + "."); + System.out.println("OOPS!! Looks like you are not able to achieve your target CAP of " + targetCAP + + " with you target MCs of " + targetGradedMC + "."); } } /** - * Returns CAP score as a string + * Returns CAP score as a string. * * @param academicPoint academic point to parse * @return string of academic point From 67d0b9f976c8b79bdc19f981bc3bef44dfef5324 Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Sun, 4 Oct 2020 17:17:10 +0800 Subject: [PATCH 010/450] Add prompts for user when any invalid command is entered in Academic Planner -Add general checkstyle fixes -Refactor Main code's name from Duke to PlanNUS --- .../seedu/duke/{Duke.java => PlanNUS.java} | 2 +- .../java/seedu/duke/apps/AcademicPlanner.java | 106 +++++++++++------- .../java/seedu/duke/apps/CapCalculator.java | 8 +- .../seedu/duke/moduledata/ModuleDatum.java | 6 +- .../duke/moduledata/ModuleInitializer.java | 1 + src/main/java/seedu/duke/objects/Module.java | 42 +++---- src/main/java/seedu/duke/objects/Person.java | 36 +++--- .../duke/{DukeTest.java => PlanNUSTest.java} | 2 +- 8 files changed, 114 insertions(+), 89 deletions(-) rename src/main/java/seedu/duke/{Duke.java => PlanNUS.java} (95%) rename src/test/java/seedu/duke/{DukeTest.java => PlanNUSTest.java} (90%) diff --git a/src/main/java/seedu/duke/Duke.java b/src/main/java/seedu/duke/PlanNUS.java similarity index 95% rename from src/main/java/seedu/duke/Duke.java rename to src/main/java/seedu/duke/PlanNUS.java index a1623431d5..044d6bafd4 100644 --- a/src/main/java/seedu/duke/Duke.java +++ b/src/main/java/seedu/duke/PlanNUS.java @@ -3,7 +3,7 @@ import seedu.duke.moduledata.ModuleDatum; import seedu.duke.moduledata.ModuleInitializer; -public class Duke { +public class PlanNUS { /** * Main entry-point for the java.duke.Duke application. */ diff --git a/src/main/java/seedu/duke/apps/AcademicPlanner.java b/src/main/java/seedu/duke/apps/AcademicPlanner.java index 9585d7d188..1db99733bd 100644 --- a/src/main/java/seedu/duke/apps/AcademicPlanner.java +++ b/src/main/java/seedu/duke/apps/AcademicPlanner.java @@ -9,9 +9,10 @@ import java.util.Scanner; public class AcademicPlanner { - //CONSTANTS + private final int STARTING_SEMESTER_INDEX = 1; private final int FINAL_SEMESTER_INDEX = 10; + private final String EXITING_CURRENT_COMMAND = "Exiting current command back to Academic Planner Main Menu."; private final String ERROR_INVALID_COMMAND = "INVALID COMMAND"; private final String ERROR_INVALID_SEMESTER_INDEX = "INVALID SEMESTER INDEX"; private final String ERROR_INVALID_GRADE = "INVALID GRADE VALUE"; @@ -64,9 +65,10 @@ public void planner() { } else if (inputs[0].equals(REMOVE_COMMAND)) { removeModule(inputs[1]); } else if (inputs[0].equals(VIEW_COMMAND)) { -// printCalendar(); + // printCalendar(); } else { System.out.println(ERROR_INVALID_COMMAND); + System.out.println(EXITING_CURRENT_COMMAND); } printCommandsList(); fullInput = scanner.nextLine().toUpperCase(); @@ -83,9 +85,11 @@ public void planner() { */ private void addModule(Scanner in, String moduleCode) { try { - if (checkIfModOfferedByNUS(moduleCode)) { + if (checkIfModOfferedByNus(moduleCode)) { + if (checkIfModTaken(moduleCode)) { System.out.println(ERROR_DUPLICATE_MOD); + System.out.println(EXITING_CURRENT_COMMAND); } System.out.println("Semester you plan to take " + moduleCode.toUpperCase() + "?"); @@ -94,6 +98,7 @@ private void addModule(Scanner in, String moduleCode) { if (!checkValidSemester(semesterValue)) { System.out.println(ERROR_INVALID_SEMESTER_INDEX); + System.out.println(EXITING_CURRENT_COMMAND); return; } @@ -101,6 +106,7 @@ private void addModule(Scanner in, String moduleCode) { String gradeValue = in.nextLine(); if (!checkValidGrade(gradeValue)) { System.out.println(ERROR_INVALID_GRADE); + System.out.println(EXITING_CURRENT_COMMAND); return; } @@ -110,21 +116,23 @@ private void addModule(Scanner in, String moduleCode) { modulesAddedMap.put(moduleCode, newModuleToAdd); //Incrementing total MC regardless of SU - currentPerson.setCurrentMC(currentPerson.getCurrentMC() + moduleCredit); + currentPerson.setCurrentMc(currentPerson.getCurrentMc() + moduleCredit); //Incrementing total MC after SU only if module is not SU - if (newModuleToAdd.getCAP() != -1.00) { - currentPerson.setCurrentMCAfterSU(currentPerson.getCurrentMCAfterSU() + moduleCredit); - double newMCxGrade = newModuleToAdd.getCAP() * moduleCredit; - currentPerson.setCurrentTotalMCxGrade(currentPerson.getCurrentTotalMCxGrade() + newMCxGrade); + if (newModuleToAdd.getCap() != -1.00) { + currentPerson.setCurrentMcAfterSU(currentPerson.getCurrentMcAfterSU() + moduleCredit); + double newMCxGrade = newModuleToAdd.getCap() * moduleCredit; + currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() + newMCxGrade); } System.out.println(newModuleToAdd.getModuleCode() + " added into Semester " + semesterValue + "."); } else { System.out.println(moduleCode + ERROR_NOT_OFFERED); + System.out.println(EXITING_CURRENT_COMMAND); } } catch (Exception e) { System.out.println(ERROR_INVALID_COMMAND); + System.out.println(EXITING_CURRENT_COMMAND); } } @@ -135,29 +143,37 @@ private void addModule(Scanner in, String moduleCode) { private void editModule(Scanner in, String moduleCode) { try { if (checkIfModTaken(moduleCode)) { - System.out.println("Enter the number corresponding to the feature you wish to edit:" + - "\n1) Semester\n2) Grade"); + System.out.println("Enter the number corresponding to the feature you wish to edit:" + + "\n1) Semester\n2) Grade"); String choice = in.nextLine(); + if (choice.equals("1")) { System.out.println("Enter the new semester value: "); String newValue = in.nextLine(); + if (!checkValidSemester(Integer.parseInt(newValue))) { System.out.println(ERROR_INVALID_SEMESTER_INDEX); + System.out.println(EXITING_CURRENT_COMMAND); return; } + for (Module item : modulesList) { if (item.getModuleCode().equals(moduleCode)) { item.setSemesterIndex(Integer.parseInt(newValue)); break; } } + modulesAddedMap.get(moduleCode).setSemesterIndex(Integer.parseInt(newValue)); System.out.println("Semester for " + moduleCode + " successfully updated!"); + } else if (choice.equals("2")) { System.out.println("Enter the new grade: "); String gradeValue = in.nextLine().toUpperCase(); + if (!checkValidGrade(gradeValue)) { System.out.println(ERROR_INVALID_GRADE); + System.out.println(EXITING_CURRENT_COMMAND); return; } @@ -168,46 +184,51 @@ private void editModule(Scanner in, String moduleCode) { for (Module item : modulesList) { if (item.getModuleCode().equals(moduleCode)) { - oldCap = item.getCAP(); + oldCap = item.getCap(); item.setGrade(gradeValue); - newCap = item.getCAP(); + newCap = item.getCap(); - if (oldCap == -1.00 && newCap != -1.00) { //Case where previously was SU but new is not SU - currentPerson.setCurrentMCAfterSU(currentPerson.getCurrentMCAfterSU() + item.getModuleCredit()); + if (oldCap == -1.00 && newCap != -1.00) { + //Case where previously was SU but new is not SU + currentPerson.setCurrentMcAfterSU(currentPerson.getCurrentMcAfterSU() + + item.getModuleCredit()); double newMCxGrade = newCap * item.getModuleCredit(); - currentPerson.setCurrentTotalMCxGrade(currentPerson.getCurrentTotalMCxGrade() + newMCxGrade); - } else if (oldCap != -1.00 && newCap == -1.00) { //Case where previously was not SU but now is SU - currentPerson.setCurrentMCAfterSU(currentPerson.getCurrentMCAfterSU() - item.getModuleCredit()); - double MCxGradeToMinus = oldCap * item.getModuleCredit(); - currentPerson.setCurrentTotalMCxGrade(currentPerson.getCurrentTotalMCxGrade() - MCxGradeToMinus); - } else if (oldCap != newCap) { //Case where previously and new cap are not SU but not the same + currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() + + newMCxGrade); + + } else if (oldCap != -1.00 && newCap == -1.00) { + //Case where previously was not SU but now is SU + currentPerson.setCurrentMcAfterSU(currentPerson.getCurrentMcAfterSU() + - item.getModuleCredit()); + double mcxGradeToMinus = oldCap * item.getModuleCredit(); + currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() + - mcxGradeToMinus); + + } else if (oldCap != newCap) { + //Case where previously and new cap are not SU but not the same double oldMCxGrade = oldCap * item.getModuleCredit(); double newMCxGrade = newCap * item.getModuleCredit(); - double MCxGradeToSet = newMCxGrade - oldMCxGrade; - currentPerson.setCurrentTotalMCxGrade(currentPerson.getCurrentTotalMCxGrade() + MCxGradeToSet); + double mcxGradeToSet = newMCxGrade - oldMCxGrade; + currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() + + mcxGradeToSet); } break; } } modulesAddedMap.get(moduleCode).setGrade(gradeValue); - - //Below output are for debugging purposes - System.out.println("Current total MC taken: " + currentPerson.getCurrentMC()); - System.out.println("Current total MC x Grade: " + currentPerson.getCurrentTotalMCxGrade()); - System.out.println("Current total MC after SU: " + currentPerson.getCurrentMCAfterSU()); - System.out.println("Current CAP: " + currentPerson.getCurrentTotalMCxGrade() / (double) currentPerson.getCurrentMCAfterSU()); - - System.out.println("Grade for " + moduleCode + " successfully updated!"); } else { System.out.println(ERROR_EDIT_OPTION); + System.out.println(EXITING_CURRENT_COMMAND); } } else { System.out.println(ERROR_NOT_ADDED); + System.out.println(EXITING_CURRENT_COMMAND); } } catch (Exception e) { System.out.println(ERROR_INVALID_COMMAND); + System.out.println(EXITING_CURRENT_COMMAND); } } @@ -224,30 +245,29 @@ private void removeModule(String moduleCode) { System.out.println(item.getModuleCode() + " has been removed from the list"); //Decreasing total MC regardless of SU - currentPerson.setCurrentMC(currentPerson.getCurrentMC() - item.getModuleCredit()); + currentPerson.setCurrentMc(currentPerson.getCurrentMc() + - item.getModuleCredit()); //Decreasing total MC after SU only if module is not SU - if (item.getCAP() != -1.00) { - currentPerson.setCurrentMCAfterSU(currentPerson.getCurrentMCAfterSU() - item.getModuleCredit()); - double MCxGradeToMinus = item.getCAP() * item.getModuleCredit(); - currentPerson.setCurrentTotalMCxGrade(currentPerson.getCurrentTotalMCxGrade() - MCxGradeToMinus); + if (item.getCap() != -1.00) { + currentPerson.setCurrentMcAfterSU(currentPerson.getCurrentMcAfterSU() + - item.getModuleCredit()); + double mcxGradeToMinus = item.getCap() * item.getModuleCredit(); + currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() + - mcxGradeToMinus); } modulesList.remove(item); break; } } - - //Below output are for debugging purposes - System.out.println("Current total MC taken: " + currentPerson.getCurrentMC()); - System.out.println("Current total MC x Grade: " + currentPerson.getCurrentTotalMCxGrade()); - System.out.println("Current total MC after SU: " + currentPerson.getCurrentMCAfterSU()); - System.out.println("Current CAP: " + currentPerson.getCurrentTotalMCxGrade() / (double) currentPerson.getCurrentMCAfterSU()); } else { System.out.println(ERROR_NOT_ADDED); + System.out.println(EXITING_CURRENT_COMMAND); } } catch (Exception e) { System.out.println(ERROR_INVALID_COMMAND); + System.out.println(EXITING_CURRENT_COMMAND); } } @@ -257,7 +277,7 @@ private void removeModule(String moduleCode) { * @param moduleCode input module code * @return boolean of module code in ModuleDatum */ - private boolean checkIfModOfferedByNUS(String moduleCode) { + private boolean checkIfModOfferedByNus(String moduleCode) { return (allModules.getModuleMap().get(moduleCode) > -1); } @@ -274,7 +294,7 @@ private boolean checkIfModTaken(String moduleCode) { /** * Returns true if semsesterIndex is a valid semesterIndex, - * else returns false + * else returns false. * * @param semesterIndex semesterIndex to check * @return false diff --git a/src/main/java/seedu/duke/apps/CapCalculator.java b/src/main/java/seedu/duke/apps/CapCalculator.java index ed6b374b4d..5dff8b4809 100644 --- a/src/main/java/seedu/duke/apps/CapCalculator.java +++ b/src/main/java/seedu/duke/apps/CapCalculator.java @@ -52,9 +52,9 @@ public void CAPCalculator() { * Prints out current CAP and number of graded MCs. */ private void printCurrentCAP() { - double currentCAP = person.getCurrentTotalMCxGrade() / (double) person.getCurrentMCAfterSU(); + double currentCAP = person.getCurrentTotalMcxGrade() / (double) person.getCurrentMcAfterSU(); System.out.println("Your current now CAP is: " + formatCAPToString(currentCAP)); - System.out.println("Number of graded MCs taken is: " + person.getCurrentMCAfterSU()); + System.out.println("Number of graded MCs taken is: " + person.getCurrentMcAfterSU()); } /** @@ -80,9 +80,9 @@ private void setTargetCAP() { * Calculate what should be the user's minimum CAP in order to achieve user's target CAP. */ private void calculateResults(double targetCAP,int targetGradedMC) { - int totalMCToTarget = person.getCurrentMCAfterSU() + targetGradedMC; + int totalMCToTarget = person.getCurrentMcAfterSU() + targetGradedMC; double targetCAPxTargetMC = (double) totalMCToTarget * targetCAP; - double neededCAP = (targetCAPxTargetMC - person.getCurrentTotalMCxGrade()) / (double) targetGradedMC; + double neededCAP = (targetCAPxTargetMC - person.getCurrentTotalMcxGrade()) / (double) targetGradedMC; if (neededCAP <= 5) { System.out.println("You should achieve a minimum CAP of " + formatCAPToString(neededCAP) + " for your next " diff --git a/src/main/java/seedu/duke/moduledata/ModuleDatum.java b/src/main/java/seedu/duke/moduledata/ModuleDatum.java index 26dd4be256..2dbde109b4 100644 --- a/src/main/java/seedu/duke/moduledata/ModuleDatum.java +++ b/src/main/java/seedu/duke/moduledata/ModuleDatum.java @@ -96,6 +96,10 @@ public boolean equals(Object other) { return false; } ModuleDatum rhs = ((ModuleDatum) other); - return new EqualsBuilder().append(moduleCode, rhs.moduleCode).append(title, rhs.title).append(moduleCredit, rhs.moduleCredit).append(department, rhs.department).append(faculty, rhs.faculty).append(semester, rhs.semester).append(preclusion, rhs.preclusion).append(attributes, rhs.attributes).append(prerequisite, rhs.prerequisite).append(corequisite, rhs.corequisite).append(additionalProperties, rhs.additionalProperties).isEquals(); + return new EqualsBuilder().append(moduleCode, rhs.moduleCode).append(title, rhs.title) + .append(moduleCredit, rhs.moduleCredit).append(department, rhs.department) + .append(faculty, rhs.faculty).append(semester, rhs.semester).append(preclusion, rhs.preclusion) + .append(attributes, rhs.attributes).append(prerequisite, rhs.prerequisite) + .append(corequisite, rhs.corequisite).append(additionalProperties, rhs.additionalProperties).isEquals(); } } diff --git a/src/main/java/seedu/duke/moduledata/ModuleInitializer.java b/src/main/java/seedu/duke/moduledata/ModuleInitializer.java index 54820ab0d7..cb5e10570e 100644 --- a/src/main/java/seedu/duke/moduledata/ModuleInitializer.java +++ b/src/main/java/seedu/duke/moduledata/ModuleInitializer.java @@ -27,6 +27,7 @@ public ModuleInitializer() { public Map getModuleMap() { return this.moduleMap; } + public ModuleDatum[] getModuleFullDetails() { return this.moduleFullDetails; } diff --git a/src/main/java/seedu/duke/objects/Module.java b/src/main/java/seedu/duke/objects/Module.java index d1fbb82121..62bc6fd72f 100644 --- a/src/main/java/seedu/duke/objects/Module.java +++ b/src/main/java/seedu/duke/objects/Module.java @@ -2,19 +2,19 @@ import org.apache.commons.lang3.builder.ToStringBuilder; -public class Module implements Comparable{ +public class Module implements Comparable { private String moduleCode; private int semesterIndex; // 1 to 8 private String grade; private int moduleCredit; - private double CAP; + private double cap; - public Module (String moduleCode, int semesterIndex, String grade, int moduleCredit) { + public Module(String moduleCode, int semesterIndex, String grade, int moduleCredit) { setModuleCode(moduleCode); setSemesterIndex(semesterIndex); setGrade(grade); setModuleCredit(moduleCredit); - setCAP(grade); + setCap(grade); } public String getModuleCode() { @@ -47,41 +47,41 @@ public void setSemesterIndex(int semesterIndex) { public void setGrade(String grade) { this.grade = grade; - setCAP(grade); + setCap(grade); } - public void setCAP(String grade) { + public void setCap(String grade) { switch (grade.toUpperCase()) { case "A+": case "A": - this.CAP = 5.00; + this.cap = 5.00; break; case "A-": - this.CAP = 4.50; + this.cap = 4.50; break; case "B+": - this.CAP = 4.00; + this.cap = 4.00; break; case "B": - this.CAP = 3.50; + this.cap = 3.50; break; case "B-": - this.CAP = 3.00; + this.cap = 3.00; break; case "C+": - this.CAP = 2.50; + this.cap = 2.50; break; case "C": - this.CAP = 2.00; + this.cap = 2.00; break; case "D+": - this.CAP = 1.50; + this.cap = 1.50; break; case "D": - this.CAP = 1.00; + this.cap = 1.00; break; case "F": - this.CAP = 0.00; + this.cap = 0.00; break; case "CS": //Completed Satisfactorily //Fallthrough @@ -104,21 +104,21 @@ public void setCAP(String grade) { case "EXE": //Exempted //Fallthrough case "NT": //Not taken - this.CAP = -1.00; + this.cap = -1.00; break; default: - this.CAP = 0.00; + this.cap = 0.00; break; } } - public double getCAP() { - return CAP; + public double getCap() { + return cap; } @Override public int compareTo(Module module) { - return (Double.compare(this.getCAP(), module.getCAP())); + return (Double.compare(this.getCap(), module.getCap())); } @Override diff --git a/src/main/java/seedu/duke/objects/Person.java b/src/main/java/seedu/duke/objects/Person.java index aa0ec64be4..dc8ce9db6e 100644 --- a/src/main/java/seedu/duke/objects/Person.java +++ b/src/main/java/seedu/duke/objects/Person.java @@ -8,18 +8,18 @@ public class Person { private String personName; //Variables needed for CAP Calculation - private double currentTotalMCxGrade; - private int currentMC; - private int currentMCAfterSU; + private double currentTotalMcxGrade; + private int currentMc; + private int currentMcAfterSU; //Variables needed for Academic Planner private ArrayList modulesList; private HashMap modulesAddedMap; public Person(String personName) { - this.currentTotalMCxGrade = 0.0; - this.currentMC = 0; - this.currentMCAfterSU = 0; + this.currentTotalMcxGrade = 0.0; + this.currentMc = 0; + this.currentMcAfterSU = 0; this.personName = personName; this.modulesList = new ArrayList<>(); this.modulesAddedMap = new HashMap<>(); @@ -29,28 +29,28 @@ public String getPersonName() { return personName; } - public double getCurrentTotalMCxGrade() { - return currentTotalMCxGrade; + public double getCurrentTotalMcxGrade() { + return currentTotalMcxGrade; } - public void setCurrentTotalMCxGrade(double currentTotalMCxGrade) { - this.currentTotalMCxGrade = currentTotalMCxGrade; + public void setCurrentTotalMcxGrade(double currentTotalMcxGrade) { + this.currentTotalMcxGrade = currentTotalMcxGrade; } - public int getCurrentMC() { - return currentMC; + public int getCurrentMc() { + return currentMc; } - public void setCurrentMC(int currentMC) { - this.currentMC = currentMC; + public void setCurrentMc(int currentMc) { + this.currentMc = currentMc; } - public int getCurrentMCAfterSU() { - return currentMCAfterSU; + public int getCurrentMcAfterSU() { + return currentMcAfterSU; } - public void setCurrentMCAfterSU(int currentMCAfterSU) { - this.currentMCAfterSU = currentMCAfterSU; + public void setCurrentMcAfterSU(int currentMcAfterSU) { + this.currentMcAfterSU = currentMcAfterSU; } public ArrayList getModulesList() { diff --git a/src/test/java/seedu/duke/DukeTest.java b/src/test/java/seedu/duke/PlanNUSTest.java similarity index 90% rename from src/test/java/seedu/duke/DukeTest.java rename to src/test/java/seedu/duke/PlanNUSTest.java index 2dda5fd651..c4d647c3e1 100644 --- a/src/test/java/seedu/duke/DukeTest.java +++ b/src/test/java/seedu/duke/PlanNUSTest.java @@ -4,7 +4,7 @@ import org.junit.jupiter.api.Test; -class DukeTest { +class PlanNUSTest { @Test public void sampleTest() { assertTrue(true); From fb32ffb04c5a496c1b19b77bc3267f84b68a563d Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Sun, 4 Oct 2020 17:31:47 +0800 Subject: [PATCH 011/450] Rename PlanNUS into PlanNus for check style --- src/main/java/seedu/duke/PlanNUS.java | 2 +- src/test/java/seedu/duke/PlanNUSTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/seedu/duke/PlanNUS.java b/src/main/java/seedu/duke/PlanNUS.java index 044d6bafd4..80f0721145 100644 --- a/src/main/java/seedu/duke/PlanNUS.java +++ b/src/main/java/seedu/duke/PlanNUS.java @@ -3,7 +3,7 @@ import seedu.duke.moduledata.ModuleDatum; import seedu.duke.moduledata.ModuleInitializer; -public class PlanNUS { +public class PlanNus { /** * Main entry-point for the java.duke.Duke application. */ diff --git a/src/test/java/seedu/duke/PlanNUSTest.java b/src/test/java/seedu/duke/PlanNUSTest.java index c4d647c3e1..ff076af4e5 100644 --- a/src/test/java/seedu/duke/PlanNUSTest.java +++ b/src/test/java/seedu/duke/PlanNUSTest.java @@ -4,7 +4,7 @@ import org.junit.jupiter.api.Test; -class PlanNUSTest { +class PlanNusTest { @Test public void sampleTest() { assertTrue(true); From b869fcec0f8116a701402f84529bec4120bbc045 Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Sun, 4 Oct 2020 19:20:48 +0800 Subject: [PATCH 012/450] Correct check style errors --- .../java/seedu/duke/apps/AcademicPlanner.java | 34 +++++------ .../java/seedu/duke/apps/CapCalculator.java | 56 +++++++++---------- 2 files changed, 45 insertions(+), 45 deletions(-) diff --git a/src/main/java/seedu/duke/apps/AcademicPlanner.java b/src/main/java/seedu/duke/apps/AcademicPlanner.java index 1db99733bd..a1dfa369cf 100644 --- a/src/main/java/seedu/duke/apps/AcademicPlanner.java +++ b/src/main/java/seedu/duke/apps/AcademicPlanner.java @@ -10,23 +10,23 @@ public class AcademicPlanner { - private final int STARTING_SEMESTER_INDEX = 1; - private final int FINAL_SEMESTER_INDEX = 10; - private final String EXITING_CURRENT_COMMAND = "Exiting current command back to Academic Planner Main Menu."; - private final String ERROR_INVALID_COMMAND = "INVALID COMMAND"; - private final String ERROR_INVALID_SEMESTER_INDEX = "INVALID SEMESTER INDEX"; - private final String ERROR_INVALID_GRADE = "INVALID GRADE VALUE"; - private final String ERROR_NOT_OFFERED = " IS NOT OFFERED BY NUS"; - private final String ERROR_DUPLICATE_MOD = "You already have this mod on your calendar!"; - private final String ERROR_NOT_ADDED = "You have not added this module into your list yet"; - private final String ERROR_EDIT_OPTION = "Number entered does not correspond to any feature"; - private final String WELCOME_MESSAGE = "\nWelcome to Academic Planner!"; - private final String ADD_COMMAND = "ADD"; - private final String EDIT_COMMAND = "EDIT"; - private final String REMOVE_COMMAND = "REMOVE"; - private final String VIEW_COMMAND = "VIEW"; - private final String EXIT_COMMAND = "EXIT"; - private final String COMMANDS_LIST = "Available commands are: \n" + private static final int STARTING_SEMESTER_INDEX = 1; + private static final int FINAL_SEMESTER_INDEX = 10; + private static final String EXITING_CURRENT_COMMAND = "Exiting current command back to Academic Planner Main Menu."; + private static final String ERROR_INVALID_COMMAND = "INVALID COMMAND"; + private static final String ERROR_INVALID_SEMESTER_INDEX = "INVALID SEMESTER INDEX"; + private static final String ERROR_INVALID_GRADE = "INVALID GRADE VALUE"; + private static final String ERROR_NOT_OFFERED = " IS NOT OFFERED BY NUS"; + private static final String ERROR_DUPLICATE_MOD = "You already have this mod on your calendar!"; + private static final String ERROR_NOT_ADDED = "You have not added this module into your list yet"; + private static final String ERROR_EDIT_OPTION = "Number entered does not correspond to any feature"; + private static final String WELCOME_MESSAGE = "\nWelcome to Academic Planner!"; + private static final String ADD_COMMAND = "ADD"; + private static final String EDIT_COMMAND = "EDIT"; + private static final String REMOVE_COMMAND = "REMOVE"; + private static final String VIEW_COMMAND = "VIEW"; + private static final String EXIT_COMMAND = "EXIT"; + private static final String COMMANDS_LIST = "Available commands are: \n" + " add \n" + " edit \n" + " remove \n" diff --git a/src/main/java/seedu/duke/apps/CapCalculator.java b/src/main/java/seedu/duke/apps/CapCalculator.java index 5dff8b4809..6bac5ab008 100644 --- a/src/main/java/seedu/duke/apps/CapCalculator.java +++ b/src/main/java/seedu/duke/apps/CapCalculator.java @@ -8,16 +8,16 @@ public class CapCalculator { private final Person person; - private final DecimalFormat formatFinalCAP = new DecimalFormat("#.##"); + private final DecimalFormat formatFinalCap = new DecimalFormat("#.##"); //CONSTANTS - private final String ERROR_INVALID_COMMAND = "INVALID COMMAND"; - private final String AWAIT_COMMAND = "Type a command to continue..."; - private final String EXIT_COMMAND = "EXIT"; - private final String CURRENT_COMMAND = "CURRENT"; - private final String SET_TARGET_COMMAND = "SET TARGET"; - private final String EXIT_MESSAGE = "EXITING CAPCALC"; - private final String WELCOME_MESSAGE = "Welcome to CAP Calculator! Commands available are:\n" + private static final String ERROR_INVALID_COMMAND = "INVALID COMMAND"; + private static final String AWAIT_COMMAND = "Type a command to continue..."; + private static final String EXIT_COMMAND = "EXIT"; + private static final String CURRENT_COMMAND = "CURRENT"; + private static final String SET_TARGET_COMMAND = "SET TARGET"; + private static final String EXIT_MESSAGE = "EXITING CAPCALC"; + private static final String WELCOME_MESSAGE = "Welcome to CAP Calculator! Commands available are:\n" + " Current\n" + " Set target\n" + "To exit CAP Calculator, use command: \"exit\"\n\n" @@ -28,18 +28,18 @@ public CapCalculator(Person currentPerson) { } //Main Function - public void CAPCalculator() { + public void capCalculator() { System.out.println(WELCOME_MESSAGE); System.out.println(AWAIT_COMMAND); Scanner scanner = new Scanner(System.in); String input = scanner.nextLine().toUpperCase(); - formatFinalCAP.setRoundingMode(RoundingMode.UP); + formatFinalCap.setRoundingMode(RoundingMode.UP); while (!input.equals(EXIT_COMMAND)) { if (input.equals(CURRENT_COMMAND)) { - printCurrentCAP(); + printCurrentCap(); } else if (input.equals(SET_TARGET_COMMAND)) { - setTargetCAP(); + setTargetCap(); } else { System.out.println(ERROR_INVALID_COMMAND); } @@ -51,25 +51,25 @@ public void CAPCalculator() { /** * Prints out current CAP and number of graded MCs. */ - private void printCurrentCAP() { - double currentCAP = person.getCurrentTotalMcxGrade() / (double) person.getCurrentMcAfterSU(); - System.out.println("Your current now CAP is: " + formatCAPToString(currentCAP)); + private void printCurrentCap() { + double currentCap = person.getCurrentTotalMcxGrade() / (double) person.getCurrentMcAfterSU(); + System.out.println("Your current now CAP is: " + formatCapToString(currentCap)); System.out.println("Number of graded MCs taken is: " + person.getCurrentMcAfterSU()); } /** * Allow the user to set the target CAP that user want to achieve in the next given MCs. */ - private void setTargetCAP() { + private void setTargetCap() { Scanner in = new Scanner(System.in); try { System.out.println("What is your target CAP?"); - double targetCAP = Double.parseDouble(in.nextLine()); + double targetCap = Double.parseDouble(in.nextLine()); System.out.println("How many graded MCs you are taking to achieve the target CAP?"); int targetGradedMC = Integer.parseInt(in.nextLine()); - calculateResults(targetCAP, targetGradedMC); + calculateResults(targetCap, targetGradedMC); } catch (NullPointerException e) { System.out.println(ERROR_INVALID_COMMAND); System.out.println(AWAIT_COMMAND); @@ -79,16 +79,16 @@ private void setTargetCAP() { /** * Calculate what should be the user's minimum CAP in order to achieve user's target CAP. */ - private void calculateResults(double targetCAP,int targetGradedMC) { - int totalMCToTarget = person.getCurrentMcAfterSU() + targetGradedMC; - double targetCAPxTargetMC = (double) totalMCToTarget * targetCAP; - double neededCAP = (targetCAPxTargetMC - person.getCurrentTotalMcxGrade()) / (double) targetGradedMC; + private void calculateResults(double targetCap,int targetGradedMC) { + int totalMcToTarget = person.getCurrentMcAfterSU() + targetGradedMC; + double targetCapxTargetMC = (double) totalMcToTarget * targetCap; + double neededCap = (targetCapxTargetMC - person.getCurrentTotalMcxGrade()) / (double) targetGradedMC; - if (neededCAP <= 5) { - System.out.println("You should achieve a minimum CAP of " + formatCAPToString(neededCAP) + " for your next " - + targetGradedMC + " MCs to achieve your target CAP of " + targetCAP + "."); + if (neededCap <= 5) { + System.out.println("You should achieve a minimum CAP of " + formatCapToString(neededCap) + " for your next " + + targetGradedMC + " MCs to achieve your target CAP of " + targetCap + "."); } else { - System.out.println("OOPS!! Looks like you are not able to achieve your target CAP of " + targetCAP + System.out.println("OOPS!! Looks like you are not able to achieve your target CAP of " + targetCap + " with you target MCs of " + targetGradedMC + "."); } } @@ -99,11 +99,11 @@ private void calculateResults(double targetCAP,int targetGradedMC) { * @param academicPoint academic point to parse * @return string of academic point */ - private String formatCAPToString(double academicPoint) { + private String formatCapToString(double academicPoint) { if (isNaN(academicPoint)) { return "0"; } - return formatFinalCAP.format(academicPoint); + return formatFinalCap.format(academicPoint); } /** From c9c5d9bb16601f076053a6c91ccda56f6de5d419 Mon Sep 17 00:00:00 2001 From: jerroldlam <60382285+jerroldlam@users.noreply.github.com> Date: Sun, 4 Oct 2020 19:45:16 +0800 Subject: [PATCH 013/450] Rename PlanNUS.java to PlanNus.java --- src/main/java/seedu/duke/{PlanNUS.java => PlanNus.java} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/main/java/seedu/duke/{PlanNUS.java => PlanNus.java} (100%) diff --git a/src/main/java/seedu/duke/PlanNUS.java b/src/main/java/seedu/duke/PlanNus.java similarity index 100% rename from src/main/java/seedu/duke/PlanNUS.java rename to src/main/java/seedu/duke/PlanNus.java From f60f09e6dd4ab570a69ab13e855de25048f035f8 Mon Sep 17 00:00:00 2001 From: jerroldlam <60382285+jerroldlam@users.noreply.github.com> Date: Sun, 4 Oct 2020 19:53:25 +0800 Subject: [PATCH 014/450] Rename PlanNUSTest.java to PlanNusTest.java --- src/test/java/seedu/duke/{PlanNUSTest.java => PlanNusTest.java} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/test/java/seedu/duke/{PlanNUSTest.java => PlanNusTest.java} (100%) diff --git a/src/test/java/seedu/duke/PlanNUSTest.java b/src/test/java/seedu/duke/PlanNusTest.java similarity index 100% rename from src/test/java/seedu/duke/PlanNUSTest.java rename to src/test/java/seedu/duke/PlanNusTest.java From ae385e31091f6bb1d523f993c0bbef75bd123f58 Mon Sep 17 00:00:00 2001 From: Khenus Date: Sun, 4 Oct 2020 20:26:36 +0800 Subject: [PATCH 015/450] V0.2 Updated file structure for gradle checks --- src/main/java/seedu/duke/{PlanNus.java => Duke.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename src/main/java/seedu/duke/{PlanNus.java => Duke.java} (95%) diff --git a/src/main/java/seedu/duke/PlanNus.java b/src/main/java/seedu/duke/Duke.java similarity index 95% rename from src/main/java/seedu/duke/PlanNus.java rename to src/main/java/seedu/duke/Duke.java index 80f0721145..a1623431d5 100644 --- a/src/main/java/seedu/duke/PlanNus.java +++ b/src/main/java/seedu/duke/Duke.java @@ -3,7 +3,7 @@ import seedu.duke.moduledata.ModuleDatum; import seedu.duke.moduledata.ModuleInitializer; -public class PlanNus { +public class Duke { /** * Main entry-point for the java.duke.Duke application. */ From 157eee38009b63dd91f3c01fd0aa9f8fc1554680 Mon Sep 17 00:00:00 2001 From: Khenus Date: Sun, 4 Oct 2020 20:41:42 +0800 Subject: [PATCH 016/450] V0.2 Updated file structure, updated test output --- src/main/java/seedu/duke/Duke.java | 12 ++++++++++-- src/main/java/seedu/duke/moduledata/ModuleDatum.java | 4 +++- .../seedu/duke/moduledata/ModuleInitializer.java | 2 +- text-ui-test/EXPECTED.TXT | 11 ++--------- text-ui-test/input.txt | 2 +- 5 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/main/java/seedu/duke/Duke.java b/src/main/java/seedu/duke/Duke.java index a1623431d5..ebe5fea70e 100644 --- a/src/main/java/seedu/duke/Duke.java +++ b/src/main/java/seedu/duke/Duke.java @@ -3,15 +3,23 @@ import seedu.duke.moduledata.ModuleDatum; import seedu.duke.moduledata.ModuleInitializer; +import java.util.Scanner; + public class Duke { /** * Main entry-point for the java.duke.Duke application. */ public static void main(String[] args) { ModuleInitializer allModules = new ModuleInitializer(); - Integer idx = allModules.getModuleMap().get("CS1010"); + + Scanner input = new Scanner(System.in); + String modCode = input.nextLine(); + + Integer idx = allModules.getModuleMap().get(modCode); ModuleDatum cs1010Data = allModules.getModuleFullDetails()[idx]; - System.out.println(cs1010Data.toString()); + + System.out.println("Module loaded... Checking for CS1010 validity..."); + System.out.println(cs1010Data); } } diff --git a/src/main/java/seedu/duke/moduledata/ModuleDatum.java b/src/main/java/seedu/duke/moduledata/ModuleDatum.java index 2dbde109b4..a68ab9dca0 100644 --- a/src/main/java/seedu/duke/moduledata/ModuleDatum.java +++ b/src/main/java/seedu/duke/moduledata/ModuleDatum.java @@ -8,6 +8,8 @@ import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.ToStringBuilder; +import static org.apache.commons.lang3.builder.ToStringStyle.JSON_STYLE; + // "moduleCode", // "title", // "moduleCredit", @@ -84,7 +86,7 @@ public String getCorequisite() { @Override public String toString() { - return ToStringBuilder.reflectionToString(this); + return ToStringBuilder.reflectionToString(this, JSON_STYLE); } @Override diff --git a/src/main/java/seedu/duke/moduledata/ModuleInitializer.java b/src/main/java/seedu/duke/moduledata/ModuleInitializer.java index cb5e10570e..25e2c1330f 100644 --- a/src/main/java/seedu/duke/moduledata/ModuleInitializer.java +++ b/src/main/java/seedu/duke/moduledata/ModuleInitializer.java @@ -15,7 +15,7 @@ public class ModuleInitializer { public ModuleInitializer() { Gson gson = new Gson(); - InputStream in = ModuleInitializer.class.getResourceAsStream("/moduleData.json"); + InputStream in = ModuleInitializer.class.getResourceAsStream("/ModuleData.json"); Reader jsonReader = new InputStreamReader(in); moduleFullDetails = gson.fromJson(jsonReader, ModuleDatum[].class); diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 892cb6cae7..5188f5c817 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -1,9 +1,2 @@ -Hello from - ____ _ -| _ \ _ _| | _____ -| | | | | | | |/ / _ \ -| |_| | |_| | < __/ -|____/ \__,_|_|\_\___| - -What is your name? -Hello James Gosling +Module loaded... Checking for CS1010 validity... +{"additionalProperties":{},"attributes":[true,false,false,false,false,false,false,false,false],"corequisite":"","department":"Computer Science","faculty":"Computing","moduleCode":"CS1010","moduleCredit":4,"preclusion":"CS1010E, CS1010J, CS1010S, CS1010X, CS1010XCP, CS1101S","prerequisite":"","semester":[1,2],"title":"Programming Methodology"} diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt index f6ec2e9f95..d974d76eb5 100644 --- a/text-ui-test/input.txt +++ b/text-ui-test/input.txt @@ -1 +1 @@ -James Gosling \ No newline at end of file +CS1010 From dbf85f5aee1b2845850a70201cca0f505813cb02 Mon Sep 17 00:00:00 2001 From: Khenus Date: Sun, 4 Oct 2020 23:18:56 +0800 Subject: [PATCH 017/450] V0.3 Refactored Update CAP function --- .../java/seedu/duke/apps/AcademicPlanner.java | 183 ++++++++++-------- .../duke/exceptions/AcademicException.java | 18 ++ 2 files changed, 122 insertions(+), 79 deletions(-) create mode 100644 src/main/java/seedu/duke/exceptions/AcademicException.java diff --git a/src/main/java/seedu/duke/apps/AcademicPlanner.java b/src/main/java/seedu/duke/apps/AcademicPlanner.java index a1dfa369cf..c574a8cf0e 100644 --- a/src/main/java/seedu/duke/apps/AcademicPlanner.java +++ b/src/main/java/seedu/duke/apps/AcademicPlanner.java @@ -1,5 +1,6 @@ package seedu.duke.apps; +import seedu.duke.exceptions.AcademicException; import seedu.duke.moduledata.ModuleInitializer; import seedu.duke.objects.Module; import seedu.duke.objects.Person; @@ -9,9 +10,11 @@ import java.util.Scanner; public class AcademicPlanner { - private static final int STARTING_SEMESTER_INDEX = 1; private static final int FINAL_SEMESTER_INDEX = 10; + private static final int FROM_ADD = 1; + private static final int FROM_EDIT = 2; + private static final int FROM_REMOVE = 3; private static final String EXITING_CURRENT_COMMAND = "Exiting current command back to Academic Planner Main Menu."; private static final String ERROR_INVALID_COMMAND = "INVALID COMMAND"; private static final String ERROR_INVALID_SEMESTER_INDEX = "INVALID SEMESTER INDEX"; @@ -59,7 +62,11 @@ public void planner() { while (!inputs[0].equals(EXIT_COMMAND)) { if (inputs[0].equals(ADD_COMMAND)) { - addModule(scanner, inputs[1]); + try { + addModule(scanner, inputs[1]); + } catch (Exception e) { + System.out.println(e.getMessage()); + } } else if (inputs[0].equals(EDIT_COMMAND)) { editModule(scanner, inputs[1]); } else if (inputs[0].equals(REMOVE_COMMAND)) { @@ -83,56 +90,107 @@ public void planner() { * Validates user's input semester and grade. * If either is invalid, does not add module into user's academic calendar. */ - private void addModule(Scanner in, String moduleCode) { + private void addModule(Scanner in, String moduleCode) throws AcademicException { + if (!checkIfModOfferedByNus(moduleCode)) { + throw new AcademicException(moduleCode + ERROR_NOT_OFFERED); + } + + //Rename this + if (checkIfModTaken(moduleCode)) { + throw new AcademicException(ERROR_DUPLICATE_MOD); + } + + System.out.println("Semester you plan to take " + moduleCode.toUpperCase() + "?"); + String userInput = in.nextLine(); + + int semesterValue; try { - if (checkIfModOfferedByNus(moduleCode)) { + semesterValue = Integer.parseInt(userInput); + } catch (Exception e) { + throw new AcademicException(ERROR_INVALID_COMMAND); + } - if (checkIfModTaken(moduleCode)) { - System.out.println(ERROR_DUPLICATE_MOD); - System.out.println(EXITING_CURRENT_COMMAND); - } + if (!checkValidSemester(semesterValue)) { + throw new AcademicException(ERROR_INVALID_SEMESTER_INDEX); + } - System.out.println("Semester you plan to take " + moduleCode.toUpperCase() + "?"); - String userInput = in.nextLine(); - int semesterValue = Integer.parseInt(userInput); + System.out.println("Grade received for " + moduleCode.toUpperCase() + "?"); + String gradeValue = in.nextLine(); - if (!checkValidSemester(semesterValue)) { - System.out.println(ERROR_INVALID_SEMESTER_INDEX); - System.out.println(EXITING_CURRENT_COMMAND); - return; - } + if (!checkValidGrade(gradeValue)) { + throw new AcademicException(ERROR_INVALID_GRADE); + } - System.out.println("Grade received for " + moduleCode.toUpperCase() + "?"); - String gradeValue = in.nextLine(); - if (!checkValidGrade(gradeValue)) { - System.out.println(ERROR_INVALID_GRADE); - System.out.println(EXITING_CURRENT_COMMAND); - return; - } + int moduleCredit = getModuleCreditForModule(moduleCode); + Module newModuleToAdd = new Module(moduleCode, semesterValue, gradeValue, moduleCredit); + modulesList.add(newModuleToAdd); + modulesAddedMap.put(moduleCode, newModuleToAdd); - int moduleCredit = getModuleCreditForModule(moduleCode); - Module newModuleToAdd = new Module(moduleCode, semesterValue, gradeValue, moduleCredit); - modulesList.add(newModuleToAdd); - modulesAddedMap.put(moduleCode, newModuleToAdd); + updateCap(FROM_ADD, newModuleToAdd); - //Incrementing total MC regardless of SU - currentPerson.setCurrentMc(currentPerson.getCurrentMc() + moduleCredit); + System.out.println(newModuleToAdd.getModuleCode() + + " added into Semester " + semesterValue + "."); + } - //Incrementing total MC after SU only if module is not SU - if (newModuleToAdd.getCap() != -1.00) { - currentPerson.setCurrentMcAfterSU(currentPerson.getCurrentMcAfterSU() + moduleCredit); - double newMCxGrade = newModuleToAdd.getCap() * moduleCredit; - currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() + newMCxGrade); - } - System.out.println(newModuleToAdd.getModuleCode() - + " added into Semester " + semesterValue + "."); - } else { - System.out.println(moduleCode + ERROR_NOT_OFFERED); - System.out.println(EXITING_CURRENT_COMMAND); + /** + * Update Cap after every change in current module list + * + * @param type An int storing the type of function calling update cap + * @param currentModule A Module object storing current module + * @param caps An optional number of double storing old cap and new cap (If you send in old, must send in new also) + */ + /** Look into throwing error and short circuiting this command */ + private void updateCap(int type, Module currentModule, double ... caps) { + // Caps is an array, 0 being oldCap, 1 being newCap + if (type == FROM_ADD) { + //Incrementing total MC regardless of SU + int moduleCredit = currentModule.getModuleCredit(); + currentPerson.setCurrentMc(currentPerson.getCurrentMc() + moduleCredit); + + //Incrementing total MC after SU only if module is not SU + if (currentModule.getCap() != -1.00) { + currentPerson.setCurrentMcAfterSU(currentPerson.getCurrentMcAfterSU() + moduleCredit); + double newMCxGrade = currentModule.getCap() * moduleCredit; + currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() + newMCxGrade); + } + } else if (type == FROM_REMOVE) { + //Decreasing total MC regardless of SU + currentPerson.setCurrentMc(currentPerson.getCurrentMc() + - currentModule.getModuleCredit()); + + //Decreasing total MC after SU only if module is not SU + if (currentModule.getCap() != -1.00) { + currentPerson.setCurrentMcAfterSU(currentPerson.getCurrentMcAfterSU() + - currentModule.getModuleCredit()); + double mcxGradeToMinus = currentModule.getCap() * currentModule.getModuleCredit(); + currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() + - mcxGradeToMinus); + } + } else if (type == FROM_EDIT) { + if (caps[0] == -1.00 && caps[1] != -1.00) { + //Case where previously was SU but new is not SU + currentPerson.setCurrentMcAfterSU(currentPerson.getCurrentMcAfterSU() + + currentModule.getModuleCredit()); + double newMCxGrade = caps[1] * currentModule.getModuleCredit(); + currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() + + newMCxGrade); + + } else if (caps[0] != -1.00 && caps[1] == -1.00) { + //Case where previously was not SU but now is SU + currentPerson.setCurrentMcAfterSU(currentPerson.getCurrentMcAfterSU() + - currentModule.getModuleCredit()); + double mcxGradeToMinus = caps[0] * currentModule.getModuleCredit(); + currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() + - mcxGradeToMinus); + + } else if (caps[0] != caps[1]) { + //Case where previously and new cap are not SU but not the same + double oldMCxGrade = caps[0] * currentModule.getModuleCredit(); + double newMCxGrade = caps[1] * currentModule.getModuleCredit(); + double mcxGradeToSet = newMCxGrade - oldMCxGrade; + currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() + + mcxGradeToSet); } - } catch (Exception e) { - System.out.println(ERROR_INVALID_COMMAND); - System.out.println(EXITING_CURRENT_COMMAND); } } @@ -188,30 +246,8 @@ private void editModule(Scanner in, String moduleCode) { item.setGrade(gradeValue); newCap = item.getCap(); - if (oldCap == -1.00 && newCap != -1.00) { - //Case where previously was SU but new is not SU - currentPerson.setCurrentMcAfterSU(currentPerson.getCurrentMcAfterSU() - + item.getModuleCredit()); - double newMCxGrade = newCap * item.getModuleCredit(); - currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() - + newMCxGrade); - - } else if (oldCap != -1.00 && newCap == -1.00) { - //Case where previously was not SU but now is SU - currentPerson.setCurrentMcAfterSU(currentPerson.getCurrentMcAfterSU() - - item.getModuleCredit()); - double mcxGradeToMinus = oldCap * item.getModuleCredit(); - currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() - - mcxGradeToMinus); - - } else if (oldCap != newCap) { - //Case where previously and new cap are not SU but not the same - double oldMCxGrade = oldCap * item.getModuleCredit(); - double newMCxGrade = newCap * item.getModuleCredit(); - double mcxGradeToSet = newMCxGrade - oldMCxGrade; - currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() - + mcxGradeToSet); - } + updateCap(FROM_EDIT, item, oldCap, newCap); + break; } } @@ -244,18 +280,7 @@ private void removeModule(String moduleCode) { if (item.getModuleCode().equals(moduleCode)) { System.out.println(item.getModuleCode() + " has been removed from the list"); - //Decreasing total MC regardless of SU - currentPerson.setCurrentMc(currentPerson.getCurrentMc() - - item.getModuleCredit()); - - //Decreasing total MC after SU only if module is not SU - if (item.getCap() != -1.00) { - currentPerson.setCurrentMcAfterSU(currentPerson.getCurrentMcAfterSU() - - item.getModuleCredit()); - double mcxGradeToMinus = item.getCap() * item.getModuleCredit(); - currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() - - mcxGradeToMinus); - } + updateCap(FROM_REMOVE, item); modulesList.remove(item); break; diff --git a/src/main/java/seedu/duke/exceptions/AcademicException.java b/src/main/java/seedu/duke/exceptions/AcademicException.java new file mode 100644 index 0000000000..f5e30ecc30 --- /dev/null +++ b/src/main/java/seedu/duke/exceptions/AcademicException.java @@ -0,0 +1,18 @@ +package seedu.duke.exceptions; + +public class AcademicException extends Exception { + private String errorMessage; + + private static final String NEW_LINE = "\n"; + private static final String EXITING_CURRENT_COMMAND = "Exiting current command back to Academic Planner Main Menu."; + + public AcademicException(String errorMessage) { + String stringToPrint = errorMessage + NEW_LINE + EXITING_CURRENT_COMMAND; + this.errorMessage = stringToPrint; + } + + @Override + public String getMessage() { + return this.errorMessage; + } +} From db6805c5d1bcfabc98c6f320229b99ce06fe9061 Mon Sep 17 00:00:00 2001 From: Khenus <56764814+Khenus@users.noreply.github.com> Date: Sun, 4 Oct 2020 23:36:46 +0800 Subject: [PATCH 018/450] Update AcademicPlanner.java --- src/main/java/seedu/duke/apps/AcademicPlanner.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/seedu/duke/apps/AcademicPlanner.java b/src/main/java/seedu/duke/apps/AcademicPlanner.java index c574a8cf0e..95599acd00 100644 --- a/src/main/java/seedu/duke/apps/AcademicPlanner.java +++ b/src/main/java/seedu/duke/apps/AcademicPlanner.java @@ -139,8 +139,8 @@ private void addModule(Scanner in, String moduleCode) throws AcademicException { * @param currentModule A Module object storing current module * @param caps An optional number of double storing old cap and new cap (If you send in old, must send in new also) */ - /** Look into throwing error and short circuiting this command */ - private void updateCap(int type, Module currentModule, double ... caps) { + // Look into throwing error and short circuiting this command + private void updateCap(int type, Module currentModule, double ...caps) { // Caps is an array, 0 being oldCap, 1 being newCap if (type == FROM_ADD) { //Incrementing total MC regardless of SU From c521bd1dc55575fe7c7280ed44ff6d95c3c0dd55 Mon Sep 17 00:00:00 2001 From: Khenus <56764814+Khenus@users.noreply.github.com> Date: Sun, 4 Oct 2020 23:40:12 +0800 Subject: [PATCH 019/450] Update AcademicPlanner.java --- src/main/java/seedu/duke/apps/AcademicPlanner.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/seedu/duke/apps/AcademicPlanner.java b/src/main/java/seedu/duke/apps/AcademicPlanner.java index 95599acd00..6d7e849fd7 100644 --- a/src/main/java/seedu/duke/apps/AcademicPlanner.java +++ b/src/main/java/seedu/duke/apps/AcademicPlanner.java @@ -133,14 +133,14 @@ private void addModule(Scanner in, String moduleCode) throws AcademicException { } /** - * Update Cap after every change in current module list + * Update Cap after every change in current module list. * * @param type An int storing the type of function calling update cap * @param currentModule A Module object storing current module * @param caps An optional number of double storing old cap and new cap (If you send in old, must send in new also) */ // Look into throwing error and short circuiting this command - private void updateCap(int type, Module currentModule, double ...caps) { + private void updateCap(int type, Module currentModule, double... caps) { // Caps is an array, 0 being oldCap, 1 being newCap if (type == FROM_ADD) { //Incrementing total MC regardless of SU From 01654df84aef6a39aa5ad11074bcdf20c1b5444f Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Mon, 5 Oct 2020 16:29:24 +0800 Subject: [PATCH 020/450] Refactor and clean up Academic Planner code --- .../java/seedu/duke/apps/AcademicPlanner.java | 272 +++++++++++------- 1 file changed, 168 insertions(+), 104 deletions(-) diff --git a/src/main/java/seedu/duke/apps/AcademicPlanner.java b/src/main/java/seedu/duke/apps/AcademicPlanner.java index 6d7e849fd7..342e90bd22 100644 --- a/src/main/java/seedu/duke/apps/AcademicPlanner.java +++ b/src/main/java/seedu/duke/apps/AcademicPlanner.java @@ -4,17 +4,24 @@ import seedu.duke.moduledata.ModuleInitializer; import seedu.duke.objects.Module; import seedu.duke.objects.Person; - import java.util.ArrayList; import java.util.HashMap; import java.util.Scanner; public class AcademicPlanner { + private static final int STARTING_SEMESTER_INDEX = 1; private static final int FINAL_SEMESTER_INDEX = 10; + private static final int COMMAND_INDEX = 0; + private static final int MODULE_CODE_INDEX = 1; private static final int FROM_ADD = 1; private static final int FROM_EDIT = 2; private static final int FROM_REMOVE = 3; + private static final String COMMAND_REGEX = " "; + private static final String EDIT_SEMESTER = "1"; + private static final String EDIT_GRADE = "2"; + private static final String PROMPT_NEW_SEMESTER_VALUE = "Enter the new semester value: "; + private static final String PROMPT_NEW_GRADE = "Enter the new grade: "; private static final String EXITING_CURRENT_COMMAND = "Exiting current command back to Academic Planner Main Menu."; private static final String ERROR_INVALID_COMMAND = "INVALID COMMAND"; private static final String ERROR_INVALID_SEMESTER_INDEX = "INVALID SEMESTER INDEX"; @@ -29,6 +36,7 @@ public class AcademicPlanner { private static final String REMOVE_COMMAND = "REMOVE"; private static final String VIEW_COMMAND = "VIEW"; private static final String EXIT_COMMAND = "EXIT"; + private static final String EXIT_MESSAGE = "Thank you for using Academic Planner!"; private static final String COMMANDS_LIST = "Available commands are: \n" + " add \n" + " edit \n" @@ -36,11 +44,13 @@ public class AcademicPlanner { + " view\n" + " exit\n" + "Type a command to continue..."; - - private ModuleInitializer allModules; - private ArrayList modulesList; - private HashMap modulesAddedMap; - private Person currentPerson; + public static final String PROMPT_EDIT_CHOICES = "Enter the number corresponding to the feature you wish to edit:\n" + + "1) Semester\n" + + "2) Grade"; + private final ModuleInitializer allModules; + private final ArrayList modulesList; + private final HashMap modulesAddedMap; + private final Person currentPerson; public AcademicPlanner(ModuleInitializer allModules, Person currentPerson) { this.allModules = allModules; @@ -60,28 +70,34 @@ public void planner() { String fullInput = scanner.nextLine().toUpperCase(); String[] inputs = fullInput.split(" "); - while (!inputs[0].equals(EXIT_COMMAND)) { - if (inputs[0].equals(ADD_COMMAND)) { - try { - addModule(scanner, inputs[1]); - } catch (Exception e) { - System.out.println(e.getMessage()); + while (!inputs[COMMAND_INDEX].equals(EXIT_COMMAND)) { + try { + switch (inputs[COMMAND_INDEX]) { + case ADD_COMMAND: + addModule(scanner, inputs[MODULE_CODE_INDEX]); + break; + case EDIT_COMMAND: + editModule(scanner, inputs[MODULE_CODE_INDEX]); + break; + case REMOVE_COMMAND: + removeModule(inputs[MODULE_CODE_INDEX]); + break; + case VIEW_COMMAND: + // printCalendar(); + break; + default: + System.out.println(ERROR_INVALID_COMMAND); + System.out.println(EXITING_CURRENT_COMMAND); } - } else if (inputs[0].equals(EDIT_COMMAND)) { - editModule(scanner, inputs[1]); - } else if (inputs[0].equals(REMOVE_COMMAND)) { - removeModule(inputs[1]); - } else if (inputs[0].equals(VIEW_COMMAND)) { - // printCalendar(); - } else { + } catch (AcademicException e) { System.out.println(ERROR_INVALID_COMMAND); System.out.println(EXITING_CURRENT_COMMAND); } printCommandsList(); fullInput = scanner.nextLine().toUpperCase(); - inputs = fullInput.split(" "); + inputs = fullInput.split(COMMAND_REGEX); } - System.out.println("Thank you for using Academic Planner!"); + System.out.println(EXIT_MESSAGE); } /** @@ -89,14 +105,16 @@ public void planner() { * else does not add module into user's academic calendar. * Validates user's input semester and grade. * If either is invalid, does not add module into user's academic calendar. + * + * @param in scanner class + * @param moduleCode string of module code */ private void addModule(Scanner in, String moduleCode) throws AcademicException { - if (!checkIfModOfferedByNus(moduleCode)) { + if (!isModOfferedByNus(moduleCode)) { throw new AcademicException(moduleCode + ERROR_NOT_OFFERED); } - //Rename this - if (checkIfModTaken(moduleCode)) { + if (isModTakenByUser(moduleCode)) { throw new AcademicException(ERROR_DUPLICATE_MOD); } @@ -110,24 +128,33 @@ private void addModule(Scanner in, String moduleCode) throws AcademicException { throw new AcademicException(ERROR_INVALID_COMMAND); } - if (!checkValidSemester(semesterValue)) { + if (!isValidSemester(semesterValue)) { throw new AcademicException(ERROR_INVALID_SEMESTER_INDEX); } System.out.println("Grade received for " + moduleCode.toUpperCase() + "?"); String gradeValue = in.nextLine(); - if (!checkValidGrade(gradeValue)) { + if (!isValidGrade(gradeValue)) { throw new AcademicException(ERROR_INVALID_GRADE); } - int moduleCredit = getModuleCreditForModule(moduleCode); + addModuleToUser(moduleCode, semesterValue, gradeValue, moduleCredit); + } + + /** + * Creates a new instance of a module of the parameters and adds it into the hashmap and array list of user modules. + * + * @param moduleCode module to be added + * @param semesterValue semester that module is taken in + * @param gradeValue grade achieved for module + * @param moduleCredit module's credit weightage + */ + private void addModuleToUser(String moduleCode, int semesterValue, String gradeValue, int moduleCredit) { Module newModuleToAdd = new Module(moduleCode, semesterValue, gradeValue, moduleCredit); modulesList.add(newModuleToAdd); modulesAddedMap.put(moduleCode, newModuleToAdd); - updateCap(FROM_ADD, newModuleToAdd); - System.out.println(newModuleToAdd.getModuleCode() + " added into Semester " + semesterValue + "."); } @@ -139,7 +166,7 @@ private void addModule(Scanner in, String moduleCode) throws AcademicException { * @param currentModule A Module object storing current module * @param caps An optional number of double storing old cap and new cap (If you send in old, must send in new also) */ - // Look into throwing error and short circuiting this command + //TODO Look into throwing error and short circuiting this command private void updateCap(int type, Module currentModule, double... caps) { // Caps is an array, 0 being oldCap, 1 being newCap if (type == FROM_ADD) { @@ -197,74 +224,104 @@ private void updateCap(int type, Module currentModule, double... caps) { /** * Allows user to edit the module entry of his academic calendar. * Parameters allowed to change are semesterIndex or Grade. + * + * @param in scanner + * @param moduleCode module code to edit */ - private void editModule(Scanner in, String moduleCode) { + private void editModule(Scanner in, String moduleCode) throws AcademicException { try { - if (checkIfModTaken(moduleCode)) { - System.out.println("Enter the number corresponding to the feature you wish to edit:" - + "\n1) Semester\n2) Grade"); + if (isModTakenByUser(moduleCode)) { + System.out.println(PROMPT_EDIT_CHOICES); String choice = in.nextLine(); - if (choice.equals("1")) { - System.out.println("Enter the new semester value: "); - String newValue = in.nextLine(); - - if (!checkValidSemester(Integer.parseInt(newValue))) { - System.out.println(ERROR_INVALID_SEMESTER_INDEX); - System.out.println(EXITING_CURRENT_COMMAND); - return; - } - - for (Module item : modulesList) { - if (item.getModuleCode().equals(moduleCode)) { - item.setSemesterIndex(Integer.parseInt(newValue)); - break; - } - } - - modulesAddedMap.get(moduleCode).setSemesterIndex(Integer.parseInt(newValue)); - System.out.println("Semester for " + moduleCode + " successfully updated!"); + if (choice.equals(EDIT_SEMESTER)) { + editModuleSemester(in, moduleCode); + } else if (choice.equals(EDIT_GRADE)) { + editModuleGrade(in, moduleCode); + } else { + throw new AcademicException(ERROR_EDIT_OPTION); + } + } else { + throw new AcademicException(ERROR_NOT_ADDED); + } + } catch (Exception e) { + throw new AcademicException(ERROR_INVALID_COMMAND); + } + } - } else if (choice.equals("2")) { - System.out.println("Enter the new grade: "); - String gradeValue = in.nextLine().toUpperCase(); + /** + * Changes the current grade of module to the input of the user. + * Module must exist in user's list and hashmap + * + * @param in scanner + * @param moduleCode code of module to edit the grade + * @throws AcademicException invalid grade + */ + private void editModuleGrade(Scanner in, String moduleCode) throws AcademicException { + System.out.println(PROMPT_NEW_GRADE); + String gradeValue = in.nextLine().toUpperCase(); - if (!checkValidGrade(gradeValue)) { - System.out.println(ERROR_INVALID_GRADE); - System.out.println(EXITING_CURRENT_COMMAND); - return; - } + if (!isValidGrade(gradeValue)) { + throw new AcademicException(ERROR_INVALID_GRADE); + } - double oldCap; - double newCap; + System.out.println(moduleCode); + updateModuleGrade(moduleCode, gradeValue); + System.out.println("Grade for " + moduleCode + " successfully updated!"); + } - System.out.println(moduleCode); + /** + * Updates user's module with new grade and updates user's Cap. + * + * @param moduleCode module to edit + * @param gradeValue grade to edit to + */ + private void updateModuleGrade(String moduleCode, String gradeValue) { + for (Module item : modulesList) { + if (item.getModuleCode().equals(moduleCode)) { + double oldCap = item.getCap(); + item.setGrade(gradeValue); + double newCap = item.getCap(); + updateCap(FROM_EDIT, item, oldCap, newCap); + break; + } + } + modulesAddedMap.get(moduleCode).setGrade(gradeValue); + } - for (Module item : modulesList) { - if (item.getModuleCode().equals(moduleCode)) { - oldCap = item.getCap(); - item.setGrade(gradeValue); - newCap = item.getCap(); + /** + * Edits module semester taken when module is in user's list. + * Module must exist in user's module list and hashmap. + * + * @param in scanner + * @param moduleCode module to edit + * @throws AcademicException invalid semester index + */ + private void editModuleSemester(Scanner in, String moduleCode) throws AcademicException { + System.out.println(PROMPT_NEW_SEMESTER_VALUE); + String newValue = in.nextLine(); - updateCap(FROM_EDIT, item, oldCap, newCap); + if (!isValidSemester(Integer.parseInt(newValue))) { + throw new AcademicException(ERROR_INVALID_SEMESTER_INDEX); + } - break; - } - } - modulesAddedMap.get(moduleCode).setGrade(gradeValue); + updateModuleSemester(moduleCode, newValue); + modulesAddedMap.get(moduleCode).setSemesterIndex(Integer.parseInt(newValue)); + System.out.println("Semester for " + moduleCode + " successfully updated!"); + } - System.out.println("Grade for " + moduleCode + " successfully updated!"); - } else { - System.out.println(ERROR_EDIT_OPTION); - System.out.println(EXITING_CURRENT_COMMAND); - } - } else { - System.out.println(ERROR_NOT_ADDED); - System.out.println(EXITING_CURRENT_COMMAND); + /** + * Finds the module and updates the semester taken. + * + * @param moduleCode module to edit + * @param newValue new semester index + */ + private void updateModuleSemester(String moduleCode, String newValue) { + for (Module item : modulesList) { + if (item.getModuleCode().equals(moduleCode)) { + item.setSemesterIndex(Integer.parseInt(newValue)); + return; } - } catch (Exception e) { - System.out.println(ERROR_INVALID_COMMAND); - System.out.println(EXITING_CURRENT_COMMAND); } } @@ -272,37 +329,44 @@ private void editModule(Scanner in, String moduleCode) { * Removes moduleCode from user's academic calendar if it exists, * else prompts user of error. */ - private void removeModule(String moduleCode) { + private void removeModule(String moduleCode) throws AcademicException { try { - if (checkIfModTaken(moduleCode)) { + if (isModTakenByUser(moduleCode)) { modulesAddedMap.remove(moduleCode); - for (Module item : modulesList) { - if (item.getModuleCode().equals(moduleCode)) { - System.out.println(item.getModuleCode() + " has been removed from the list"); - - updateCap(FROM_REMOVE, item); - - modulesList.remove(item); - break; - } - } + removeModuleFromUserModuleList(moduleCode); } else { - System.out.println(ERROR_NOT_ADDED); - System.out.println(EXITING_CURRENT_COMMAND); + throw new AcademicException(ERROR_NOT_ADDED); } } catch (Exception e) { System.out.println(ERROR_INVALID_COMMAND); System.out.println(EXITING_CURRENT_COMMAND); } } - + + /** + * Removes module from user's module list. + * Module must exist in user's module list. + * + * @param moduleCode module to remove. + */ + private void removeModuleFromUserModuleList(String moduleCode) { + for (Module item : modulesList) { + if (item.getModuleCode().equals(moduleCode)) { + System.out.println(item.getModuleCode() + " has been removed from the list"); + updateCap(FROM_REMOVE, item); + modulesList.remove(item); + return; + } + } + } + /** * Returns true if module code is offered by NUS, * else returns false. * @param moduleCode input module code * @return boolean of module code in ModuleDatum */ - private boolean checkIfModOfferedByNus(String moduleCode) { + private boolean isModOfferedByNus(String moduleCode) { return (allModules.getModuleMap().get(moduleCode) > -1); } @@ -313,7 +377,7 @@ private boolean checkIfModOfferedByNus(String moduleCode) { * @param moduleCode moduleCode to check * @return boolean */ - private boolean checkIfModTaken(String moduleCode) { + private boolean isModTakenByUser(String moduleCode) { return (modulesAddedMap.containsKey(moduleCode)); } @@ -324,7 +388,7 @@ private boolean checkIfModTaken(String moduleCode) { * @param semesterIndex semesterIndex to check * @return false */ - private boolean checkValidSemester(int semesterIndex) { + private boolean isValidSemester(int semesterIndex) { return (semesterIndex >= STARTING_SEMESTER_INDEX && semesterIndex <= FINAL_SEMESTER_INDEX); } @@ -335,7 +399,7 @@ private boolean checkValidSemester(int semesterIndex) { * @param grade grade to check * @return boolean */ - private boolean checkValidGrade(String grade) { + private boolean isValidGrade(String grade) { switch (grade.toUpperCase()) { case "A+": //Fallthrough From 153b7a8787972df4cc995cd51862a34c39872d57 Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Mon, 5 Oct 2020 16:43:28 +0800 Subject: [PATCH 021/450] Update skeleton Documentation --- docs/AboutUs.md | 14 +++++++------- docs/team/PlanNus.md | 13 +++++++++++++ docs/team/johndoe.md | 6 ------ src/main/java/seedu/duke/Duke.java | 3 +-- 4 files changed, 21 insertions(+), 15 deletions(-) create mode 100644 docs/team/PlanNus.md delete mode 100644 docs/team/johndoe.md diff --git a/docs/AboutUs.md b/docs/AboutUs.md index 69a5333e88..29a89b153e 100644 --- a/docs/AboutUs.md +++ b/docs/AboutUs.md @@ -1,9 +1,9 @@ # About us -Display | Name | Role | Github Profile ----|:---:|:---:|:---: -![](https://avatars3.githubusercontent.com/u/60382285?s=400) | Jerrold Lam | Team Leader | [jerroldlam](https://github.com/jerroldlam "Github User Profile") -![](https://avatars3.githubusercontent.com/u/56764814?s=100) | Khenus Tan | Git and Integration Expert | [Khenus](https://github.com/Khenus "Github User Profile") -![](https://avatars3.githubusercontent.com/u/60414537?s=100) | Harry Lee | Deliverables Expert | [harryleecp](https://github.com/harryleecp "Github User Profile") -![](https://avatars3.githubusercontent.com/u/57383789?s=100) | Ju Zihao | Scheduler Expert | [JuZihao](https://github.com/JuZihao "Github User Profile") -![](https://avatars3.githubusercontent.com/u/49282734?s=400) | Vanessa Kang | Code Quality Expert | [Vanessa-Kang](https://github.com/vanessa-kang "Github User Profile") +Display | Name | Github Profile +---|:---:|:---: +![](https://avatars3.githubusercontent.com/u/60382285?s=400) | Jerrold Lam | [jerroldlam](https://github.com/jerroldlam "Github User Profile") +![](https://avatars3.githubusercontent.com/u/56764814?s=100) | Khenus Tan | [Khenus](https://github.com/Khenus "Github User Profile") +![](https://avatars3.githubusercontent.com/u/60414537?s=100) | Harry Lee | [harryleecp](https://github.com/harryleecp "Github User Profile") +![](https://avatars3.githubusercontent.com/u/57383789?s=100) | Ju Zihao | [JuZihao](https://github.com/JuZihao "Github User Profile") +![](https://avatars3.githubusercontent.com/u/49282734?s=400) | Vanessa Kang | [Vanessa-Kang](https://github.com/vanessa-kang "Github User Profile") diff --git a/docs/team/PlanNus.md b/docs/team/PlanNus.md new file mode 100644 index 0000000000..5768fdbe37 --- /dev/null +++ b/docs/team/PlanNus.md @@ -0,0 +1,13 @@ +# PlanNus - Project Portfolio Page + +## Overview + + +### Summary of Contributions +Name | Contribution +:---:|:---: +Jerrold Lam | Add Module in Academic Planner, module and person object +Khenus Tan | JSON object data from NUSMODs +Harry Lee | Edit, Remove Module in Academic Planner +Ju Zihao | Cap Calculator +Vanessa Kang | Calendar Printer \ No newline at end of file diff --git a/docs/team/johndoe.md b/docs/team/johndoe.md deleted file mode 100644 index ab75b391b8..0000000000 --- a/docs/team/johndoe.md +++ /dev/null @@ -1,6 +0,0 @@ -# John Doe - Project Portfolio Page - -## Overview - - -### Summary of Contributions diff --git a/src/main/java/seedu/duke/Duke.java b/src/main/java/seedu/duke/Duke.java index ebe5fea70e..2ac9981c78 100644 --- a/src/main/java/seedu/duke/Duke.java +++ b/src/main/java/seedu/duke/Duke.java @@ -2,12 +2,11 @@ import seedu.duke.moduledata.ModuleDatum; import seedu.duke.moduledata.ModuleInitializer; - import java.util.Scanner; public class Duke { /** - * Main entry-point for the java.duke.Duke application. + * Main entry-point for the PlanNus application. */ public static void main(String[] args) { ModuleInitializer allModules = new ModuleInitializer(); From b80445f976ccb3c257b78c9dd2df23facfc9e577 Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Mon, 5 Oct 2020 17:43:51 +0800 Subject: [PATCH 022/450] Update portfolio --- docs/team/Harry.md | 7 +++++++ docs/team/Khenus.md | 7 +++++++ docs/team/Lam.md | 7 +++++++ docs/team/PlanNus.md | 13 ------------- docs/team/Vanessa.md | 7 +++++++ docs/team/Zihao.md | 7 +++++++ 6 files changed, 35 insertions(+), 13 deletions(-) create mode 100644 docs/team/Harry.md create mode 100644 docs/team/Khenus.md create mode 100644 docs/team/Lam.md delete mode 100644 docs/team/PlanNus.md create mode 100644 docs/team/Vanessa.md create mode 100644 docs/team/Zihao.md diff --git a/docs/team/Harry.md b/docs/team/Harry.md new file mode 100644 index 0000000000..d078b1a4d4 --- /dev/null +++ b/docs/team/Harry.md @@ -0,0 +1,7 @@ +# Harry Lee - Project Portfolio Page + +## Overview + +### Summary of Contributions + +Edit, Remove Module in Academic Planner diff --git a/docs/team/Khenus.md b/docs/team/Khenus.md new file mode 100644 index 0000000000..3bf5f51791 --- /dev/null +++ b/docs/team/Khenus.md @@ -0,0 +1,7 @@ +# Khenus Tan - Project Portfolio Page + +## Overview + +### Summary of Contributions + +JSON object data from NUSMODs diff --git a/docs/team/Lam.md b/docs/team/Lam.md new file mode 100644 index 0000000000..73e4bf8e1b --- /dev/null +++ b/docs/team/Lam.md @@ -0,0 +1,7 @@ +# Jerrold Lam - Project Portfolio Page + +## Overview + +### Summary of Contributions + +Add Module in Academic Planner, module and person object diff --git a/docs/team/PlanNus.md b/docs/team/PlanNus.md deleted file mode 100644 index 5768fdbe37..0000000000 --- a/docs/team/PlanNus.md +++ /dev/null @@ -1,13 +0,0 @@ -# PlanNus - Project Portfolio Page - -## Overview - - -### Summary of Contributions -Name | Contribution -:---:|:---: -Jerrold Lam | Add Module in Academic Planner, module and person object -Khenus Tan | JSON object data from NUSMODs -Harry Lee | Edit, Remove Module in Academic Planner -Ju Zihao | Cap Calculator -Vanessa Kang | Calendar Printer \ No newline at end of file diff --git a/docs/team/Vanessa.md b/docs/team/Vanessa.md new file mode 100644 index 0000000000..eec0b36ca4 --- /dev/null +++ b/docs/team/Vanessa.md @@ -0,0 +1,7 @@ +# Vanessa - Project Portfolio Page + +## Overview + +### Summary of Contributions + +Calendar Printer \ No newline at end of file diff --git a/docs/team/Zihao.md b/docs/team/Zihao.md new file mode 100644 index 0000000000..d718dc9c6d --- /dev/null +++ b/docs/team/Zihao.md @@ -0,0 +1,7 @@ +# Ju Zihao - Project Portfolio Page + +## Overview + +### Summary of Contributions + +Cap Calculator From eb15ee9bcedec335e20a7121fcaec1a2f277cd9a Mon Sep 17 00:00:00 2001 From: Khenus Date: Tue, 6 Oct 2020 01:22:19 +0800 Subject: [PATCH 023/450] V0.4 WIP Parser and UI --- src/main/java/seedu/duke/Duke.java | 87 +++++++++++++++++-- .../java/seedu/duke/apps/AcademicPlanner.java | 48 ++++++---- src/main/java/seedu/duke/apps/App.java | 17 ++++ .../java/seedu/duke/apps/CapCalculator.java | 2 +- .../ModuleInitializer.java | 9 +- .../duke/exceptions/AppParserException.java | 14 +++ .../FullModule.java} | 14 ++- .../{Module.java => PartialModule.java} | 6 +- src/main/java/seedu/duke/objects/Person.java | 12 +-- .../java/seedu/duke/parser/AppParser.java | 52 +++++++++++ text-ui-test/EXPECTED.TXT | 27 +++++- text-ui-test/input.txt | 8 +- 12 files changed, 247 insertions(+), 49 deletions(-) create mode 100644 src/main/java/seedu/duke/apps/App.java rename src/main/java/seedu/duke/{moduledata => apps}/ModuleInitializer.java (76%) create mode 100644 src/main/java/seedu/duke/exceptions/AppParserException.java rename src/main/java/seedu/duke/{moduledata/ModuleDatum.java => objects/FullModule.java} (91%) rename src/main/java/seedu/duke/objects/{Module.java => PartialModule.java} (93%) create mode 100644 src/main/java/seedu/duke/parser/AppParser.java diff --git a/src/main/java/seedu/duke/Duke.java b/src/main/java/seedu/duke/Duke.java index 2ac9981c78..1bcb2588d8 100644 --- a/src/main/java/seedu/duke/Duke.java +++ b/src/main/java/seedu/duke/Duke.java @@ -1,24 +1,93 @@ package seedu.duke; -import seedu.duke.moduledata.ModuleDatum; -import seedu.duke.moduledata.ModuleInitializer; +import seedu.duke.apps.App; +import seedu.duke.exceptions.AppParserException; +import seedu.duke.objects.FullModule; +import seedu.duke.apps.ModuleInitializer; +import seedu.duke.objects.Person; +import seedu.duke.parser.AppParser; + import java.util.Scanner; public class Duke { /** * Main entry-point for the PlanNus application. */ + + private static ModuleInitializer allModules; + private static Person currentPerson; + public static void main(String[] args) { - ModuleInitializer allModules = new ModuleInitializer(); + allModules = new ModuleInitializer(); + currentPerson = new Person("Bob"); - Scanner input = new Scanner(System.in); - String modCode = input.nextLine(); +// Scanner input = new Scanner(System.in); +// String modCode = input.nextLine(); +// +// Integer idx = allModules.getModuleMap().get(modCode); +// FullModule cs1010Data = allModules.getModuleFullDetails()[idx]; +// +// System.out.println("PartialModule loaded... Checking for CS1010 validity..."); +// System.out.println(cs1010Data); - Integer idx = allModules.getModuleMap().get(modCode); - ModuleDatum cs1010Data = allModules.getModuleFullDetails()[idx]; + new Duke().run(); + } +// private Storage storage; +// private TaskList tasks; +// private Ui ui; + + /** + * Constructor for Duke to allow for initialising of save files + * + * @param filePath A String containing the path of the save file + */ +// public Duke(String filePath) { +// ui = new Ui(); +// storage = new Storage(filePath); +// try { +// tasks = new TaskList(storage.load()); +// } catch (DukeException e) { +// ui.showError(e.getErrorMessage()); +// tasks = new TaskList(); +// } +// } - System.out.println("Module loaded... Checking for CS1010 validity..."); - System.out.println(cs1010Data); + /** + * A continuously running function to allow for user input and task operations + */ + public void run() { +// ui.showWelcome(); + System.out.println("hello welcome to plannus"); + boolean isExit = false; + Scanner scanner = new Scanner(System.in); + + while (!isExit) { + try { +// String fullCommand = ui.readCommand(); +// Command c = Parser.parse(fullCommand); +// c.execute(tasks, ui, storage); + String userInput = scanner.nextLine(); + App selectedApp = AppParser.parse(userInput, allModules, currentPerson); + selectedApp.run(); + isExit = selectedApp.isExit(); + System.out.println("hello welcome back to plannus"); +// storage.write(tasks); + } catch (Exception e) { +// ui.showError(e.getErrorMessage()); + System.out.println(e.getMessage()); + } + } + System.out.println("bye bye"); +// ui.showGoodbye(); } + + /** + * Main function of project Duke + * + * @param args A String Array containing arguments when running Duke + */ +// public static void main(String[] args) { +// new Duke("tasks.txt").run(); +// } } diff --git a/src/main/java/seedu/duke/apps/AcademicPlanner.java b/src/main/java/seedu/duke/apps/AcademicPlanner.java index 342e90bd22..26786b3d6d 100644 --- a/src/main/java/seedu/duke/apps/AcademicPlanner.java +++ b/src/main/java/seedu/duke/apps/AcademicPlanner.java @@ -1,15 +1,16 @@ package seedu.duke.apps; import seedu.duke.exceptions.AcademicException; -import seedu.duke.moduledata.ModuleInitializer; -import seedu.duke.objects.Module; +import seedu.duke.objects.PartialModule; import seedu.duke.objects.Person; import java.util.ArrayList; import java.util.HashMap; import java.util.Scanner; -public class AcademicPlanner { +public class AcademicPlanner extends App { + + //TODO might need to split this up into different commands private static final int STARTING_SEMESTER_INDEX = 1; private static final int FINAL_SEMESTER_INDEX = 10; private static final int COMMAND_INDEX = 0; @@ -48,8 +49,8 @@ public class AcademicPlanner { + "1) Semester\n" + "2) Grade"; private final ModuleInitializer allModules; - private final ArrayList modulesList; - private final HashMap modulesAddedMap; + private final ArrayList modulesList; + private final HashMap modulesAddedMap; private final Person currentPerson; public AcademicPlanner(ModuleInitializer allModules, Person currentPerson) { @@ -63,11 +64,19 @@ private void printCommandsList() { System.out.println(COMMANDS_LIST); } - public void planner() { + //TODO Update planner interface using parser + @Override + public void run() { System.out.println(WELCOME_MESSAGE); printCommandsList(); Scanner scanner = new Scanner(System.in); - String fullInput = scanner.nextLine().toUpperCase(); + String fullInput = null; + + //TODO scanner error causing EOF, fix it (due to multiple declaration of scanner) + while (scanner.hasNextLine()) { + fullInput = scanner.nextLine().toUpperCase(); + } + System.out.println("after getting"); String[] inputs = fullInput.split(" "); while (!inputs[COMMAND_INDEX].equals(EXIT_COMMAND)) { @@ -101,7 +110,7 @@ public void planner() { } /** - * Adds a module to the user's academic calendar if it exists in ModuleDatum, + * Adds a module to the user's academic calendar if it exists in FullModule, * else does not add module into user's academic calendar. * Validates user's input semester and grade. * If either is invalid, does not add module into user's academic calendar. @@ -143,7 +152,8 @@ private void addModule(Scanner in, String moduleCode) throws AcademicException { } /** - * Creates a new instance of a module of the parameters and adds it into the hashmap and array list of user modules. + * Creates a new instance of a module of the parameters and adds it into the + * hashmap and array list of user modules. * * @param moduleCode module to be added * @param semesterValue semester that module is taken in @@ -151,7 +161,7 @@ private void addModule(Scanner in, String moduleCode) throws AcademicException { * @param moduleCredit module's credit weightage */ private void addModuleToUser(String moduleCode, int semesterValue, String gradeValue, int moduleCredit) { - Module newModuleToAdd = new Module(moduleCode, semesterValue, gradeValue, moduleCredit); + PartialModule newModuleToAdd = new PartialModule(moduleCode, semesterValue, gradeValue, moduleCredit); modulesList.add(newModuleToAdd); modulesAddedMap.put(moduleCode, newModuleToAdd); updateCap(FROM_ADD, newModuleToAdd); @@ -163,11 +173,11 @@ private void addModuleToUser(String moduleCode, int semesterValue, String gradeV * Update Cap after every change in current module list. * * @param type An int storing the type of function calling update cap - * @param currentModule A Module object storing current module + * @param currentModule A PartialModule object storing current module * @param caps An optional number of double storing old cap and new cap (If you send in old, must send in new also) */ //TODO Look into throwing error and short circuiting this command - private void updateCap(int type, Module currentModule, double... caps) { + private void updateCap(int type, PartialModule currentModule, double... caps) { // Caps is an array, 0 being oldCap, 1 being newCap if (type == FROM_ADD) { //Incrementing total MC regardless of SU @@ -251,7 +261,7 @@ private void editModule(Scanner in, String moduleCode) throws AcademicException /** * Changes the current grade of module to the input of the user. - * Module must exist in user's list and hashmap + * PartialModule must exist in user's list and hashmap * * @param in scanner * @param moduleCode code of module to edit the grade @@ -277,7 +287,7 @@ private void editModuleGrade(Scanner in, String moduleCode) throws AcademicExcep * @param gradeValue grade to edit to */ private void updateModuleGrade(String moduleCode, String gradeValue) { - for (Module item : modulesList) { + for (PartialModule item : modulesList) { if (item.getModuleCode().equals(moduleCode)) { double oldCap = item.getCap(); item.setGrade(gradeValue); @@ -291,7 +301,7 @@ private void updateModuleGrade(String moduleCode, String gradeValue) { /** * Edits module semester taken when module is in user's list. - * Module must exist in user's module list and hashmap. + * PartialModule must exist in user's module list and hashmap. * * @param in scanner * @param moduleCode module to edit @@ -317,7 +327,7 @@ private void editModuleSemester(Scanner in, String moduleCode) throws AcademicEx * @param newValue new semester index */ private void updateModuleSemester(String moduleCode, String newValue) { - for (Module item : modulesList) { + for (PartialModule item : modulesList) { if (item.getModuleCode().equals(moduleCode)) { item.setSemesterIndex(Integer.parseInt(newValue)); return; @@ -345,12 +355,12 @@ private void removeModule(String moduleCode) throws AcademicException { /** * Removes module from user's module list. - * Module must exist in user's module list. + * PartialModule must exist in user's module list. * * @param moduleCode module to remove. */ private void removeModuleFromUserModuleList(String moduleCode) { - for (Module item : modulesList) { + for (PartialModule item : modulesList) { if (item.getModuleCode().equals(moduleCode)) { System.out.println(item.getModuleCode() + " has been removed from the list"); updateCap(FROM_REMOVE, item); @@ -364,7 +374,7 @@ private void removeModuleFromUserModuleList(String moduleCode) { * Returns true if module code is offered by NUS, * else returns false. * @param moduleCode input module code - * @return boolean of module code in ModuleDatum + * @return boolean of module code in FullModule */ private boolean isModOfferedByNus(String moduleCode) { return (allModules.getModuleMap().get(moduleCode) > -1); diff --git a/src/main/java/seedu/duke/apps/App.java b/src/main/java/seedu/duke/apps/App.java new file mode 100644 index 0000000000..d97192f2e2 --- /dev/null +++ b/src/main/java/seedu/duke/apps/App.java @@ -0,0 +1,17 @@ +package seedu.duke.apps; + +public class App { + boolean isExit = false; + + public App() {} + + public App(boolean isExitCommand) { + this.isExit = isExitCommand; + } + + public boolean isExit() { + return this.isExit; + } + + public void run() {} +} diff --git a/src/main/java/seedu/duke/apps/CapCalculator.java b/src/main/java/seedu/duke/apps/CapCalculator.java index 6bac5ab008..f3bbb7c09c 100644 --- a/src/main/java/seedu/duke/apps/CapCalculator.java +++ b/src/main/java/seedu/duke/apps/CapCalculator.java @@ -6,7 +6,7 @@ import java.text.DecimalFormat; import java.util.Scanner; -public class CapCalculator { +public class CapCalculator extends App { private final Person person; private final DecimalFormat formatFinalCap = new DecimalFormat("#.##"); diff --git a/src/main/java/seedu/duke/moduledata/ModuleInitializer.java b/src/main/java/seedu/duke/apps/ModuleInitializer.java similarity index 76% rename from src/main/java/seedu/duke/moduledata/ModuleInitializer.java rename to src/main/java/seedu/duke/apps/ModuleInitializer.java index 25e2c1330f..598660d484 100644 --- a/src/main/java/seedu/duke/moduledata/ModuleInitializer.java +++ b/src/main/java/seedu/duke/apps/ModuleInitializer.java @@ -1,6 +1,7 @@ -package seedu.duke.moduledata; +package seedu.duke.apps; import com.google.gson.Gson; +import seedu.duke.objects.FullModule; import java.io.InputStream; import java.io.Reader; @@ -10,14 +11,14 @@ public class ModuleInitializer { private Map moduleMap = new HashMap<>(); - private ModuleDatum[] moduleFullDetails; + private FullModule[] moduleFullDetails; public ModuleInitializer() { Gson gson = new Gson(); InputStream in = ModuleInitializer.class.getResourceAsStream("/ModuleData.json"); Reader jsonReader = new InputStreamReader(in); - moduleFullDetails = gson.fromJson(jsonReader, ModuleDatum[].class); + moduleFullDetails = gson.fromJson(jsonReader, FullModule[].class); for (int i = 0; i < moduleFullDetails.length; i++) { moduleMap.put(moduleFullDetails[i].getModuleCode(), i); @@ -28,7 +29,7 @@ public Map getModuleMap() { return this.moduleMap; } - public ModuleDatum[] getModuleFullDetails() { + public FullModule[] getModuleFullDetails() { return this.moduleFullDetails; } } diff --git a/src/main/java/seedu/duke/exceptions/AppParserException.java b/src/main/java/seedu/duke/exceptions/AppParserException.java new file mode 100644 index 0000000000..517f195726 --- /dev/null +++ b/src/main/java/seedu/duke/exceptions/AppParserException.java @@ -0,0 +1,14 @@ +package seedu.duke.exceptions; + +public class AppParserException extends Exception { + String errorMessage; + + public AppParserException(String errorMessage) { + this.errorMessage = errorMessage; + } + + @Override + public String getMessage() { + return this.errorMessage; + } +} diff --git a/src/main/java/seedu/duke/moduledata/ModuleDatum.java b/src/main/java/seedu/duke/objects/FullModule.java similarity index 91% rename from src/main/java/seedu/duke/moduledata/ModuleDatum.java rename to src/main/java/seedu/duke/objects/FullModule.java index a68ab9dca0..8a0b2dd3be 100644 --- a/src/main/java/seedu/duke/moduledata/ModuleDatum.java +++ b/src/main/java/seedu/duke/objects/FullModule.java @@ -1,4 +1,4 @@ -package seedu.duke.moduledata; +package seedu.duke.objects; import java.util.ArrayList; import java.util.HashMap; @@ -31,7 +31,13 @@ // "prerequisite", // "corequisite" -public class ModuleDatum { + +/** + * A class created to store the full data of each mod after JSON conversion + * + * @author Khenus Tan + */ +public class FullModule { private String moduleCode; private String title; private Integer moduleCredit; @@ -94,10 +100,10 @@ public boolean equals(Object other) { if (other == this) { return true; } - if ((other instanceof ModuleDatum) == false) { + if ((other instanceof FullModule) == false) { return false; } - ModuleDatum rhs = ((ModuleDatum) other); + FullModule rhs = ((FullModule) other); return new EqualsBuilder().append(moduleCode, rhs.moduleCode).append(title, rhs.title) .append(moduleCredit, rhs.moduleCredit).append(department, rhs.department) .append(faculty, rhs.faculty).append(semester, rhs.semester).append(preclusion, rhs.preclusion) diff --git a/src/main/java/seedu/duke/objects/Module.java b/src/main/java/seedu/duke/objects/PartialModule.java similarity index 93% rename from src/main/java/seedu/duke/objects/Module.java rename to src/main/java/seedu/duke/objects/PartialModule.java index 62bc6fd72f..4f0046bc8d 100644 --- a/src/main/java/seedu/duke/objects/Module.java +++ b/src/main/java/seedu/duke/objects/PartialModule.java @@ -2,14 +2,14 @@ import org.apache.commons.lang3.builder.ToStringBuilder; -public class Module implements Comparable { +public class PartialModule implements Comparable { private String moduleCode; private int semesterIndex; // 1 to 8 private String grade; private int moduleCredit; private double cap; - public Module(String moduleCode, int semesterIndex, String grade, int moduleCredit) { + public PartialModule(String moduleCode, int semesterIndex, String grade, int moduleCredit) { setModuleCode(moduleCode); setSemesterIndex(semesterIndex); setGrade(grade); @@ -117,7 +117,7 @@ public double getCap() { } @Override - public int compareTo(Module module) { + public int compareTo(PartialModule module) { return (Double.compare(this.getCap(), module.getCap())); } diff --git a/src/main/java/seedu/duke/objects/Person.java b/src/main/java/seedu/duke/objects/Person.java index dc8ce9db6e..105fee4101 100644 --- a/src/main/java/seedu/duke/objects/Person.java +++ b/src/main/java/seedu/duke/objects/Person.java @@ -13,8 +13,8 @@ public class Person { private int currentMcAfterSU; //Variables needed for Academic Planner - private ArrayList modulesList; - private HashMap modulesAddedMap; + private ArrayList modulesList; + private HashMap modulesAddedMap; public Person(String personName) { this.currentTotalMcxGrade = 0.0; @@ -53,19 +53,19 @@ public void setCurrentMcAfterSU(int currentMcAfterSU) { this.currentMcAfterSU = currentMcAfterSU; } - public ArrayList getModulesList() { + public ArrayList getModulesList() { return modulesList; } - public void setModulesList(ArrayList modulesList) { + public void setModulesList(ArrayList modulesList) { this.modulesList = modulesList; } - public HashMap getModulesAddedMap() { + public HashMap getModulesAddedMap() { return modulesAddedMap; } - public void setModulesAddedMap(HashMap modulesAddedMap) { + public void setModulesAddedMap(HashMap modulesAddedMap) { this.modulesAddedMap = modulesAddedMap; } } diff --git a/src/main/java/seedu/duke/parser/AppParser.java b/src/main/java/seedu/duke/parser/AppParser.java new file mode 100644 index 0000000000..8cbf7f4bb0 --- /dev/null +++ b/src/main/java/seedu/duke/parser/AppParser.java @@ -0,0 +1,52 @@ +package seedu.duke.parser; + +import seedu.duke.apps.AcademicPlanner; +import seedu.duke.apps.App; +import seedu.duke.apps.ModuleInitializer; +import seedu.duke.exceptions.AppParserException; +import seedu.duke.objects.Person; + +public class AppParser { + public static App parse(String userInput, ModuleInitializer allModules, Person currentPerson) + throws AppParserException { + userInput = userInput.trim().toLowerCase(); + + if (userInput.equals("acadplan")) { + return new AcademicPlanner(allModules, currentPerson); + } else if (userInput.equals("exit")) { + return new App(true); + } else { + throw new AppParserException("OOPS!!! I'm sorry, but I don't know what that means :-("); + } + +// String[] inputs = command.split(" "); +// inputs[0] = inputs[0].toLowerCase(); + +// if (inputs[0].equals("list")) { +// return new ListCommand(); +// } else if (inputs[0].equals("help")) { +// return new HelpCommand(); +// } else if (inputs[0].equals("done")) { +// return new DoneCommand(Integer.parseInt(inputs[1])); +// } else if (inputs[0].equals("delete")) { +// return new DeleteCommand(command); +// } else if (inputs[0].equals("bye") || inputs[0].equals("exit")) { +// return new Command(true); +// } else if (inputs[0].equals("todo") || inputs[0].equals("deadline") || inputs[0].equals("event")) { +// return new AddCommand(inputs[0], command); +// } else if (inputs[0].equals("print")) { +// try { +// return new PrintCommand(command); +// } catch (DukeException error) { +// throw new DukeException(error.getErrorMessage()); +// } +// } else if (inputs[0].equals("find")) { +// try { +// return new FindCommand(inputs[1]); +// } catch (IndexOutOfBoundsException error) { +// throw new DukeException("The keyword cannot be empty!"); +// } +// } else { +// throw new DukeException("☹ OOPS!!! I'm sorry, but I don't know what that means :-("); + } +} diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 5188f5c817..cb6f17ed52 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -1,2 +1,25 @@ -Module loaded... Checking for CS1010 validity... -{"additionalProperties":{},"attributes":[true,false,false,false,false,false,false,false,false],"corequisite":"","department":"Computer Science","faculty":"Computing","moduleCode":"CS1010","moduleCredit":4,"preclusion":"CS1010E, CS1010J, CS1010S, CS1010X, CS1010XCP, CS1101S","prerequisite":"","semester":[1,2],"title":"Programming Methodology"} +hello welcome to plannus + +Welcome to Academic Planner! +Available commands are: + add + edit + remove + view + exit +Type a command to continue... +Semester you plan to take CS1010? +Grade received for CS1010? +CS1010 added into Semester 2. +Available commands are: + add + edit + remove + view + exit +Type a command to continue... +Thank you for using Academic Planner! +hello welcome back to plannus +OOPS!!! I'm sorry, but I don't know what that means :-( +hello welcome back to plannus +bye bye \ No newline at end of file diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt index d974d76eb5..5f46e22be5 100644 --- a/text-ui-test/input.txt +++ b/text-ui-test/input.txt @@ -1 +1,7 @@ -CS1010 +acadplan +add cs1010 +2 +A +exit +hi +exit \ No newline at end of file From 9920194d1ec2104dcd36d398c16b8197328c3d52 Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Tue, 6 Oct 2020 13:50:04 +0800 Subject: [PATCH 024/450] Update user guide --- docs/README.md | 2 +- docs/UserGuide.md | 35 +++++++++++++++++++++++++++-------- 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/docs/README.md b/docs/README.md index 8ca5a98abd..12c9671b67 100644 --- a/docs/README.md +++ b/docs/README.md @@ -2,7 +2,7 @@ #### Foreword -plaNUS is a greenfield project which aims to solve the gap in undergraduate academic planning in NUS. +PlaNUS is a greenfield project which aims to solve the gap in undergraduate academic planning in NUS. With the `Academic Calendar Planner`,plaNUS will be able to assist undergraduate students in forecasting their academic journey for their 4 or 5 years in NUS. With the `CAP Calulator` , plaNUS will be able to tell you your current CAP and forecast future grades needed to achieve your target CAP. diff --git a/docs/UserGuide.md b/docs/UserGuide.md index abd9fbe891..c75f0fa6ce 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -1,26 +1,45 @@ -# User Guide +# User Guide for PlanNus ## Introduction -{Give a product intro} +PlaNUS is a greenfield project which aims to solve the gap in undergraduate academic planning in NUS. + +## Table of contents + +* [Quick Start](#quick-start) +* [Features](#features) +* [FAQ](#faq) +* [Command Summary](#command-summary) ## Quick Start {Give steps to get started quickly} 1. Ensure that you have Java 11 or above installed. -1. Down the latest version of `Duke` from [here](http://link.to/duke). +1. Download the latest version of `PlanNUS` from [here](https://github.com/AY2021S1-CS2113T-F12-1/tp/releases "PlanNUS releases"). +1. Run the `PlanNus.jar` file. ## Features -{Give detailed description of each feature} +1. Academic Calendar Planner + 1. `Add` Module to Calendar + 1. `Edit` Module in Calendar + 1. `Remove` Module from Calendar + 1. `Print` Calendar +1. Academic Calculator + 1. `Get` CAP + 1. `Target` CAP + +## Academic Calendar Planner + +This is the part of PlanNUS which handles the crafting of your personalised Academic Calendar for your 4 or 5 years of studies at NUS! -### Adding a todo: `todo` -Adds a new item to the list of todo items. +### Adding a module to your academic calendar: `add` +Adds a new module to your academic calendar -Format: `todo n/TODO_NAME d/DEADLINE` +Format: `add MODULE_CODE` -* The `DEADLINE` can be in a natural language format. +* The `MODULE_CODE` must be a module that is offered by NUS. For more info on which modules are offered by NUS, visit [here](https://nusmods.com/modules?sem[0]=1&sem[1]=2&sem[2]=3&sem[3]=4 "NUSMODS"). * The `TODO_NAME` cannot contain punctuation. Example of usage: From 30c9867374fe537ced5a98a697a4ac407c7bcbf9 Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Tue, 6 Oct 2020 14:37:43 +0800 Subject: [PATCH 025/450] Update user guide for add module --- docs/UserGuide.md | 73 +++++++++++++++++-- .../java/seedu/duke/apps/AcademicPlanner.java | 6 ++ 2 files changed, 72 insertions(+), 7 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index c75f0fa6ce..afcb7b948f 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -8,6 +8,8 @@ PlaNUS is a greenfield project which aims to solve the gap in undergraduate acad * [Quick Start](#quick-start) * [Features](#features) + * [Academic Calendar Planner](#academic-calendar-planner) + * [Add Module](#adding-a-module-to-your-academic-calendar-add) * [FAQ](#faq) * [Command Summary](#command-summary) @@ -35,21 +37,78 @@ PlaNUS is a greenfield project which aims to solve the gap in undergraduate acad This is the part of PlanNUS which handles the crafting of your personalised Academic Calendar for your 4 or 5 years of studies at NUS! ### Adding a module to your academic calendar: `add` + Adds a new module to your academic calendar -Format: `add MODULE_CODE` +Format: `add ` + +* The `` must be a module that is offered by NUS. For more info on which modules are offered by NUS, visit [here](https://nusmods.com/modules?sem[0]=1&sem[1]=2&sem[2]=3&sem[3]=4 "NUSMODS"). +* The `` must be not already be in your Planner. (No duplicate modules allowed) + +If successful, the Academic Planner will prompt you of the semester you plan to take ``. A valid semester must be entered. + +Format: `` + +* The `` must be an integer from 1 to 10. + +If successful, the Academic Planner will prompt you of the grade you achieved for ``. A valid grade must be entered. + +Format: `` + +* The `` must be a valid grade given by NUS or NT if `` has not been taken. -* The `MODULE_CODE` must be a module that is offered by NUS. For more info on which modules are offered by NUS, visit [here](https://nusmods.com/modules?sem[0]=1&sem[1]=2&sem[2]=3&sem[3]=4 "NUSMODS"). -* The `TODO_NAME` cannot contain punctuation. +**Example of proper usage:** -Example of usage: +Example 1 : Module has already been taken and have been graded by NUS +``` +add CS1231 +Semester you plan to take CS1231? +1 +Grade received for CS1231? +B+ +CS1231 added into Semester 1. +``` -`todo n/Write the rest of the User Guide d/next week` +Example 2 : Module has not been taken yet or not yet graded +``` +add CS2113 +Semester you plan to take CS2113? +3 +Grade received for CS2113? +NT +CS2113 added into Semester 3. +``` -`todo n/Refactor the User Guide to remove passive voice d/13/04/2020` +**Examples of messages when an incorrect input is given** + +Example 1 : `` is not offered by NUS. + +``` +INSERT ERROR +``` + +Example 2 : `` is out of range. + +``` +INSERT ERROR +``` + +Example 3 : `` is not a valid grade. + +``` +INSERT ERROR +``` + +Refer to [FAQ](#faq) for more information. ## FAQ +Question Type|Question|Answer +:---:|---|--- +General | How do I check which modules are offered by NUS? | For more info on which modules are offered by NUS, visit [here](https://nusmods.com/modules?sem[0]=1&sem[1]=2&sem[2]=3&sem[3]=4 "NUSMODS"). +General | What is a valid semester index? | For the purpose of this planning software, we have come to a decision to limit the maximum number of semesters an undergraduate can take to 10, which is 5 academic years. The notation they are represented by is by an integer of value 1 to 10. For a fresh undergraduate, they will begin at semester index of 1. For a year 3 student who is currently in semester 1, the semester index will be 5. +General | What is a valid grade? | **Letter Grades**: A+, A, B+, B, B-, C+, C, D+, D, F , **Special Grades**: CS, CU, S, U, W, IC, IP, AUD, WU, EXE, **If you have yet to have a grade for the module**: NT + **Q**: How do I transfer my data to another computer? **A**: {your answer here} @@ -58,4 +117,4 @@ Example of usage: {Give a 'cheat sheet' of commands here} -* Add todo `todo n/TODO_NAME d/DEADLINE` +* Add module to Academic Calendar Planner : `add ` diff --git a/src/main/java/seedu/duke/apps/AcademicPlanner.java b/src/main/java/seedu/duke/apps/AcademicPlanner.java index 342e90bd22..98bb889622 100644 --- a/src/main/java/seedu/duke/apps/AcademicPlanner.java +++ b/src/main/java/seedu/duke/apps/AcademicPlanner.java @@ -44,9 +44,14 @@ public class AcademicPlanner { + " view\n" + " exit\n" + "Type a command to continue..."; + private static final String VALID_GRADES = "Valid grades are: \n" + + "Letter Grades: A+, A, B+, B, B-, C+, C, D+, D, F\n" + + "Special Grades: CS, CU, S, U, W, IC, IP, AUD, WU, EXE\n" + + "If you have yet to have a grade for the module: NT"; public static final String PROMPT_EDIT_CHOICES = "Enter the number corresponding to the feature you wish to edit:\n" + "1) Semester\n" + "2) Grade"; + private final ModuleInitializer allModules; private final ArrayList modulesList; private final HashMap modulesAddedMap; @@ -133,6 +138,7 @@ private void addModule(Scanner in, String moduleCode) throws AcademicException { } System.out.println("Grade received for " + moduleCode.toUpperCase() + "?"); + System.out.println(VALID_GRADES); String gradeValue = in.nextLine(); if (!isValidGrade(gradeValue)) { From a0c730e14f01d6cdb2cabb7fd910b3a5f6169a1a Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Tue, 6 Oct 2020 14:43:16 +0800 Subject: [PATCH 026/450] Fix spelling error in readme.md --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index 12c9671b67..65125b1848 100644 --- a/docs/README.md +++ b/docs/README.md @@ -2,7 +2,7 @@ #### Foreword -PlaNUS is a greenfield project which aims to solve the gap in undergraduate academic planning in NUS. +PlanNUS is a greenfield project which aims to solve the gap in undergraduate academic planning in NUS. With the `Academic Calendar Planner`,plaNUS will be able to assist undergraduate students in forecasting their academic journey for their 4 or 5 years in NUS. With the `CAP Calulator` , plaNUS will be able to tell you your current CAP and forecast future grades needed to achieve your target CAP. From c06ad0b1f3924c4d41b297e7ef8739b845b83c48 Mon Sep 17 00:00:00 2001 From: JuZihao <57383789+JuZihao@users.noreply.github.com> Date: Tue, 6 Oct 2020 16:31:57 +0800 Subject: [PATCH 027/450] Added exceptions when the target MC is zero and when the target CAP is greater than 5. --- .../java/seedu/duke/apps/CapCalculator.java | 35 +++++++++++++++++++ .../exceptions/CapCalculatorException.java | 21 +++++++++++ .../duke/exceptions/InvalidCapException.java | 11 ++++++ .../exceptions/InvalidCreditException.java | 11 ++++++ 4 files changed, 78 insertions(+) create mode 100644 src/main/java/seedu/duke/exceptions/CapCalculatorException.java create mode 100644 src/main/java/seedu/duke/exceptions/InvalidCapException.java create mode 100644 src/main/java/seedu/duke/exceptions/InvalidCreditException.java diff --git a/src/main/java/seedu/duke/apps/CapCalculator.java b/src/main/java/seedu/duke/apps/CapCalculator.java index 6bac5ab008..ee3c86194c 100644 --- a/src/main/java/seedu/duke/apps/CapCalculator.java +++ b/src/main/java/seedu/duke/apps/CapCalculator.java @@ -1,5 +1,7 @@ package seedu.duke.apps; +import seedu.duke.exceptions.InvalidCapException; +import seedu.duke.exceptions.InvalidCreditException; import seedu.duke.objects.Person; import java.math.RoundingMode; @@ -11,12 +13,15 @@ public class CapCalculator { private final DecimalFormat formatFinalCap = new DecimalFormat("#.##"); //CONSTANTS + private static final double MAXIMUM_CAP = 5.00; private static final String ERROR_INVALID_COMMAND = "INVALID COMMAND"; private static final String AWAIT_COMMAND = "Type a command to continue..."; private static final String EXIT_COMMAND = "EXIT"; private static final String CURRENT_COMMAND = "CURRENT"; private static final String SET_TARGET_COMMAND = "SET TARGET"; private static final String EXIT_MESSAGE = "EXITING CAPCALC"; + private static final String INVALID_CAP_MESSAGE = "Your target CAP cannot be greater than the maximum CAP of 5!"; + private static final String INVALID_MC_MESSAGE = "Your target MC cannot be 0!"; private static final String WELCOME_MESSAGE = "Welcome to CAP Calculator! Commands available are:\n" + " Current\n" + " Set target\n" @@ -65,14 +70,44 @@ private void setTargetCap() { try { System.out.println("What is your target CAP?"); double targetCap = Double.parseDouble(in.nextLine()); + checkValidCap(targetCap); System.out.println("How many graded MCs you are taking to achieve the target CAP?"); int targetGradedMC = Integer.parseInt(in.nextLine()); + checkValidCredits(targetGradedMC); calculateResults(targetCap, targetGradedMC); } catch (NullPointerException e) { System.out.println(ERROR_INVALID_COMMAND); System.out.println(AWAIT_COMMAND); + } catch (InvalidCapException e) { + + } catch (InvalidCreditException e) { + + } + } + + /** + * Checks if the target Cap given by the user is valid. + * + * @param Cap Cap to be checked + * @throws InvalidCapException if the Cap given is greater than 5.00 + */ + private void checkValidCap(double Cap) throws InvalidCapException { + if (Cap > MAXIMUM_CAP) { + throw new InvalidCapException(INVALID_CAP_MESSAGE); + } + } + + /** + * Checks if the target Cap given by the user is valid. + * + * @param MC Module credits to be checked + * @throws InvalidCreditException if the module credit given is 0 + */ + private void checkValidCredits(int MC) throws InvalidCreditException { + if (MC == 0) { + throw new InvalidCreditException(INVALID_MC_MESSAGE); } } diff --git a/src/main/java/seedu/duke/exceptions/CapCalculatorException.java b/src/main/java/seedu/duke/exceptions/CapCalculatorException.java new file mode 100644 index 0000000000..d83fd4c158 --- /dev/null +++ b/src/main/java/seedu/duke/exceptions/CapCalculatorException.java @@ -0,0 +1,21 @@ +package seedu.duke.exceptions; + +/** + * Represents a Capcalculator exception. + */ +public class CapCalculatorException extends Exception { + private String errorMessage; + + private static final String NEW_LINE = "\n"; + private static final String EXITING_CURRENT_COMMAND = "Exiting current command back to CapCalculator Main Menu."; + + public CapCalculatorException(String errorMessage) { + String stringToPrint = errorMessage + NEW_LINE + EXITING_CURRENT_COMMAND; + this.errorMessage = stringToPrint; + } + + @Override + public String getMessage() { + return this.errorMessage; + } +} diff --git a/src/main/java/seedu/duke/exceptions/InvalidCapException.java b/src/main/java/seedu/duke/exceptions/InvalidCapException.java new file mode 100644 index 0000000000..284a821c0d --- /dev/null +++ b/src/main/java/seedu/duke/exceptions/InvalidCapException.java @@ -0,0 +1,11 @@ +package seedu.duke.exceptions; + +/** + * Signals that the given CAP is not valid. + */ +public class InvalidCapException extends CapCalculatorException { + + public InvalidCapException(String errorMessage) { + super(errorMessage); + } +} diff --git a/src/main/java/seedu/duke/exceptions/InvalidCreditException.java b/src/main/java/seedu/duke/exceptions/InvalidCreditException.java new file mode 100644 index 0000000000..6a2a265635 --- /dev/null +++ b/src/main/java/seedu/duke/exceptions/InvalidCreditException.java @@ -0,0 +1,11 @@ +package seedu.duke.exceptions; + +/** + * Signals that the given MC is not valid. + */ +public class InvalidCreditException extends CapCalculatorException { + + public InvalidCreditException(String errorMessage) { + super(errorMessage); + } +} From 947dd37a8b350bd1e4dcef8c87971f5ef58dfd5f Mon Sep 17 00:00:00 2001 From: JuZihao <57383789+JuZihao@users.noreply.github.com> Date: Tue, 6 Oct 2020 16:43:24 +0800 Subject: [PATCH 028/450] Added print error message functions. --- src/main/java/seedu/duke/apps/CapCalculator.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/seedu/duke/apps/CapCalculator.java b/src/main/java/seedu/duke/apps/CapCalculator.java index ee3c86194c..b030e90b4d 100644 --- a/src/main/java/seedu/duke/apps/CapCalculator.java +++ b/src/main/java/seedu/duke/apps/CapCalculator.java @@ -81,9 +81,9 @@ private void setTargetCap() { System.out.println(ERROR_INVALID_COMMAND); System.out.println(AWAIT_COMMAND); } catch (InvalidCapException e) { - + System.out.println(e.getMessage()); } catch (InvalidCreditException e) { - + System.out.println(e.getMessage()); } } From 28132d0f76e11e5b10cacee1d95178f3490c70af Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Tue, 6 Oct 2020 17:05:07 +0800 Subject: [PATCH 029/450] Update user guide --- docs/UserGuide.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index afcb7b948f..46465bbad2 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -87,13 +87,19 @@ Example 1 : `` is not offered by NUS. INSERT ERROR ``` -Example 2 : `` is out of range. +Example 2 : `` is already in your Academic Planner. ``` INSERT ERROR ``` -Example 3 : `` is not a valid grade. +Example 3 : `` is out of range. + +``` +INSERT ERROR +``` + +Example 4 : `` is not a valid grade. ``` INSERT ERROR From 9fd9146a3be51e9e6a6abc64c7e498953540eecc Mon Sep 17 00:00:00 2001 From: JuZihao <57383789+JuZihao@users.noreply.github.com> Date: Tue, 6 Oct 2020 19:59:38 +0800 Subject: [PATCH 030/450] Modify variable names. --- src/main/java/seedu/duke/apps/CapCalculator.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/seedu/duke/apps/CapCalculator.java b/src/main/java/seedu/duke/apps/CapCalculator.java index b030e90b4d..f315b4baad 100644 --- a/src/main/java/seedu/duke/apps/CapCalculator.java +++ b/src/main/java/seedu/duke/apps/CapCalculator.java @@ -90,11 +90,11 @@ private void setTargetCap() { /** * Checks if the target Cap given by the user is valid. * - * @param Cap Cap to be checked + * @param cap Cap to be checked * @throws InvalidCapException if the Cap given is greater than 5.00 */ - private void checkValidCap(double Cap) throws InvalidCapException { - if (Cap > MAXIMUM_CAP) { + private void checkValidCap(double cap) throws InvalidCapException { + if (cap > MAXIMUM_CAP) { throw new InvalidCapException(INVALID_CAP_MESSAGE); } } @@ -102,11 +102,11 @@ private void checkValidCap(double Cap) throws InvalidCapException { /** * Checks if the target Cap given by the user is valid. * - * @param MC Module credits to be checked + * @param credits Module credits to be checked * @throws InvalidCreditException if the module credit given is 0 */ - private void checkValidCredits(int MC) throws InvalidCreditException { - if (MC == 0) { + private void checkValidCredits(int credits) throws InvalidCreditException { + if (credits == 0) { throw new InvalidCreditException(INVALID_MC_MESSAGE); } } From c73dfb8dec0777e76f3b6059e6d2e18e8a5d4082 Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Tue, 6 Oct 2020 20:09:15 +0800 Subject: [PATCH 031/450] Add valid semester helper prompt --- src/main/java/seedu/duke/apps/AcademicPlanner.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/seedu/duke/apps/AcademicPlanner.java b/src/main/java/seedu/duke/apps/AcademicPlanner.java index 98bb889622..28bb6a3162 100644 --- a/src/main/java/seedu/duke/apps/AcademicPlanner.java +++ b/src/main/java/seedu/duke/apps/AcademicPlanner.java @@ -48,6 +48,7 @@ public class AcademicPlanner { + "Letter Grades: A+, A, B+, B, B-, C+, C, D+, D, F\n" + "Special Grades: CS, CU, S, U, W, IC, IP, AUD, WU, EXE\n" + "If you have yet to have a grade for the module: NT"; + private static final String VALID_SEMESTERS = "Valid semesters are integers from 1 to 10, inclusive"; public static final String PROMPT_EDIT_CHOICES = "Enter the number corresponding to the feature you wish to edit:\n" + "1) Semester\n" + "2) Grade"; @@ -124,6 +125,7 @@ private void addModule(Scanner in, String moduleCode) throws AcademicException { } System.out.println("Semester you plan to take " + moduleCode.toUpperCase() + "?"); + System.out.println(VALID_SEMESTERS); String userInput = in.nextLine(); int semesterValue; From 4b716aabb342b01e5868caf9199a3f4086736ed4 Mon Sep 17 00:00:00 2001 From: Khenus Date: Wed, 7 Oct 2020 01:41:43 +0800 Subject: [PATCH 032/450] V0.5 Added Parser and Ui for centralised Scanner --- src/main/java/seedu/duke/Duke.java | 70 +++---------------- .../java/seedu/duke/apps/AcademicPlanner.java | 20 +++--- src/main/java/seedu/duke/apps/App.java | 8 ++- .../java/seedu/duke/apps/CapCalculator.java | 17 +++-- .../java/seedu/duke/objects/FullModule.java | 2 +- .../java/seedu/duke/parser/AppParser.java | 38 ++-------- src/main/java/seedu/duke/ui/Ui.java | 15 ++++ .../duke/{PlanNusTest.java => Duke.java} | 2 +- text-ui-test/EXPECTED.TXT | 15 +--- text-ui-test/input.txt | 4 -- 10 files changed, 60 insertions(+), 131 deletions(-) create mode 100644 src/main/java/seedu/duke/ui/Ui.java rename src/test/java/seedu/duke/{PlanNusTest.java => Duke.java} (90%) diff --git a/src/main/java/seedu/duke/Duke.java b/src/main/java/seedu/duke/Duke.java index 1bcb2588d8..3cb31f5036 100644 --- a/src/main/java/seedu/duke/Duke.java +++ b/src/main/java/seedu/duke/Duke.java @@ -6,88 +6,40 @@ import seedu.duke.apps.ModuleInitializer; import seedu.duke.objects.Person; import seedu.duke.parser.AppParser; +import seedu.duke.ui.Ui; import java.util.Scanner; public class Duke { - /** - * Main entry-point for the PlanNus application. - */ + private Ui ui; + private ModuleInitializer allModules; + private Person currentPerson; - private static ModuleInitializer allModules; - private static Person currentPerson; - - public static void main(String[] args) { + public Duke() { + ui = new Ui(); allModules = new ModuleInitializer(); currentPerson = new Person("Bob"); - -// Scanner input = new Scanner(System.in); -// String modCode = input.nextLine(); -// -// Integer idx = allModules.getModuleMap().get(modCode); -// FullModule cs1010Data = allModules.getModuleFullDetails()[idx]; -// -// System.out.println("PartialModule loaded... Checking for CS1010 validity..."); -// System.out.println(cs1010Data); - - new Duke().run(); } -// private Storage storage; -// private TaskList tasks; -// private Ui ui; - - /** - * Constructor for Duke to allow for initialising of save files - * - * @param filePath A String containing the path of the save file - */ -// public Duke(String filePath) { -// ui = new Ui(); -// storage = new Storage(filePath); -// try { -// tasks = new TaskList(storage.load()); -// } catch (DukeException e) { -// ui.showError(e.getErrorMessage()); -// tasks = new TaskList(); -// } -// } - - /** - * A continuously running function to allow for user input and task operations - */ public void run() { -// ui.showWelcome(); System.out.println("hello welcome to plannus"); boolean isExit = false; - Scanner scanner = new Scanner(System.in); while (!isExit) { try { -// String fullCommand = ui.readCommand(); -// Command c = Parser.parse(fullCommand); -// c.execute(tasks, ui, storage); - String userInput = scanner.nextLine(); - App selectedApp = AppParser.parse(userInput, allModules, currentPerson); + String userInput = ui.getScanner().nextLine(); + App selectedApp = AppParser.parse(userInput, allModules, currentPerson, ui); selectedApp.run(); isExit = selectedApp.isExit(); System.out.println("hello welcome back to plannus"); -// storage.write(tasks); } catch (Exception e) { -// ui.showError(e.getErrorMessage()); System.out.println(e.getMessage()); } } System.out.println("bye bye"); -// ui.showGoodbye(); } - /** - * Main function of project Duke - * - * @param args A String Array containing arguments when running Duke - */ -// public static void main(String[] args) { -// new Duke("tasks.txt").run(); -// } + public static void main(String[] args) { + new Duke().run(); + } } diff --git a/src/main/java/seedu/duke/apps/AcademicPlanner.java b/src/main/java/seedu/duke/apps/AcademicPlanner.java index 8fadc9f6c3..cbc6593fbd 100644 --- a/src/main/java/seedu/duke/apps/AcademicPlanner.java +++ b/src/main/java/seedu/duke/apps/AcademicPlanner.java @@ -3,13 +3,13 @@ import seedu.duke.exceptions.AcademicException; import seedu.duke.objects.PartialModule; import seedu.duke.objects.Person; +import seedu.duke.ui.Ui; + import java.util.ArrayList; import java.util.HashMap; import java.util.Scanner; public class AcademicPlanner extends App { - - //TODO might need to split this up into different commands private static final int STARTING_SEMESTER_INDEX = 1; private static final int FINAL_SEMESTER_INDEX = 10; @@ -58,31 +58,27 @@ public class AcademicPlanner extends App { private final ArrayList modulesList; private final HashMap modulesAddedMap; private final Person currentPerson; + private Scanner scanner; + private Ui ui; - public AcademicPlanner(ModuleInitializer allModules, Person currentPerson) { + public AcademicPlanner(ModuleInitializer allModules, Person currentPerson, Ui ui) { this.allModules = allModules; this.modulesList = currentPerson.getModulesList(); this.modulesAddedMap = currentPerson.getModulesAddedMap(); this.currentPerson = currentPerson; + this.ui = ui; + this.scanner = ui.getScanner(); } private void printCommandsList() { System.out.println(COMMANDS_LIST); } - //TODO Update planner interface using parser @Override public void run() { System.out.println(WELCOME_MESSAGE); printCommandsList(); - Scanner scanner = new Scanner(System.in); - String fullInput = null; - - //TODO scanner error causing EOF, fix it (due to multiple declaration of scanner) - while (scanner.hasNextLine()) { - fullInput = scanner.nextLine().toUpperCase(); - } - System.out.println("after getting"); + String fullInput = scanner.nextLine().toUpperCase();; String[] inputs = fullInput.split(" "); while (!inputs[COMMAND_INDEX].equals(EXIT_COMMAND)) { diff --git a/src/main/java/seedu/duke/apps/App.java b/src/main/java/seedu/duke/apps/App.java index d97192f2e2..2434808ddf 100644 --- a/src/main/java/seedu/duke/apps/App.java +++ b/src/main/java/seedu/duke/apps/App.java @@ -3,7 +3,9 @@ public class App { boolean isExit = false; - public App() {} + public App() { + + } public App(boolean isExitCommand) { this.isExit = isExitCommand; @@ -13,5 +15,7 @@ public boolean isExit() { return this.isExit; } - public void run() {} + public void run() { + + } } diff --git a/src/main/java/seedu/duke/apps/CapCalculator.java b/src/main/java/seedu/duke/apps/CapCalculator.java index b2f9c3f150..4953499a10 100644 --- a/src/main/java/seedu/duke/apps/CapCalculator.java +++ b/src/main/java/seedu/duke/apps/CapCalculator.java @@ -3,13 +3,16 @@ import seedu.duke.exceptions.InvalidCapException; import seedu.duke.exceptions.InvalidCreditException; import seedu.duke.objects.Person; +import seedu.duke.ui.Ui; import java.math.RoundingMode; import java.text.DecimalFormat; import java.util.Scanner; public class CapCalculator extends App { - private final Person person; + private Person person; + private Scanner scanner; + private Ui ui; private final DecimalFormat formatFinalCap = new DecimalFormat("#.##"); //CONSTANTS @@ -28,15 +31,16 @@ public class CapCalculator extends App { + "To exit CAP Calculator, use command: \"exit\"\n\n" + "Initializing your CAP..."; - public CapCalculator(Person currentPerson) { + public CapCalculator(Person currentPerson, Ui ui) { this.person = currentPerson; + this.ui = ui; + this.scanner = ui.getScanner(); } //Main Function - public void capCalculator() { + public void run() { System.out.println(WELCOME_MESSAGE); System.out.println(AWAIT_COMMAND); - Scanner scanner = new Scanner(System.in); String input = scanner.nextLine().toUpperCase(); formatFinalCap.setRoundingMode(RoundingMode.UP); @@ -66,14 +70,13 @@ private void printCurrentCap() { * Allow the user to set the target CAP that user want to achieve in the next given MCs. */ private void setTargetCap() { - Scanner in = new Scanner(System.in); try { System.out.println("What is your target CAP?"); - double targetCap = Double.parseDouble(in.nextLine()); + double targetCap = Double.parseDouble(scanner.nextLine()); checkValidCap(targetCap); System.out.println("How many graded MCs you are taking to achieve the target CAP?"); - int targetGradedMC = Integer.parseInt(in.nextLine()); + int targetGradedMC = Integer.parseInt(scanner.nextLine()); checkValidCredits(targetGradedMC); calculateResults(targetCap, targetGradedMC); diff --git a/src/main/java/seedu/duke/objects/FullModule.java b/src/main/java/seedu/duke/objects/FullModule.java index 8a0b2dd3be..c7ba248c30 100644 --- a/src/main/java/seedu/duke/objects/FullModule.java +++ b/src/main/java/seedu/duke/objects/FullModule.java @@ -33,7 +33,7 @@ /** - * A class created to store the full data of each mod after JSON conversion + * A class created to store the full data of each mod after JSON conversion. * * @author Khenus Tan */ diff --git a/src/main/java/seedu/duke/parser/AppParser.java b/src/main/java/seedu/duke/parser/AppParser.java index 8cbf7f4bb0..90c7d24838 100644 --- a/src/main/java/seedu/duke/parser/AppParser.java +++ b/src/main/java/seedu/duke/parser/AppParser.java @@ -2,51 +2,25 @@ import seedu.duke.apps.AcademicPlanner; import seedu.duke.apps.App; +import seedu.duke.apps.CapCalculator; import seedu.duke.apps.ModuleInitializer; import seedu.duke.exceptions.AppParserException; import seedu.duke.objects.Person; +import seedu.duke.ui.Ui; public class AppParser { - public static App parse(String userInput, ModuleInitializer allModules, Person currentPerson) + public static App parse(String userInput, ModuleInitializer allModules, Person currentPerson, Ui ui) throws AppParserException { userInput = userInput.trim().toLowerCase(); if (userInput.equals("acadplan")) { - return new AcademicPlanner(allModules, currentPerson); + return new AcademicPlanner(allModules, currentPerson, ui); + } else if (userInput.equals("capcalc")) { + return new CapCalculator(currentPerson, ui); } else if (userInput.equals("exit")) { return new App(true); } else { throw new AppParserException("OOPS!!! I'm sorry, but I don't know what that means :-("); } - -// String[] inputs = command.split(" "); -// inputs[0] = inputs[0].toLowerCase(); - -// if (inputs[0].equals("list")) { -// return new ListCommand(); -// } else if (inputs[0].equals("help")) { -// return new HelpCommand(); -// } else if (inputs[0].equals("done")) { -// return new DoneCommand(Integer.parseInt(inputs[1])); -// } else if (inputs[0].equals("delete")) { -// return new DeleteCommand(command); -// } else if (inputs[0].equals("bye") || inputs[0].equals("exit")) { -// return new Command(true); -// } else if (inputs[0].equals("todo") || inputs[0].equals("deadline") || inputs[0].equals("event")) { -// return new AddCommand(inputs[0], command); -// } else if (inputs[0].equals("print")) { -// try { -// return new PrintCommand(command); -// } catch (DukeException error) { -// throw new DukeException(error.getErrorMessage()); -// } -// } else if (inputs[0].equals("find")) { -// try { -// return new FindCommand(inputs[1]); -// } catch (IndexOutOfBoundsException error) { -// throw new DukeException("The keyword cannot be empty!"); -// } -// } else { -// throw new DukeException("☹ OOPS!!! I'm sorry, but I don't know what that means :-("); } } diff --git a/src/main/java/seedu/duke/ui/Ui.java b/src/main/java/seedu/duke/ui/Ui.java new file mode 100644 index 0000000000..dfff04677b --- /dev/null +++ b/src/main/java/seedu/duke/ui/Ui.java @@ -0,0 +1,15 @@ +package seedu.duke.ui; + +import java.util.Scanner; + +public class Ui { + private Scanner scanner; + + public Ui() { + this.scanner = new Scanner(System.in); + } + + public Scanner getScanner() { + return this.scanner; + } +} diff --git a/src/test/java/seedu/duke/PlanNusTest.java b/src/test/java/seedu/duke/Duke.java similarity index 90% rename from src/test/java/seedu/duke/PlanNusTest.java rename to src/test/java/seedu/duke/Duke.java index ff076af4e5..2b917a8154 100644 --- a/src/test/java/seedu/duke/PlanNusTest.java +++ b/src/test/java/seedu/duke/Duke.java @@ -4,7 +4,7 @@ import org.junit.jupiter.api.Test; -class PlanNusTest { +class Duke { @Test public void sampleTest() { assertTrue(true); diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index cb6f17ed52..95b9240ebf 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -1,17 +1,7 @@ hello welcome to plannus Welcome to Academic Planner! -Available commands are: - add - edit - remove - view - exit -Type a command to continue... -Semester you plan to take CS1010? -Grade received for CS1010? -CS1010 added into Semester 2. -Available commands are: +Available commands are: add edit remove @@ -20,6 +10,5 @@ Available commands are: Type a command to continue... Thank you for using Academic Planner! hello welcome back to plannus -OOPS!!! I'm sorry, but I don't know what that means :-( hello welcome back to plannus -bye bye \ No newline at end of file +bye bye diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt index 5f46e22be5..f21353911a 100644 --- a/text-ui-test/input.txt +++ b/text-ui-test/input.txt @@ -1,7 +1,3 @@ acadplan -add cs1010 -2 -A exit -hi exit \ No newline at end of file From 0267b6eaeea9ee21b0e10827891f8b57d40d9b99 Mon Sep 17 00:00:00 2001 From: Khenus Date: Wed, 7 Oct 2020 01:50:50 +0800 Subject: [PATCH 033/450] V0.5 Added Parser and Ui for centralised Scanner --- .gitignore | 1 + .../java/seedu/duke/apps/AcademicPlanner.java | 4 +-- text-ui-test/EXPECTED.TXT | 27 +++++++++++++++++++ text-ui-test/input.txt | 7 +++++ text-ui-test/runtest.bat | 2 ++ 5 files changed, 39 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index f69985ef1f..af269c4002 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,4 @@ bin/ /text-ui-test/ACTUAL.txt text-ui-test/EXPECTED-UNIX.TXT +/text-ui-test/DIFF.TXT diff --git a/src/main/java/seedu/duke/apps/AcademicPlanner.java b/src/main/java/seedu/duke/apps/AcademicPlanner.java index cbc6593fbd..1d656d8ca4 100644 --- a/src/main/java/seedu/duke/apps/AcademicPlanner.java +++ b/src/main/java/seedu/duke/apps/AcademicPlanner.java @@ -38,14 +38,14 @@ public class AcademicPlanner extends App { private static final String VIEW_COMMAND = "VIEW"; private static final String EXIT_COMMAND = "EXIT"; private static final String EXIT_MESSAGE = "Thank you for using Academic Planner!"; - private static final String COMMANDS_LIST = "Available commands are: \n" + private static final String COMMANDS_LIST = "Available commands are:\n" + " add \n" + " edit \n" + " remove \n" + " view\n" + " exit\n" + "Type a command to continue..."; - private static final String VALID_GRADES = "Valid grades are: \n" + private static final String VALID_GRADES = "Valid grades are:\n" + "Letter Grades: A+, A, B+, B, B-, C+, C, D+, D, F\n" + "Special Grades: CS, CU, S, U, W, IC, IP, AUD, WU, EXE\n" + "If you have yet to have a grade for the module: NT"; diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 95b9240ebf..dca835b432 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -8,7 +8,34 @@ Available commands are: view exit Type a command to continue... +Semester you plan to take CS1010? +Valid semesters are integers from 1 to 10, inclusive +Grade received for CS1010? +Valid grades are: +Letter Grades: A+, A, B+, B, B-, C+, C, D+, D, F +Special Grades: CS, CU, S, U, W, IC, IP, AUD, WU, EXE +If you have yet to have a grade for the module: NT +CS1010 added into Semester 2. +Available commands are: + add + edit + remove + view + exit +Type a command to continue... Thank you for using Academic Planner! hello welcome back to plannus +Welcome to CAP Calculator! Commands available are: + Current + Set target +To exit CAP Calculator, use command: "exit" + +Initializing your CAP... +Type a command to continue... +Your current now CAP is: 5 +Number of graded MCs taken is: 4 +EXITING CAPCALC +hello welcome back to plannus +OOPS!!! I'm sorry, but I don't know what that means :-( hello welcome back to plannus bye bye diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt index f21353911a..d0bf77927f 100644 --- a/text-ui-test/input.txt +++ b/text-ui-test/input.txt @@ -1,3 +1,10 @@ acadplan +add CS1010 +2 +A exit +capcalc +current +exit +hi exit \ No newline at end of file diff --git a/text-ui-test/runtest.bat b/text-ui-test/runtest.bat index 25ac7a2989..d2fbc860d8 100644 --- a/text-ui-test/runtest.bat +++ b/text-ui-test/runtest.bat @@ -16,4 +16,6 @@ java -jar %jarloc% < ..\..\text-ui-test\input.txt > ..\..\text-ui-test\ACTUAL.TX cd ..\..\text-ui-test +findstr /vixg:ACTUAL.TXT EXPECTED.TXT > DIFF.TXT + FC ACTUAL.TXT EXPECTED.TXT >NUL && ECHO Test passed! || Echo Test failed! From 7fa5f7e9dafcc9734d4c0440cf052fd65d57a4b4 Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Wed, 7 Oct 2020 10:53:43 +0800 Subject: [PATCH 034/450] Refactor Academic planner and fix exception bug --- src/main/java/seedu/duke/Duke.java | 18 +++++++---- .../java/seedu/duke/apps/AcademicPlanner.java | 31 +++++++++++-------- .../java/seedu/duke/apps/CapCalculator.java | 18 +++++------ .../java/seedu/duke/parser/AppParser.java | 14 ++++++--- 4 files changed, 49 insertions(+), 32 deletions(-) diff --git a/src/main/java/seedu/duke/Duke.java b/src/main/java/seedu/duke/Duke.java index 3cb31f5036..23020051db 100644 --- a/src/main/java/seedu/duke/Duke.java +++ b/src/main/java/seedu/duke/Duke.java @@ -1,16 +1,20 @@ package seedu.duke; import seedu.duke.apps.App; -import seedu.duke.exceptions.AppParserException; -import seedu.duke.objects.FullModule; import seedu.duke.apps.ModuleInitializer; import seedu.duke.objects.Person; import seedu.duke.parser.AppParser; import seedu.duke.ui.Ui; -import java.util.Scanner; public class Duke { + + private static final String WELCOME_MESSAGE = "Welcome to PlanNUS!"; + private static final String WELCOME_BACK_MESSAGE = "Welcome back to PlanNUS Main Menu!"; + private static final String EXIT_MESSAGE = "Thanks for using PlanNUS! We hope to see you again!"; + private static final String HELP_MESSAGE = "\tFor academic planner, type \n" + + "\tFor CAP calculator, type \n" + + "\tTo exit PlanNUS, type "; private Ui ui; private ModuleInitializer allModules; private Person currentPerson; @@ -22,7 +26,8 @@ public Duke() { } public void run() { - System.out.println("hello welcome to plannus"); + System.out.println(WELCOME_MESSAGE); + System.out.println(HELP_MESSAGE); boolean isExit = false; while (!isExit) { @@ -31,12 +36,13 @@ public void run() { App selectedApp = AppParser.parse(userInput, allModules, currentPerson, ui); selectedApp.run(); isExit = selectedApp.isExit(); - System.out.println("hello welcome back to plannus"); + System.out.println(WELCOME_BACK_MESSAGE); + System.out.println(HELP_MESSAGE); } catch (Exception e) { System.out.println(e.getMessage()); } } - System.out.println("bye bye"); + System.out.println(EXIT_MESSAGE); } public static void main(String[] args) { diff --git a/src/main/java/seedu/duke/apps/AcademicPlanner.java b/src/main/java/seedu/duke/apps/AcademicPlanner.java index 1d656d8ca4..009ff7d9eb 100644 --- a/src/main/java/seedu/duke/apps/AcademicPlanner.java +++ b/src/main/java/seedu/duke/apps/AcademicPlanner.java @@ -39,20 +39,20 @@ public class AcademicPlanner extends App { private static final String EXIT_COMMAND = "EXIT"; private static final String EXIT_MESSAGE = "Thank you for using Academic Planner!"; private static final String COMMANDS_LIST = "Available commands are:\n" - + " add \n" - + " edit \n" - + " remove \n" - + " view\n" - + " exit\n" + + "\tadd \n" + + "\tedit \n" + + "\tremove \n" + + "\tview\n" + + "\texit\n" + "Type a command to continue..."; private static final String VALID_GRADES = "Valid grades are:\n" - + "Letter Grades: A+, A, B+, B, B-, C+, C, D+, D, F\n" - + "Special Grades: CS, CU, S, U, W, IC, IP, AUD, WU, EXE\n" - + "If you have yet to have a grade for the module: NT"; + + "\tLetter Grades: A+, A, A-, B+, B, B-, C+, C, D+, D, F\n" + + "\tSpecial Grades: CS, CU, S, U, W, IC, IP, AUD, WU, EXE\n" + + "\tIf you have yet to have a grade for the module: NT"; private static final String VALID_SEMESTERS = "Valid semesters are integers from 1 to 10, inclusive"; public static final String PROMPT_EDIT_CHOICES = "Enter the number corresponding to the feature you wish to edit:\n" - + "1) Semester\n" - + "2) Grade"; + + "\t1) Semester\n" + + "\t2) Grade"; private final ModuleInitializer allModules; private final ArrayList modulesList; @@ -101,8 +101,12 @@ public void run() { System.out.println(EXITING_CURRENT_COMMAND); } } catch (AcademicException e) { - System.out.println(ERROR_INVALID_COMMAND); - System.out.println(EXITING_CURRENT_COMMAND); + if (e.getMessage() == "") { + System.out.println(ERROR_INVALID_COMMAND); + System.out.println(EXITING_CURRENT_COMMAND); + } else { + System.out.println(e.getMessage()); + } } printCommandsList(); fullInput = scanner.nextLine().toUpperCase(); @@ -381,7 +385,8 @@ private void removeModuleFromUserModuleList(String moduleCode) { * @return boolean of module code in FullModule */ private boolean isModOfferedByNus(String moduleCode) { - return (allModules.getModuleMap().get(moduleCode) > -1); + boolean isOffered = allModules.getModuleMap().get(moduleCode) != null; + return (isOffered); } /** diff --git a/src/main/java/seedu/duke/apps/CapCalculator.java b/src/main/java/seedu/duke/apps/CapCalculator.java index 4953499a10..05e4bcf562 100644 --- a/src/main/java/seedu/duke/apps/CapCalculator.java +++ b/src/main/java/seedu/duke/apps/CapCalculator.java @@ -10,12 +10,7 @@ import java.util.Scanner; public class CapCalculator extends App { - private Person person; - private Scanner scanner; - private Ui ui; - private final DecimalFormat formatFinalCap = new DecimalFormat("#.##"); - //CONSTANTS private static final double MAXIMUM_CAP = 5.00; private static final String ERROR_INVALID_COMMAND = "INVALID COMMAND"; private static final String AWAIT_COMMAND = "Type a command to continue..."; @@ -26,10 +21,15 @@ public class CapCalculator extends App { private static final String INVALID_CAP_MESSAGE = "Your target CAP cannot be greater than the maximum CAP of 5!"; private static final String INVALID_MC_MESSAGE = "Your target MC cannot be 0!"; private static final String WELCOME_MESSAGE = "Welcome to CAP Calculator! Commands available are:\n" - + " Current\n" - + " Set target\n" - + "To exit CAP Calculator, use command: \"exit\"\n\n" - + "Initializing your CAP..."; + + "\tCurrent\n" + + "\tSet target\n" + + "\tTo exit CAP Calculator, use command: \"exit\"\n\n" + + "\tInitializing your CAP..."; + + private Person person; + private Scanner scanner; + private Ui ui; + private final DecimalFormat formatFinalCap = new DecimalFormat("#.##"); public CapCalculator(Person currentPerson, Ui ui) { this.person = currentPerson; diff --git a/src/main/java/seedu/duke/parser/AppParser.java b/src/main/java/seedu/duke/parser/AppParser.java index 90c7d24838..6554bd2302 100644 --- a/src/main/java/seedu/duke/parser/AppParser.java +++ b/src/main/java/seedu/duke/parser/AppParser.java @@ -9,18 +9,24 @@ import seedu.duke.ui.Ui; public class AppParser { + + private static final String ACADEMIC_PLAN_COMMAND = "acadplan"; + private static final String CAP_CALCULATOR_COMMAND = "capcalc"; + private static final String EXIT_COMMAND = "exit"; + private static final String INVALID_COMMAND_MESSAGE = "OOPS!!! I'm sorry, but I don't know what that means :-("; + public static App parse(String userInput, ModuleInitializer allModules, Person currentPerson, Ui ui) throws AppParserException { userInput = userInput.trim().toLowerCase(); - if (userInput.equals("acadplan")) { + if (userInput.equals(ACADEMIC_PLAN_COMMAND)) { return new AcademicPlanner(allModules, currentPerson, ui); - } else if (userInput.equals("capcalc")) { + } else if (userInput.equals(CAP_CALCULATOR_COMMAND)) { return new CapCalculator(currentPerson, ui); - } else if (userInput.equals("exit")) { + } else if (userInput.equals(EXIT_COMMAND)) { return new App(true); } else { - throw new AppParserException("OOPS!!! I'm sorry, but I don't know what that means :-("); + throw new AppParserException(INVALID_COMMAND_MESSAGE); } } } From 547ca2a54188e8348f9fec1884443073a78a0a5b Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Wed, 7 Oct 2020 11:02:24 +0800 Subject: [PATCH 035/450] Update EXPECTED.txt --- text-ui-test/EXPECTED.TXT | 56 ++++++++++++++++++++++++--------------- 1 file changed, 34 insertions(+), 22 deletions(-) diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index dca835b432..251851cf98 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -1,41 +1,53 @@ -hello welcome to plannus +Welcome to PlanNUS! + For academic planner, type + For CAP calculator, type + To exit PlanNUS, type Welcome to Academic Planner! Available commands are: - add - edit - remove - view - exit + add + edit + remove + view + exit Type a command to continue... Semester you plan to take CS1010? Valid semesters are integers from 1 to 10, inclusive Grade received for CS1010? Valid grades are: -Letter Grades: A+, A, B+, B, B-, C+, C, D+, D, F -Special Grades: CS, CU, S, U, W, IC, IP, AUD, WU, EXE -If you have yet to have a grade for the module: NT + Letter Grades: A+, A, A-, B+, B, B-, C+, C, D+, D, F + Special Grades: CS, CU, S, U, W, IC, IP, AUD, WU, EXE + If you have yet to have a grade for the module: NT CS1010 added into Semester 2. Available commands are: - add - edit - remove - view - exit + add + edit + remove + view + exit Type a command to continue... Thank you for using Academic Planner! -hello welcome back to plannus +Welcome back to PlanNUS Main Menu! + For academic planner, type + For CAP calculator, type + To exit PlanNUS, type Welcome to CAP Calculator! Commands available are: - Current - Set target -To exit CAP Calculator, use command: "exit" + Current + Set target + To exit CAP Calculator, use command: "exit" -Initializing your CAP... + Initializing your CAP... Type a command to continue... Your current now CAP is: 5 Number of graded MCs taken is: 4 EXITING CAPCALC -hello welcome back to plannus +Welcome back to PlanNUS Main Menu! + For academic planner, type + For CAP calculator, type + To exit PlanNUS, type OOPS!!! I'm sorry, but I don't know what that means :-( -hello welcome back to plannus -bye bye +Welcome back to PlanNUS Main Menu! + For academic planner, type + For CAP calculator, type + To exit PlanNUS, type +Thanks for using PlanNUS! We hope to see you again! From 7e6738d6709c943af0fd6b4fd26270c88ccaa228 Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Wed, 7 Oct 2020 20:15:59 +0800 Subject: [PATCH 036/450] add Academic Planner Parser with academic planner add command --- .../java/seedu/duke/apps/AcademicPlanner.java | 16 +++ .../commands/AcademicPlannerAddCommand.java | 68 ++++++++++ .../duke/commands/AcademicPlannerCommand.java | 21 +++ .../duke/commons/AcademicPlannerCommon.java | 120 ++++++++++++++++++ .../AcademicPlannerParserException.java | 15 +++ .../duke/parser/AcademicPlannerParser.java | 47 +++++++ 6 files changed, 287 insertions(+) create mode 100644 src/main/java/seedu/duke/commands/AcademicPlannerAddCommand.java create mode 100644 src/main/java/seedu/duke/commands/AcademicPlannerCommand.java create mode 100644 src/main/java/seedu/duke/commons/AcademicPlannerCommon.java create mode 100644 src/main/java/seedu/duke/exceptions/AcademicPlannerParserException.java create mode 100644 src/main/java/seedu/duke/parser/AcademicPlannerParser.java diff --git a/src/main/java/seedu/duke/apps/AcademicPlanner.java b/src/main/java/seedu/duke/apps/AcademicPlanner.java index 009ff7d9eb..17bfe16ee9 100644 --- a/src/main/java/seedu/duke/apps/AcademicPlanner.java +++ b/src/main/java/seedu/duke/apps/AcademicPlanner.java @@ -1,8 +1,11 @@ package seedu.duke.apps; +import seedu.duke.commands.AcademicPlannerCommand; import seedu.duke.exceptions.AcademicException; +import seedu.duke.exceptions.AcademicPlannerParserException; import seedu.duke.objects.PartialModule; import seedu.duke.objects.Person; +import seedu.duke.parser.AcademicPlannerParser; import seedu.duke.ui.Ui; import java.util.ArrayList; @@ -78,6 +81,19 @@ private void printCommandsList() { public void run() { System.out.println(WELCOME_MESSAGE); printCommandsList(); + boolean isExit = false; + + while (!isExit) { + try { + String userInput = ui.getScanner().nextLine(); + AcademicPlannerCommand selectedCommand + = AcademicPlannerParser.parse(userInput,allModules,currentPerson,ui); + selectedCommand.run(); + } catch (AcademicPlannerParserException e) { + System.out.println(e.getMessage()); + } + } + String fullInput = scanner.nextLine().toUpperCase();; String[] inputs = fullInput.split(" "); diff --git a/src/main/java/seedu/duke/commands/AcademicPlannerAddCommand.java b/src/main/java/seedu/duke/commands/AcademicPlannerAddCommand.java new file mode 100644 index 0000000000..3bc445590b --- /dev/null +++ b/src/main/java/seedu/duke/commands/AcademicPlannerAddCommand.java @@ -0,0 +1,68 @@ +package seedu.duke.commands; + +import seedu.duke.apps.ModuleInitializer; +import seedu.duke.commons.AcademicPlannerCommon; +import seedu.duke.exceptions.AcademicPlannerParserException; +import seedu.duke.objects.Person; +import seedu.duke.ui.Ui; +import static seedu.duke.commons.AcademicPlannerCommon.getModuleCodeFromInput; +import static seedu.duke.commons.AcademicPlannerCommon.getSemesterFromInput; +import static seedu.duke.commons.AcademicPlannerCommon.getGradeFromInput; + + +public class AcademicPlannerAddCommand extends AcademicPlannerCommand { + + private String moduleCode; + private int semester; + private String grade; + private Person user; + private Ui ui = new Ui(); + private AcademicPlannerCommon apc = new AcademicPlannerCommon(); + + //userInput format = "add m/cs1010 s/2 g/A+" + public AcademicPlannerAddCommand(String userInput, ModuleInitializer allmodules, + Person currentPerson, Ui ui) throws AcademicPlannerParserException { + setModuleCode(getModuleCodeFromInput(userInput)); + setSemester(getSemesterFromInput(userInput)); + setGrade(getGradeFromInput(userInput)); + setUser(currentPerson); + } + + public Person getUser() { + return user; + } + + public void setUser(Person user) { + this.user = user; + } + + public String getModuleCode() { + return moduleCode; + } + + public void setModuleCode(String moduleCode) { + this.moduleCode = moduleCode; + } + + public int getSemester() { + return semester; + } + + public void setSemester(int semester) { + this.semester = semester; + } + + public String getGrade() { + return grade; + } + + public void setGrade(String grade) { + this.grade = grade; + } + + @Override + public void run() { + int moduleCredit = apc.getModuleCreditForModule(moduleCode); + apc.addModuleToUser(moduleCode,semester,grade,moduleCredit,getUser(),ui); + } +} diff --git a/src/main/java/seedu/duke/commands/AcademicPlannerCommand.java b/src/main/java/seedu/duke/commands/AcademicPlannerCommand.java new file mode 100644 index 0000000000..f2244c6326 --- /dev/null +++ b/src/main/java/seedu/duke/commands/AcademicPlannerCommand.java @@ -0,0 +1,21 @@ +package seedu.duke.commands; + +public class AcademicPlannerCommand { + boolean isExit = false; + + public AcademicPlannerCommand() { + + } + + public AcademicPlannerCommand(boolean isExitCommand) { + this.isExit = isExitCommand; + } + + public boolean isExit() { + return isExit; + } + + public void run() { + + } +} diff --git a/src/main/java/seedu/duke/commons/AcademicPlannerCommon.java b/src/main/java/seedu/duke/commons/AcademicPlannerCommon.java new file mode 100644 index 0000000000..7921c02eac --- /dev/null +++ b/src/main/java/seedu/duke/commons/AcademicPlannerCommon.java @@ -0,0 +1,120 @@ +package seedu.duke.commons; + +import seedu.duke.apps.ModuleInitializer; +import seedu.duke.exceptions.AcademicPlannerParserException; +import seedu.duke.objects.PartialModule; +import seedu.duke.objects.Person; +import seedu.duke.ui.Ui; + +import java.util.ArrayList; +import java.util.HashMap; + +public class AcademicPlannerCommon { + + private static final int FROM_ADD = 1; + private static final int FROM_EDIT = 2; + private static final int FROM_REMOVE = 3; + + private ModuleInitializer allModules = new ModuleInitializer(); + + public AcademicPlannerCommon() { + + } + + public static String getModuleCodeFromInput(String userInput) { + int moduleCodeStartIndex = userInput.indexOf("/m") + 1; + int moduleCodeEndIndex = userInput.indexOf("/") - 1; + return userInput.substring(moduleCodeStartIndex,moduleCodeEndIndex); + } + + public static int getSemesterFromInput(String userInput) throws AcademicPlannerParserException { + int semesterStartIndex = userInput.indexOf("/s") + 1; + int semesterEndIndex = userInput.indexOf("/") - 1; + try { + int inputSemester = Integer.parseInt(userInput.substring(semesterStartIndex,semesterEndIndex)); + return inputSemester; + } catch (Exception e) { + throw new AcademicPlannerParserException("Input semester is not an integer!"); + } + } + + public static String getGradeFromInput(String userInput) { + int gradeStartIndex = userInput.indexOf("/g"); + return userInput.substring(gradeStartIndex); + } + + public int getModuleCreditForModule(String moduleCode) { + int mapIndex = allModules.getModuleMap().get(moduleCode); + return allModules.getModuleFullDetails()[mapIndex].getModuleCredit(); + } + + public void addModuleToUser(String moduleCode, int semesterValue, String gradeValue, int moduleCredit, + Person currentPerson, Ui ui) { + PartialModule newModuleToAdd = new PartialModule(moduleCode, semesterValue, gradeValue, moduleCredit); + ArrayList modulesList = currentPerson.getModulesList(); + HashMap modulesAddedMap = currentPerson.getModulesAddedMap(); + modulesList.add(newModuleToAdd); + modulesAddedMap.put(moduleCode, newModuleToAdd); + updateCap(FROM_ADD, newModuleToAdd, currentPerson); + System.out.println(newModuleToAdd.getModuleCode() + + " added into Semester " + semesterValue + "."); + } + + public void updateCap(int type, PartialModule currentModule,Person currentPerson, double... caps) { + + ArrayList modulesList = currentPerson.getModulesList(); + HashMap modulesAddedMap = currentPerson.getModulesAddedMap(); + + // Caps is an array, 0 being oldCap, 1 being newCap + if (type == FROM_ADD) { + //Incrementing total MC regardless of SU + int moduleCredit = currentModule.getModuleCredit(); + currentPerson.setCurrentMc(currentPerson.getCurrentMc() + moduleCredit); + + //Incrementing total MC after SU only if module is not SU + if (currentModule.getCap() != -1.00) { + currentPerson.setCurrentMcAfterSU(currentPerson.getCurrentMcAfterSU() + moduleCredit); + double newMCxGrade = currentModule.getCap() * moduleCredit; + currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() + newMCxGrade); + } + } else if (type == FROM_REMOVE) { + //Decreasing total MC regardless of SU + currentPerson.setCurrentMc(currentPerson.getCurrentMc() + - currentModule.getModuleCredit()); + + //Decreasing total MC after SU only if module is not SU + if (currentModule.getCap() != -1.00) { + currentPerson.setCurrentMcAfterSU(currentPerson.getCurrentMcAfterSU() + - currentModule.getModuleCredit()); + double mcxGradeToMinus = currentModule.getCap() * currentModule.getModuleCredit(); + currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() + - mcxGradeToMinus); + } + } else if (type == FROM_EDIT) { + if (caps[0] == -1.00 && caps[1] != -1.00) { + //Case where previously was SU but new is not SU + currentPerson.setCurrentMcAfterSU(currentPerson.getCurrentMcAfterSU() + + currentModule.getModuleCredit()); + double newMCxGrade = caps[1] * currentModule.getModuleCredit(); + currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() + + newMCxGrade); + + } else if (caps[0] != -1.00 && caps[1] == -1.00) { + //Case where previously was not SU but now is SU + currentPerson.setCurrentMcAfterSU(currentPerson.getCurrentMcAfterSU() + - currentModule.getModuleCredit()); + double mcxGradeToMinus = caps[0] * currentModule.getModuleCredit(); + currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() + - mcxGradeToMinus); + + } else if (caps[0] != caps[1]) { + //Case where previously and new cap are not SU but not the same + double oldMCxGrade = caps[0] * currentModule.getModuleCredit(); + double newMCxGrade = caps[1] * currentModule.getModuleCredit(); + double mcxGradeToSet = newMCxGrade - oldMCxGrade; + currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() + + mcxGradeToSet); + } + } + } +} diff --git a/src/main/java/seedu/duke/exceptions/AcademicPlannerParserException.java b/src/main/java/seedu/duke/exceptions/AcademicPlannerParserException.java new file mode 100644 index 0000000000..8d270d8528 --- /dev/null +++ b/src/main/java/seedu/duke/exceptions/AcademicPlannerParserException.java @@ -0,0 +1,15 @@ +package seedu.duke.exceptions; + +public class AcademicPlannerParserException extends Exception { + + String errorMessage; + + public AcademicPlannerParserException(String errorMessage) { + this.errorMessage = errorMessage; + } + + @Override + public String getMessage() { + return this.errorMessage; + } +} diff --git a/src/main/java/seedu/duke/parser/AcademicPlannerParser.java b/src/main/java/seedu/duke/parser/AcademicPlannerParser.java new file mode 100644 index 0000000000..76b5b063c3 --- /dev/null +++ b/src/main/java/seedu/duke/parser/AcademicPlannerParser.java @@ -0,0 +1,47 @@ +package seedu.duke.parser; + +import seedu.duke.commands.AcademicPlannerAddCommand; +import seedu.duke.commands.AcademicPlannerCommand; +import seedu.duke.apps.ModuleInitializer; +import seedu.duke.exceptions.AcademicPlannerParserException; +import seedu.duke.objects.Person; +import seedu.duke.ui.Ui; + + +public class AcademicPlannerParser { + + private static final String ADD_COMMAND = "add"; + private static final String EDIT_COMMAND = "edit;"; + private static final String REMOVE_COMMAND = "remove"; + private static final String LIST_COMMAND = "list"; + private static final String EXIT_COMMAND = "exit"; + private static final String INVALID_COMMAND_MESSAGE = "OOPS!!! I'm sorry, but I don't know what that means :-("; + + public static AcademicPlannerCommand parse(String userInput, ModuleInitializer allmodules, + Person currentPerson, Ui ui) throws AcademicPlannerParserException { + userInput = userInput.trim().toLowerCase(); + + if (userInput.startsWith(ADD_COMMAND)) { + //ADD COMMAND + System.out.println("add command"); + return new AcademicPlannerAddCommand(userInput, allmodules, currentPerson, ui); + } else if (userInput.startsWith(EDIT_COMMAND)) { + //EDIT COMMAND + System.out.println("edit command"); + return new AcademicPlannerAddCommand(userInput, allmodules, currentPerson, ui); + } else if (userInput.startsWith(REMOVE_COMMAND)) { + //REMOVE COMMAND + System.out.println("remove command"); + return new AcademicPlannerAddCommand(userInput, allmodules, currentPerson, ui); + } else if (userInput.equals(LIST_COMMAND)) { + //LIST COMMAND + System.out.println("list command"); + return new AcademicPlannerAddCommand(userInput, allmodules, currentPerson, ui); + } else if (userInput.equals(EXIT_COMMAND)) { + //EXIT + return new AcademicPlannerCommand(true); + } else { + throw new AcademicPlannerParserException(INVALID_COMMAND_MESSAGE); + } + } +} From 93a6e609e5656f7fae1c923ea26fd87c02b0548a Mon Sep 17 00:00:00 2001 From: harryleecp Date: Thu, 8 Oct 2020 15:34:44 +0800 Subject: [PATCH 037/450] Testing the use of images on user guide --- docs/UserGuide.md | 224 +++++++++++++++++++++++++++-- docs/images/Main_Page_Features.png | Bin 0 -> 9625 bytes 2 files changed, 209 insertions(+), 15 deletions(-) create mode 100644 docs/images/Main_Page_Features.png diff --git a/docs/UserGuide.md b/docs/UserGuide.md index abd9fbe891..68c00cd350 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -1,33 +1,163 @@ # User Guide -## Introduction +PlanNUS is a __desktop application for planning academic journey__ with modules offered by National University of Singapore (NUS). The __Command Line Interface (CLI)__ will be required for the program to work. + + + +## Table of Contents + +- [Quick Start](#Quick Start) +- [Features](#Features) + - [Academic Calendar Planner: `acadPlan`](#Academic Calendar Planner: `acadPlan`) + - [Adding a module into the calendar: `add`](#Adding a module into the calendar: `add`) + - [Removing an existing module in the calendar: `remove`](#Removing an existing module in the calendar: `remove`) + - [Editing an existing module in the calendar: `edit`](#Editing an existing module in the calendar: `edit`) + - [Printing the academic calendar: `view`](#Printing the academic calendar: `view`) + - [CAP calculator: `capCalc`](#CAP calculator: `capCalc`) + - [Printing current CAP and MCs taken: `current`](#Printing current CAP and MCs taken: `current`) + - [Configure current CAP and graded MCs: `set current`](#Configure current CAP and graded MCs: `set current`) + - [Set target CAP: `set target`](#Set target CAP: `set target`) + - [Make the module grade as S/U: `set SU`](#Make the module grade as S/U: `set SU`) + - [Exiting from a feature: `exit`](#Exiting from a feature) +- [FAQ](#FAQ) +- [Command Summary](#Command Summary) +- [Appendix](#Appendix) -{Give a product intro} -## Quick Start -{Give steps to get started quickly} +## Quick Start 1. Ensure that you have Java 11 or above installed. -1. Down the latest version of `Duke` from [here](http://link.to/duke). +1. Down the latest version of `PlanNUS` from [here](http://link.to/duke). +1. Double click on _PlanNUS.jar_ to start up the program. +1. If the previous step does not work, open up the command prompt. +1. Go to the directory where the jar file is saved at. +1. Enter the following command `java -jar PlanNUS.jar` + + ## Features -{Give detailed description of each feature} +PlanNUS has two separate commands at the main page where the users can either choose to have an outlook of their potential academic journey or calculate their CAP. For each of these commands, there are more specific functions for configuration of user's desired choices. + + + +### Academic Calendar Planner: `acadPlan` +Directs user to the page where he/she can plan a personalized academic journey in NUS by using `add`, `remove` or `edit` features as shown below. -### Adding a todo: `todo` -Adds a new item to the list of todo items. +{Photo here} -Format: `todo n/TODO_NAME d/DEADLINE` +Input format: `acadPlan` -* The `DEADLINE` can be in a natural language format. -* The `TODO_NAME` cannot contain punctuation. +#### Adding a module into the calendar: `add` + +Input format: `add ` Example of usage: -`todo n/Write the rest of the User Guide d/next week` +* `add CS2113T` +* `ADD cs2101` + +{Photo here} + +__Caution:__ + +* Invalid module codes (i.e. Modules not offered by NUS) cannot be added into the calendar +* Duplicate module codes cannot be added into the calendar as well + +#### Removing an existing module in the calendar: `remove` + +Input format: `remove ` + +Example of usage: + +* `remove cs2113T` +* `REMOVE CS2101` + +{Photo here} + +__Caution:__ + +* Only modules that have been added into the calendar can be removed + +#### Editing an existing module in the calendar: `edit` + +Input format: `edit ` + +Example of usage: + +* `edit CS2113T` +* `EDIT cs2101` + +{Photo here} + +__Caution:__ + +* Only modules that have been added into the calendar can be edited + +#### Printing the academic calendar: `view` + +Input format: `view` + +{Photo here} + + + +### Cap Calculator: `capCalc` + +#### Printing current CAP and MCs taken: `current` + +Input format: `current` + +{Photo here} + +__Caution:__ + +* Initializing the current CAP reads in all the modules added by the user in Academic Calendar Planner. +* If there are no modules added, the current CAP and graded MCs are set to 0 + +#### Configure current CAP and graded MCs: `set current` + +Input format: `set current` + +{Photo here} + +__Caution:__ + +* Maximum CAP is 5.0 + +#### Set target CAP: `set target` + +This is for the user to set a target CAP that he or she wishes to obtain for the specified graded MCs. + +Input format: `set target` + +{Photo here} + +__Caution:__ + +* Maximum CAP is 5.0 + +#### Make the module grade as S/U: `set SU` + +Input format: `set SU` + +When prompted for the module that user has taken, the input format will be as such: +` ` (Example: `CS2113T B+ 4`) + +{Photo here} + + + +### Exiting from a feature: `exit` + +This command directs user back to the main page of PlanNUS after they are done using a feature. + +{Photo here} + +Input format: `exit` + -`todo n/Refactor the User Guide to remove passive voice d/13/04/2020` ## FAQ @@ -35,8 +165,72 @@ Example of usage: **A**: {your answer here} + + ## Command Summary -{Give a 'cheat sheet' of commands here} +Note that the following commands are case-insensitive. + +* Initiate the __Academic Calendar Planner__: `acadPlan` + +| __Action__ | Command | +| ------------------------------------------- | ---------------------- | +| Adding a module into the calendar | `add ` | +| Removing an existing module in the calendar | `remove ` | +| Editing an existing module in the calendar | `edit ` | +| Printing the academic calendar | `view` | + +* Initiate the __CAP calculator__: `capCalc` + +| __Action__ | __Command__ | +| ------------------------------------ | ------------- | +| Printing current CAP and MCs taken | `current` | +| Configure current CAP and graded MCs | `set current` | +| Set target CAP | `set target` | +| Make the module grade as S/U | `set SU` | + +* To exit to the main page: `exit` + + + +## Appendix + +### Naming convention for semester indexes + +For the purpose of this planning software, we have decided to limit the maximum number of semesters an undergraduate can take to 10, which is equivalent to 5 academic years. Each semester is indexed by an integer between 1 to 10. For a fresh undergraduate, they will begin at semester index of 1. For a year 3 student who is currently in semester 1, the semester index will be 5. Below is a table which illustrates the corresponding semester indexes for undergraduates. + +| Academic Year | Semester (as of Academic Year) | Semester Index | +| :-----------: | :----------------------------: | :------------: | +| 1 | 1 | 1 | +| 1 | 2 | 2 | +| 2 | 1 | 3 | +| 2 | 2 | 4 | +| 3 | 1 | 5 | +| 3 | 2 | 6 | +| 4 | 1 | 7 | +| 4 | 2 | 8 | +| 5 | 1 | 9 | +| 5 | 2 | 10 | + + + +### Grade values + +As per NUS Grade Policy, letter grades will have a corresponding Academic Point attached to them. Special cases such as Satisfactory/Unsatisfactory (SU) grades can be captured by our software as well. Below is a table of grades and their corresponding grade value. Do note that the grades of forecasted modules should be declared as NT, short for Not Taken. + +| Grade | Academic Points | +| :-------------------------: | :-------------: | +| A+ | 5.0 | +| A | 5.0 | +| A- | 4.5 | +| B+ | 4.0 | +| B | 3.5 | +| B- | 3.0 | +| C+ | 2.5 | +| C | 2.0 | +| D+ | 1.5 | +| D | 1.0 | +| F | 0.0 | +| Additional Grading Options* | - | -* Add todo `todo n/TODO_NAME d/DEADLINE` +*Additional Grading options include S,U,CS,CU,IC,IP,AUD,EXE,W,WU. They hold no Academic Point Value. \ No newline at end of file diff --git a/docs/images/Main_Page_Features.png b/docs/images/Main_Page_Features.png new file mode 100644 index 0000000000000000000000000000000000000000..7cff769f4b23023260640f080e9feb07ea66c9ac GIT binary patch literal 9625 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 literal 0 HcmV?d00001 From e45dd6a600c92c38a329dae4d6dc7232704a8d4d Mon Sep 17 00:00:00 2001 From: harryleecp <60414537+harryleecp@users.noreply.github.com> Date: Thu, 8 Oct 2020 15:44:56 +0800 Subject: [PATCH 038/450] Set theme jekyll-theme-slate --- docs/_config.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 docs/_config.yml diff --git a/docs/_config.yml b/docs/_config.yml new file mode 100644 index 0000000000..c741881743 --- /dev/null +++ b/docs/_config.yml @@ -0,0 +1 @@ +theme: jekyll-theme-slate \ No newline at end of file From 0e8b228ab4d544d5ee087c371c721ccb2164856c Mon Sep 17 00:00:00 2001 From: harryleecp <60414537+harryleecp@users.noreply.github.com> Date: Thu, 8 Oct 2020 15:49:51 +0800 Subject: [PATCH 039/450] Update UserGuide.md Modified to suit the markdown theme --- docs/UserGuide.md | 31 ++++++++----------------------- 1 file changed, 8 insertions(+), 23 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 68c00cd350..8d8d731b00 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -1,29 +1,14 @@ -# User Guide +--- +layout: page +title: User Guide +--- PlanNUS is a __desktop application for planning academic journey__ with modules offered by National University of Singapore (NUS). The __Command Line Interface (CLI)__ will be required for the program to work. +* Table of Contents +{:toc} - -## Table of Contents - -- [Quick Start](#Quick Start) -- [Features](#Features) - - [Academic Calendar Planner: `acadPlan`](#Academic Calendar Planner: `acadPlan`) - - [Adding a module into the calendar: `add`](#Adding a module into the calendar: `add`) - - [Removing an existing module in the calendar: `remove`](#Removing an existing module in the calendar: `remove`) - - [Editing an existing module in the calendar: `edit`](#Editing an existing module in the calendar: `edit`) - - [Printing the academic calendar: `view`](#Printing the academic calendar: `view`) - - [CAP calculator: `capCalc`](#CAP calculator: `capCalc`) - - [Printing current CAP and MCs taken: `current`](#Printing current CAP and MCs taken: `current`) - - [Configure current CAP and graded MCs: `set current`](#Configure current CAP and graded MCs: `set current`) - - [Set target CAP: `set target`](#Set target CAP: `set target`) - - [Make the module grade as S/U: `set SU`](#Make the module grade as S/U: `set SU`) - - [Exiting from a feature: `exit`](#Exiting from a feature) -- [FAQ](#FAQ) -- [Command Summary](#Command Summary) -- [Appendix](#Appendix) - - +-------------------------------------------------------------------------------------------------------------------- ## Quick Start @@ -233,4 +218,4 @@ As per NUS Grade Policy, letter grades will have a corresponding Academic Point | F | 0.0 | | Additional Grading Options* | - | -*Additional Grading options include S,U,CS,CU,IC,IP,AUD,EXE,W,WU. They hold no Academic Point Value. \ No newline at end of file +*Additional Grading options include S,U,CS,CU,IC,IP,AUD,EXE,W,WU. They hold no Academic Point Value. From c7256841e930072bcd72a595752956bec4f6d435 Mon Sep 17 00:00:00 2001 From: harryleecp <60414537+harryleecp@users.noreply.github.com> Date: Thu, 8 Oct 2020 15:52:54 +0800 Subject: [PATCH 040/450] Update UserGuide.md --- docs/UserGuide.md | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 8d8d731b00..6341fa8747 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -1,15 +1,10 @@ ---- -layout: page -title: User Guide ---- +# User Guide PlanNUS is a __desktop application for planning academic journey__ with modules offered by National University of Singapore (NUS). The __Command Line Interface (CLI)__ will be required for the program to work. * Table of Contents {:toc} --------------------------------------------------------------------------------------------------------------------- - ## Quick Start 1. Ensure that you have Java 11 or above installed. From 376f1ffbc7f6db0ea9fa2e64d7f195048b28ae3e Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Fri, 9 Oct 2020 11:02:18 +0800 Subject: [PATCH 041/450] update Readme.md with correct web links --- docs/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/README.md b/docs/README.md index 65125b1848..501ba4738c 100644 --- a/docs/README.md +++ b/docs/README.md @@ -27,7 +27,7 @@ With the `CAP Calulator` , plaNUS will be able to tell you your current CAP and 2. Loading of Academic Calendar Planner from text file. Useful links: -* [User Guide](UserGuide.md) -* [Developer Guide](DeveloperGuide.md) -* [About Us](AboutUs.md) +* [User Guide](https://ay2021s1-cs2113t-f12-1.github.io/tp/UserGuide.html "User Guide") +* [Developer Guide](https://ay2021s1-cs2113t-f12-1.github.io/tp/DeveloperGuide.html "Developer Guide") +* [About Us](https://ay2021s1-cs2113t-f12-1.github.io/tp/AboutUs.html "About Us") * [Planning Document](https://docs.google.com/document/d/1ikOD_2NS2qUSGtQJpqbVWX7g5mAFV6_jxhiAlka_SSs/edit?usp=sharing "Collaborative Document") From 3570f0ca52ffc0c26f5197b0bfef6de6992d4829 Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Fri, 9 Oct 2020 11:11:02 +0800 Subject: [PATCH 042/450] Update expected.txt --- text-ui-test/EXPECTED.TXT | 37 +++---------------------------------- 1 file changed, 3 insertions(+), 34 deletions(-) diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 251851cf98..9baa42cc06 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -11,40 +11,9 @@ Available commands are: view exit Type a command to continue... -Semester you plan to take CS1010? -Valid semesters are integers from 1 to 10, inclusive -Grade received for CS1010? -Valid grades are: - Letter Grades: A+, A, A-, B+, B, B-, C+, C, D+, D, F - Special Grades: CS, CU, S, U, W, IC, IP, AUD, WU, EXE - If you have yet to have a grade for the module: NT -CS1010 added into Semester 2. -Available commands are: - add - edit - remove - view - exit -Type a command to continue... -Thank you for using Academic Planner! -Welcome back to PlanNUS Main Menu! - For academic planner, type - For CAP calculator, type - To exit PlanNUS, type -Welcome to CAP Calculator! Commands available are: - Current - Set target - To exit CAP Calculator, use command: "exit" - - Initializing your CAP... -Type a command to continue... -Your current now CAP is: 5 -Number of graded MCs taken is: 4 -EXITING CAPCALC -Welcome back to PlanNUS Main Menu! - For academic planner, type - For CAP calculator, type - To exit PlanNUS, type +add command +begin 0, end -2, length 10 +OOPS!!! I'm sorry, but I don't know what that means :-( OOPS!!! I'm sorry, but I don't know what that means :-( Welcome back to PlanNUS Main Menu! For academic planner, type From 59e8de0cb2ea0293ec26f8eaf1c46b4db21b83ed Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Wed, 7 Oct 2020 20:15:59 +0800 Subject: [PATCH 043/450] add Academic Planner Parser with academic planner add command --- .../java/seedu/duke/apps/AcademicPlanner.java | 16 +++ .../commands/AcademicPlannerAddCommand.java | 68 ++++++++++ .../duke/commands/AcademicPlannerCommand.java | 21 +++ .../duke/commons/AcademicPlannerCommon.java | 120 ++++++++++++++++++ .../AcademicPlannerParserException.java | 15 +++ .../duke/parser/AcademicPlannerParser.java | 47 +++++++ 6 files changed, 287 insertions(+) create mode 100644 src/main/java/seedu/duke/commands/AcademicPlannerAddCommand.java create mode 100644 src/main/java/seedu/duke/commands/AcademicPlannerCommand.java create mode 100644 src/main/java/seedu/duke/commons/AcademicPlannerCommon.java create mode 100644 src/main/java/seedu/duke/exceptions/AcademicPlannerParserException.java create mode 100644 src/main/java/seedu/duke/parser/AcademicPlannerParser.java diff --git a/src/main/java/seedu/duke/apps/AcademicPlanner.java b/src/main/java/seedu/duke/apps/AcademicPlanner.java index 009ff7d9eb..17bfe16ee9 100644 --- a/src/main/java/seedu/duke/apps/AcademicPlanner.java +++ b/src/main/java/seedu/duke/apps/AcademicPlanner.java @@ -1,8 +1,11 @@ package seedu.duke.apps; +import seedu.duke.commands.AcademicPlannerCommand; import seedu.duke.exceptions.AcademicException; +import seedu.duke.exceptions.AcademicPlannerParserException; import seedu.duke.objects.PartialModule; import seedu.duke.objects.Person; +import seedu.duke.parser.AcademicPlannerParser; import seedu.duke.ui.Ui; import java.util.ArrayList; @@ -78,6 +81,19 @@ private void printCommandsList() { public void run() { System.out.println(WELCOME_MESSAGE); printCommandsList(); + boolean isExit = false; + + while (!isExit) { + try { + String userInput = ui.getScanner().nextLine(); + AcademicPlannerCommand selectedCommand + = AcademicPlannerParser.parse(userInput,allModules,currentPerson,ui); + selectedCommand.run(); + } catch (AcademicPlannerParserException e) { + System.out.println(e.getMessage()); + } + } + String fullInput = scanner.nextLine().toUpperCase();; String[] inputs = fullInput.split(" "); diff --git a/src/main/java/seedu/duke/commands/AcademicPlannerAddCommand.java b/src/main/java/seedu/duke/commands/AcademicPlannerAddCommand.java new file mode 100644 index 0000000000..3bc445590b --- /dev/null +++ b/src/main/java/seedu/duke/commands/AcademicPlannerAddCommand.java @@ -0,0 +1,68 @@ +package seedu.duke.commands; + +import seedu.duke.apps.ModuleInitializer; +import seedu.duke.commons.AcademicPlannerCommon; +import seedu.duke.exceptions.AcademicPlannerParserException; +import seedu.duke.objects.Person; +import seedu.duke.ui.Ui; +import static seedu.duke.commons.AcademicPlannerCommon.getModuleCodeFromInput; +import static seedu.duke.commons.AcademicPlannerCommon.getSemesterFromInput; +import static seedu.duke.commons.AcademicPlannerCommon.getGradeFromInput; + + +public class AcademicPlannerAddCommand extends AcademicPlannerCommand { + + private String moduleCode; + private int semester; + private String grade; + private Person user; + private Ui ui = new Ui(); + private AcademicPlannerCommon apc = new AcademicPlannerCommon(); + + //userInput format = "add m/cs1010 s/2 g/A+" + public AcademicPlannerAddCommand(String userInput, ModuleInitializer allmodules, + Person currentPerson, Ui ui) throws AcademicPlannerParserException { + setModuleCode(getModuleCodeFromInput(userInput)); + setSemester(getSemesterFromInput(userInput)); + setGrade(getGradeFromInput(userInput)); + setUser(currentPerson); + } + + public Person getUser() { + return user; + } + + public void setUser(Person user) { + this.user = user; + } + + public String getModuleCode() { + return moduleCode; + } + + public void setModuleCode(String moduleCode) { + this.moduleCode = moduleCode; + } + + public int getSemester() { + return semester; + } + + public void setSemester(int semester) { + this.semester = semester; + } + + public String getGrade() { + return grade; + } + + public void setGrade(String grade) { + this.grade = grade; + } + + @Override + public void run() { + int moduleCredit = apc.getModuleCreditForModule(moduleCode); + apc.addModuleToUser(moduleCode,semester,grade,moduleCredit,getUser(),ui); + } +} diff --git a/src/main/java/seedu/duke/commands/AcademicPlannerCommand.java b/src/main/java/seedu/duke/commands/AcademicPlannerCommand.java new file mode 100644 index 0000000000..f2244c6326 --- /dev/null +++ b/src/main/java/seedu/duke/commands/AcademicPlannerCommand.java @@ -0,0 +1,21 @@ +package seedu.duke.commands; + +public class AcademicPlannerCommand { + boolean isExit = false; + + public AcademicPlannerCommand() { + + } + + public AcademicPlannerCommand(boolean isExitCommand) { + this.isExit = isExitCommand; + } + + public boolean isExit() { + return isExit; + } + + public void run() { + + } +} diff --git a/src/main/java/seedu/duke/commons/AcademicPlannerCommon.java b/src/main/java/seedu/duke/commons/AcademicPlannerCommon.java new file mode 100644 index 0000000000..7921c02eac --- /dev/null +++ b/src/main/java/seedu/duke/commons/AcademicPlannerCommon.java @@ -0,0 +1,120 @@ +package seedu.duke.commons; + +import seedu.duke.apps.ModuleInitializer; +import seedu.duke.exceptions.AcademicPlannerParserException; +import seedu.duke.objects.PartialModule; +import seedu.duke.objects.Person; +import seedu.duke.ui.Ui; + +import java.util.ArrayList; +import java.util.HashMap; + +public class AcademicPlannerCommon { + + private static final int FROM_ADD = 1; + private static final int FROM_EDIT = 2; + private static final int FROM_REMOVE = 3; + + private ModuleInitializer allModules = new ModuleInitializer(); + + public AcademicPlannerCommon() { + + } + + public static String getModuleCodeFromInput(String userInput) { + int moduleCodeStartIndex = userInput.indexOf("/m") + 1; + int moduleCodeEndIndex = userInput.indexOf("/") - 1; + return userInput.substring(moduleCodeStartIndex,moduleCodeEndIndex); + } + + public static int getSemesterFromInput(String userInput) throws AcademicPlannerParserException { + int semesterStartIndex = userInput.indexOf("/s") + 1; + int semesterEndIndex = userInput.indexOf("/") - 1; + try { + int inputSemester = Integer.parseInt(userInput.substring(semesterStartIndex,semesterEndIndex)); + return inputSemester; + } catch (Exception e) { + throw new AcademicPlannerParserException("Input semester is not an integer!"); + } + } + + public static String getGradeFromInput(String userInput) { + int gradeStartIndex = userInput.indexOf("/g"); + return userInput.substring(gradeStartIndex); + } + + public int getModuleCreditForModule(String moduleCode) { + int mapIndex = allModules.getModuleMap().get(moduleCode); + return allModules.getModuleFullDetails()[mapIndex].getModuleCredit(); + } + + public void addModuleToUser(String moduleCode, int semesterValue, String gradeValue, int moduleCredit, + Person currentPerson, Ui ui) { + PartialModule newModuleToAdd = new PartialModule(moduleCode, semesterValue, gradeValue, moduleCredit); + ArrayList modulesList = currentPerson.getModulesList(); + HashMap modulesAddedMap = currentPerson.getModulesAddedMap(); + modulesList.add(newModuleToAdd); + modulesAddedMap.put(moduleCode, newModuleToAdd); + updateCap(FROM_ADD, newModuleToAdd, currentPerson); + System.out.println(newModuleToAdd.getModuleCode() + + " added into Semester " + semesterValue + "."); + } + + public void updateCap(int type, PartialModule currentModule,Person currentPerson, double... caps) { + + ArrayList modulesList = currentPerson.getModulesList(); + HashMap modulesAddedMap = currentPerson.getModulesAddedMap(); + + // Caps is an array, 0 being oldCap, 1 being newCap + if (type == FROM_ADD) { + //Incrementing total MC regardless of SU + int moduleCredit = currentModule.getModuleCredit(); + currentPerson.setCurrentMc(currentPerson.getCurrentMc() + moduleCredit); + + //Incrementing total MC after SU only if module is not SU + if (currentModule.getCap() != -1.00) { + currentPerson.setCurrentMcAfterSU(currentPerson.getCurrentMcAfterSU() + moduleCredit); + double newMCxGrade = currentModule.getCap() * moduleCredit; + currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() + newMCxGrade); + } + } else if (type == FROM_REMOVE) { + //Decreasing total MC regardless of SU + currentPerson.setCurrentMc(currentPerson.getCurrentMc() + - currentModule.getModuleCredit()); + + //Decreasing total MC after SU only if module is not SU + if (currentModule.getCap() != -1.00) { + currentPerson.setCurrentMcAfterSU(currentPerson.getCurrentMcAfterSU() + - currentModule.getModuleCredit()); + double mcxGradeToMinus = currentModule.getCap() * currentModule.getModuleCredit(); + currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() + - mcxGradeToMinus); + } + } else if (type == FROM_EDIT) { + if (caps[0] == -1.00 && caps[1] != -1.00) { + //Case where previously was SU but new is not SU + currentPerson.setCurrentMcAfterSU(currentPerson.getCurrentMcAfterSU() + + currentModule.getModuleCredit()); + double newMCxGrade = caps[1] * currentModule.getModuleCredit(); + currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() + + newMCxGrade); + + } else if (caps[0] != -1.00 && caps[1] == -1.00) { + //Case where previously was not SU but now is SU + currentPerson.setCurrentMcAfterSU(currentPerson.getCurrentMcAfterSU() + - currentModule.getModuleCredit()); + double mcxGradeToMinus = caps[0] * currentModule.getModuleCredit(); + currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() + - mcxGradeToMinus); + + } else if (caps[0] != caps[1]) { + //Case where previously and new cap are not SU but not the same + double oldMCxGrade = caps[0] * currentModule.getModuleCredit(); + double newMCxGrade = caps[1] * currentModule.getModuleCredit(); + double mcxGradeToSet = newMCxGrade - oldMCxGrade; + currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() + + mcxGradeToSet); + } + } + } +} diff --git a/src/main/java/seedu/duke/exceptions/AcademicPlannerParserException.java b/src/main/java/seedu/duke/exceptions/AcademicPlannerParserException.java new file mode 100644 index 0000000000..8d270d8528 --- /dev/null +++ b/src/main/java/seedu/duke/exceptions/AcademicPlannerParserException.java @@ -0,0 +1,15 @@ +package seedu.duke.exceptions; + +public class AcademicPlannerParserException extends Exception { + + String errorMessage; + + public AcademicPlannerParserException(String errorMessage) { + this.errorMessage = errorMessage; + } + + @Override + public String getMessage() { + return this.errorMessage; + } +} diff --git a/src/main/java/seedu/duke/parser/AcademicPlannerParser.java b/src/main/java/seedu/duke/parser/AcademicPlannerParser.java new file mode 100644 index 0000000000..76b5b063c3 --- /dev/null +++ b/src/main/java/seedu/duke/parser/AcademicPlannerParser.java @@ -0,0 +1,47 @@ +package seedu.duke.parser; + +import seedu.duke.commands.AcademicPlannerAddCommand; +import seedu.duke.commands.AcademicPlannerCommand; +import seedu.duke.apps.ModuleInitializer; +import seedu.duke.exceptions.AcademicPlannerParserException; +import seedu.duke.objects.Person; +import seedu.duke.ui.Ui; + + +public class AcademicPlannerParser { + + private static final String ADD_COMMAND = "add"; + private static final String EDIT_COMMAND = "edit;"; + private static final String REMOVE_COMMAND = "remove"; + private static final String LIST_COMMAND = "list"; + private static final String EXIT_COMMAND = "exit"; + private static final String INVALID_COMMAND_MESSAGE = "OOPS!!! I'm sorry, but I don't know what that means :-("; + + public static AcademicPlannerCommand parse(String userInput, ModuleInitializer allmodules, + Person currentPerson, Ui ui) throws AcademicPlannerParserException { + userInput = userInput.trim().toLowerCase(); + + if (userInput.startsWith(ADD_COMMAND)) { + //ADD COMMAND + System.out.println("add command"); + return new AcademicPlannerAddCommand(userInput, allmodules, currentPerson, ui); + } else if (userInput.startsWith(EDIT_COMMAND)) { + //EDIT COMMAND + System.out.println("edit command"); + return new AcademicPlannerAddCommand(userInput, allmodules, currentPerson, ui); + } else if (userInput.startsWith(REMOVE_COMMAND)) { + //REMOVE COMMAND + System.out.println("remove command"); + return new AcademicPlannerAddCommand(userInput, allmodules, currentPerson, ui); + } else if (userInput.equals(LIST_COMMAND)) { + //LIST COMMAND + System.out.println("list command"); + return new AcademicPlannerAddCommand(userInput, allmodules, currentPerson, ui); + } else if (userInput.equals(EXIT_COMMAND)) { + //EXIT + return new AcademicPlannerCommand(true); + } else { + throw new AcademicPlannerParserException(INVALID_COMMAND_MESSAGE); + } + } +} From e8fb9561c448c68f5747bf39a3dbcb7f334ab9e1 Mon Sep 17 00:00:00 2001 From: JuZihao <57383789+JuZihao@users.noreply.github.com> Date: Fri, 9 Oct 2020 14:12:49 +0800 Subject: [PATCH 044/450] Added some OOP --- .../duke/parser/CapCalculatorParser.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/main/java/seedu/duke/parser/CapCalculatorParser.java diff --git a/src/main/java/seedu/duke/parser/CapCalculatorParser.java b/src/main/java/seedu/duke/parser/CapCalculatorParser.java new file mode 100644 index 0000000000..4e2152a49e --- /dev/null +++ b/src/main/java/seedu/duke/parser/CapCalculatorParser.java @@ -0,0 +1,27 @@ +package seedu.duke.parser; + +import seedu.duke.apps.CapCalculator; +import seedu.duke.objects.Person; +import seedu.duke.ui.Ui; + +public class CapCalculatorParser { + + private static final String CURRENT_COMMAND = "current"; + private static final String SET_TARGET_COMMAND = "set target"; + private static final String EXIT_COMMAND = "exit"; + private static final String INVALID_COMMAND_MESSAGE = "OOPS!!! I'm sorry, but I don't know what that means :-("; + + public static CapCalculatorParser parse(String userInput, Person currentPerson, Ui ui) { + userInput = userInput.trim().toLowerCase(); + + if (userInput.equals(CURRENT_COMMAND)) { + return new CapCalculatorCurrentCommand(); + } else if (userInput.equals(SET_TARGET_COMMAND)) { + return new SetTargetCommand(); + } else if (userInput.equals(EXIT_COMMAND)) { + return new CapCalculatorParser(true); + } else { + throw new + } + } +} From 0d719bfe63df6768a0945794d25a74b569d1f1ea Mon Sep 17 00:00:00 2001 From: Khenus Date: Fri, 9 Oct 2020 14:58:58 +0800 Subject: [PATCH 045/450] V0.6 Updated Academic Planner with different command and parser --- src/main/java/seedu/duke/Duke.java | 4 +- .../java/seedu/duke/apps/AcademicPlanner.java | 498 ------------------ .../java/seedu/duke/apps/CapCalculator.java | 1 + .../academicplanner/AcademicPlannerApp.java | 48 ++ .../AcademicPlannerParser.java | 55 ++ .../commands/AddModuleCommand.java | 84 +++ .../commands/EditModuleCommand.java | 59 +++ .../commands/PrintCalenderCommand.java | 6 + .../commands/RemoveModuleCommand.java | 49 ++ .../academicplanner/commons/AddUtils.java | 54 ++ .../academicplanner/commons/EditUtils.java | 107 ++++ .../commons/ModuleValidator.java | 114 ++++ .../academicplanner/commons/RemoveUtils.java | 36 ++ .../commons/CalculatorUtils.java} | 70 +-- .../commands/AcademicPlannerAddCommand.java | 68 --- .../duke/commands/AcademicPlannerCommand.java | 21 - .../exceptions/CommandParserException.java | 14 + .../duke/{apps => globalcommons}/App.java | 8 +- .../seedu/duke/globalcommons/Command.java | 21 + .../duke/parser/AcademicPlannerParser.java | 47 -- .../java/seedu/duke/parser/AppParser.java | 7 +- 21 files changed, 673 insertions(+), 698 deletions(-) delete mode 100644 src/main/java/seedu/duke/apps/AcademicPlanner.java create mode 100644 src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java create mode 100644 src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java create mode 100644 src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java create mode 100644 src/main/java/seedu/duke/apps/academicplanner/commands/EditModuleCommand.java create mode 100644 src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java create mode 100644 src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java create mode 100644 src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java create mode 100644 src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java create mode 100644 src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java create mode 100644 src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java rename src/main/java/seedu/duke/{commons/AcademicPlannerCommon.java => apps/capcalculator/commons/CalculatorUtils.java} (56%) delete mode 100644 src/main/java/seedu/duke/commands/AcademicPlannerAddCommand.java delete mode 100644 src/main/java/seedu/duke/commands/AcademicPlannerCommand.java create mode 100644 src/main/java/seedu/duke/exceptions/CommandParserException.java rename src/main/java/seedu/duke/{apps => globalcommons}/App.java (62%) create mode 100644 src/main/java/seedu/duke/globalcommons/Command.java delete mode 100644 src/main/java/seedu/duke/parser/AcademicPlannerParser.java diff --git a/src/main/java/seedu/duke/Duke.java b/src/main/java/seedu/duke/Duke.java index 23020051db..ce2edc338b 100644 --- a/src/main/java/seedu/duke/Duke.java +++ b/src/main/java/seedu/duke/Duke.java @@ -1,7 +1,7 @@ package seedu.duke; -import seedu.duke.apps.App; import seedu.duke.apps.ModuleInitializer; +import seedu.duke.globalcommons.App; import seedu.duke.objects.Person; import seedu.duke.parser.AppParser; import seedu.duke.ui.Ui; @@ -35,7 +35,7 @@ public void run() { String userInput = ui.getScanner().nextLine(); App selectedApp = AppParser.parse(userInput, allModules, currentPerson, ui); selectedApp.run(); - isExit = selectedApp.isExit(); + isExit = selectedApp.getIsExit(); System.out.println(WELCOME_BACK_MESSAGE); System.out.println(HELP_MESSAGE); } catch (Exception e) { diff --git a/src/main/java/seedu/duke/apps/AcademicPlanner.java b/src/main/java/seedu/duke/apps/AcademicPlanner.java deleted file mode 100644 index 17bfe16ee9..0000000000 --- a/src/main/java/seedu/duke/apps/AcademicPlanner.java +++ /dev/null @@ -1,498 +0,0 @@ -package seedu.duke.apps; - -import seedu.duke.commands.AcademicPlannerCommand; -import seedu.duke.exceptions.AcademicException; -import seedu.duke.exceptions.AcademicPlannerParserException; -import seedu.duke.objects.PartialModule; -import seedu.duke.objects.Person; -import seedu.duke.parser.AcademicPlannerParser; -import seedu.duke.ui.Ui; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Scanner; - -public class AcademicPlanner extends App { - //TODO might need to split this up into different commands - private static final int STARTING_SEMESTER_INDEX = 1; - private static final int FINAL_SEMESTER_INDEX = 10; - private static final int COMMAND_INDEX = 0; - private static final int MODULE_CODE_INDEX = 1; - private static final int FROM_ADD = 1; - private static final int FROM_EDIT = 2; - private static final int FROM_REMOVE = 3; - private static final String COMMAND_REGEX = " "; - private static final String EDIT_SEMESTER = "1"; - private static final String EDIT_GRADE = "2"; - private static final String PROMPT_NEW_SEMESTER_VALUE = "Enter the new semester value: "; - private static final String PROMPT_NEW_GRADE = "Enter the new grade: "; - private static final String EXITING_CURRENT_COMMAND = "Exiting current command back to Academic Planner Main Menu."; - private static final String ERROR_INVALID_COMMAND = "INVALID COMMAND"; - private static final String ERROR_INVALID_SEMESTER_INDEX = "INVALID SEMESTER INDEX"; - private static final String ERROR_INVALID_GRADE = "INVALID GRADE VALUE"; - private static final String ERROR_NOT_OFFERED = " IS NOT OFFERED BY NUS"; - private static final String ERROR_DUPLICATE_MOD = "You already have this mod on your calendar!"; - private static final String ERROR_NOT_ADDED = "You have not added this module into your list yet"; - private static final String ERROR_EDIT_OPTION = "Number entered does not correspond to any feature"; - private static final String WELCOME_MESSAGE = "\nWelcome to Academic Planner!"; - private static final String ADD_COMMAND = "ADD"; - private static final String EDIT_COMMAND = "EDIT"; - private static final String REMOVE_COMMAND = "REMOVE"; - private static final String VIEW_COMMAND = "VIEW"; - private static final String EXIT_COMMAND = "EXIT"; - private static final String EXIT_MESSAGE = "Thank you for using Academic Planner!"; - private static final String COMMANDS_LIST = "Available commands are:\n" - + "\tadd \n" - + "\tedit \n" - + "\tremove \n" - + "\tview\n" - + "\texit\n" - + "Type a command to continue..."; - private static final String VALID_GRADES = "Valid grades are:\n" - + "\tLetter Grades: A+, A, A-, B+, B, B-, C+, C, D+, D, F\n" - + "\tSpecial Grades: CS, CU, S, U, W, IC, IP, AUD, WU, EXE\n" - + "\tIf you have yet to have a grade for the module: NT"; - private static final String VALID_SEMESTERS = "Valid semesters are integers from 1 to 10, inclusive"; - public static final String PROMPT_EDIT_CHOICES = "Enter the number corresponding to the feature you wish to edit:\n" - + "\t1) Semester\n" - + "\t2) Grade"; - - private final ModuleInitializer allModules; - private final ArrayList modulesList; - private final HashMap modulesAddedMap; - private final Person currentPerson; - private Scanner scanner; - private Ui ui; - - public AcademicPlanner(ModuleInitializer allModules, Person currentPerson, Ui ui) { - this.allModules = allModules; - this.modulesList = currentPerson.getModulesList(); - this.modulesAddedMap = currentPerson.getModulesAddedMap(); - this.currentPerson = currentPerson; - this.ui = ui; - this.scanner = ui.getScanner(); - } - - private void printCommandsList() { - System.out.println(COMMANDS_LIST); - } - - @Override - public void run() { - System.out.println(WELCOME_MESSAGE); - printCommandsList(); - boolean isExit = false; - - while (!isExit) { - try { - String userInput = ui.getScanner().nextLine(); - AcademicPlannerCommand selectedCommand - = AcademicPlannerParser.parse(userInput,allModules,currentPerson,ui); - selectedCommand.run(); - } catch (AcademicPlannerParserException e) { - System.out.println(e.getMessage()); - } - } - - String fullInput = scanner.nextLine().toUpperCase();; - String[] inputs = fullInput.split(" "); - - while (!inputs[COMMAND_INDEX].equals(EXIT_COMMAND)) { - try { - switch (inputs[COMMAND_INDEX]) { - case ADD_COMMAND: - addModule(scanner, inputs[MODULE_CODE_INDEX]); - break; - case EDIT_COMMAND: - editModule(scanner, inputs[MODULE_CODE_INDEX]); - break; - case REMOVE_COMMAND: - removeModule(inputs[MODULE_CODE_INDEX]); - break; - case VIEW_COMMAND: - // printCalendar(); - break; - default: - System.out.println(ERROR_INVALID_COMMAND); - System.out.println(EXITING_CURRENT_COMMAND); - } - } catch (AcademicException e) { - if (e.getMessage() == "") { - System.out.println(ERROR_INVALID_COMMAND); - System.out.println(EXITING_CURRENT_COMMAND); - } else { - System.out.println(e.getMessage()); - } - } - printCommandsList(); - fullInput = scanner.nextLine().toUpperCase(); - inputs = fullInput.split(COMMAND_REGEX); - } - System.out.println(EXIT_MESSAGE); - } - - /** - * Adds a module to the user's academic calendar if it exists in FullModule, - * else does not add module into user's academic calendar. - * Validates user's input semester and grade. - * If either is invalid, does not add module into user's academic calendar. - * - * @param in scanner class - * @param moduleCode string of module code - */ - private void addModule(Scanner in, String moduleCode) throws AcademicException { - if (!isModOfferedByNus(moduleCode)) { - throw new AcademicException(moduleCode + ERROR_NOT_OFFERED); - } - - if (isModTakenByUser(moduleCode)) { - throw new AcademicException(ERROR_DUPLICATE_MOD); - } - - System.out.println("Semester you plan to take " + moduleCode.toUpperCase() + "?"); - System.out.println(VALID_SEMESTERS); - String userInput = in.nextLine(); - - int semesterValue; - try { - semesterValue = Integer.parseInt(userInput); - } catch (Exception e) { - throw new AcademicException(ERROR_INVALID_COMMAND); - } - - if (!isValidSemester(semesterValue)) { - throw new AcademicException(ERROR_INVALID_SEMESTER_INDEX); - } - - System.out.println("Grade received for " + moduleCode.toUpperCase() + "?"); - System.out.println(VALID_GRADES); - String gradeValue = in.nextLine(); - - if (!isValidGrade(gradeValue)) { - throw new AcademicException(ERROR_INVALID_GRADE); - } - int moduleCredit = getModuleCreditForModule(moduleCode); - addModuleToUser(moduleCode, semesterValue, gradeValue, moduleCredit); - } - - /** - * Creates a new instance of a module of the parameters and adds it into the - * hashmap and array list of user modules. - * - * @param moduleCode module to be added - * @param semesterValue semester that module is taken in - * @param gradeValue grade achieved for module - * @param moduleCredit module's credit weightage - */ - private void addModuleToUser(String moduleCode, int semesterValue, String gradeValue, int moduleCredit) { - PartialModule newModuleToAdd = new PartialModule(moduleCode, semesterValue, gradeValue, moduleCredit); - modulesList.add(newModuleToAdd); - modulesAddedMap.put(moduleCode, newModuleToAdd); - updateCap(FROM_ADD, newModuleToAdd); - System.out.println(newModuleToAdd.getModuleCode() - + " added into Semester " + semesterValue + "."); - } - - /** - * Update Cap after every change in current module list. - * - * @param type An int storing the type of function calling update cap - * @param currentModule A PartialModule object storing current module - * @param caps An optional number of double storing old cap and new cap (If you send in old, must send in new also) - */ - //TODO Look into throwing error and short circuiting this command - private void updateCap(int type, PartialModule currentModule, double... caps) { - // Caps is an array, 0 being oldCap, 1 being newCap - if (type == FROM_ADD) { - //Incrementing total MC regardless of SU - int moduleCredit = currentModule.getModuleCredit(); - currentPerson.setCurrentMc(currentPerson.getCurrentMc() + moduleCredit); - - //Incrementing total MC after SU only if module is not SU - if (currentModule.getCap() != -1.00) { - currentPerson.setCurrentMcAfterSU(currentPerson.getCurrentMcAfterSU() + moduleCredit); - double newMCxGrade = currentModule.getCap() * moduleCredit; - currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() + newMCxGrade); - } - } else if (type == FROM_REMOVE) { - //Decreasing total MC regardless of SU - currentPerson.setCurrentMc(currentPerson.getCurrentMc() - - currentModule.getModuleCredit()); - - //Decreasing total MC after SU only if module is not SU - if (currentModule.getCap() != -1.00) { - currentPerson.setCurrentMcAfterSU(currentPerson.getCurrentMcAfterSU() - - currentModule.getModuleCredit()); - double mcxGradeToMinus = currentModule.getCap() * currentModule.getModuleCredit(); - currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() - - mcxGradeToMinus); - } - } else if (type == FROM_EDIT) { - if (caps[0] == -1.00 && caps[1] != -1.00) { - //Case where previously was SU but new is not SU - currentPerson.setCurrentMcAfterSU(currentPerson.getCurrentMcAfterSU() - + currentModule.getModuleCredit()); - double newMCxGrade = caps[1] * currentModule.getModuleCredit(); - currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() - + newMCxGrade); - - } else if (caps[0] != -1.00 && caps[1] == -1.00) { - //Case where previously was not SU but now is SU - currentPerson.setCurrentMcAfterSU(currentPerson.getCurrentMcAfterSU() - - currentModule.getModuleCredit()); - double mcxGradeToMinus = caps[0] * currentModule.getModuleCredit(); - currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() - - mcxGradeToMinus); - - } else if (caps[0] != caps[1]) { - //Case where previously and new cap are not SU but not the same - double oldMCxGrade = caps[0] * currentModule.getModuleCredit(); - double newMCxGrade = caps[1] * currentModule.getModuleCredit(); - double mcxGradeToSet = newMCxGrade - oldMCxGrade; - currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() - + mcxGradeToSet); - } - } - } - - /** - * Allows user to edit the module entry of his academic calendar. - * Parameters allowed to change are semesterIndex or Grade. - * - * @param in scanner - * @param moduleCode module code to edit - */ - private void editModule(Scanner in, String moduleCode) throws AcademicException { - try { - if (isModTakenByUser(moduleCode)) { - System.out.println(PROMPT_EDIT_CHOICES); - String choice = in.nextLine(); - - if (choice.equals(EDIT_SEMESTER)) { - editModuleSemester(in, moduleCode); - } else if (choice.equals(EDIT_GRADE)) { - editModuleGrade(in, moduleCode); - } else { - throw new AcademicException(ERROR_EDIT_OPTION); - } - } else { - throw new AcademicException(ERROR_NOT_ADDED); - } - } catch (Exception e) { - throw new AcademicException(ERROR_INVALID_COMMAND); - } - } - - /** - * Changes the current grade of module to the input of the user. - * PartialModule must exist in user's list and hashmap - * - * @param in scanner - * @param moduleCode code of module to edit the grade - * @throws AcademicException invalid grade - */ - private void editModuleGrade(Scanner in, String moduleCode) throws AcademicException { - System.out.println(PROMPT_NEW_GRADE); - String gradeValue = in.nextLine().toUpperCase(); - - if (!isValidGrade(gradeValue)) { - throw new AcademicException(ERROR_INVALID_GRADE); - } - - System.out.println(moduleCode); - updateModuleGrade(moduleCode, gradeValue); - System.out.println("Grade for " + moduleCode + " successfully updated!"); - } - - /** - * Updates user's module with new grade and updates user's Cap. - * - * @param moduleCode module to edit - * @param gradeValue grade to edit to - */ - private void updateModuleGrade(String moduleCode, String gradeValue) { - for (PartialModule item : modulesList) { - if (item.getModuleCode().equals(moduleCode)) { - double oldCap = item.getCap(); - item.setGrade(gradeValue); - double newCap = item.getCap(); - updateCap(FROM_EDIT, item, oldCap, newCap); - break; - } - } - modulesAddedMap.get(moduleCode).setGrade(gradeValue); - } - - /** - * Edits module semester taken when module is in user's list. - * PartialModule must exist in user's module list and hashmap. - * - * @param in scanner - * @param moduleCode module to edit - * @throws AcademicException invalid semester index - */ - private void editModuleSemester(Scanner in, String moduleCode) throws AcademicException { - System.out.println(PROMPT_NEW_SEMESTER_VALUE); - String newValue = in.nextLine(); - - if (!isValidSemester(Integer.parseInt(newValue))) { - throw new AcademicException(ERROR_INVALID_SEMESTER_INDEX); - } - - updateModuleSemester(moduleCode, newValue); - modulesAddedMap.get(moduleCode).setSemesterIndex(Integer.parseInt(newValue)); - System.out.println("Semester for " + moduleCode + " successfully updated!"); - } - - /** - * Finds the module and updates the semester taken. - * - * @param moduleCode module to edit - * @param newValue new semester index - */ - private void updateModuleSemester(String moduleCode, String newValue) { - for (PartialModule item : modulesList) { - if (item.getModuleCode().equals(moduleCode)) { - item.setSemesterIndex(Integer.parseInt(newValue)); - return; - } - } - } - - /** - * Removes moduleCode from user's academic calendar if it exists, - * else prompts user of error. - */ - private void removeModule(String moduleCode) throws AcademicException { - try { - if (isModTakenByUser(moduleCode)) { - modulesAddedMap.remove(moduleCode); - removeModuleFromUserModuleList(moduleCode); - } else { - throw new AcademicException(ERROR_NOT_ADDED); - } - } catch (Exception e) { - System.out.println(ERROR_INVALID_COMMAND); - System.out.println(EXITING_CURRENT_COMMAND); - } - } - - /** - * Removes module from user's module list. - * PartialModule must exist in user's module list. - * - * @param moduleCode module to remove. - */ - private void removeModuleFromUserModuleList(String moduleCode) { - for (PartialModule item : modulesList) { - if (item.getModuleCode().equals(moduleCode)) { - System.out.println(item.getModuleCode() + " has been removed from the list"); - updateCap(FROM_REMOVE, item); - modulesList.remove(item); - return; - } - } - } - - /** - * Returns true if module code is offered by NUS, - * else returns false. - * @param moduleCode input module code - * @return boolean of module code in FullModule - */ - private boolean isModOfferedByNus(String moduleCode) { - boolean isOffered = allModules.getModuleMap().get(moduleCode) != null; - return (isOffered); - } - - /** - * Returns true if module is in the user's academic calendar, - * else returns false. - * - * @param moduleCode moduleCode to check - * @return boolean - */ - private boolean isModTakenByUser(String moduleCode) { - return (modulesAddedMap.containsKey(moduleCode)); - } - - /** - * Returns true if semsesterIndex is a valid semesterIndex, - * else returns false. - * - * @param semesterIndex semesterIndex to check - * @return false - */ - private boolean isValidSemester(int semesterIndex) { - return (semesterIndex >= STARTING_SEMESTER_INDEX && semesterIndex <= FINAL_SEMESTER_INDEX); - } - - /** - * Returns true if grade is a Grade option offered by NUS, - * else returns false. - * - * @param grade grade to check - * @return boolean - */ - private boolean isValidGrade(String grade) { - switch (grade.toUpperCase()) { - case "A+": - //Fallthrough - case "A": - //Fallthrough - case "A-": - //Fallthrough - case "B+": - //Fallthrough - case "B": - //Fallthrough - case "B-": - //Fallthrough - case "C+": - //Fallthrough - case "C": - //Fallthrough - case "D+": - //Fallthrough - case "D": - //Fallthrough - case "F": - //Fallthrough - case "CS": //Completed Satisfactorily - //Fallthrough - case "CU": //Completed Unsatisfactorily - //Fallthrough - case "S": //Satisfactory - //Fallthrough - case "U": //Unsatisfactory - //Fallthrough - case "W": //Withdrawn - //Fallthrough - case "IC": //Incomplete - //Fallthrough - case "IP": //In progress - //Fallthrough - case "AUD": //Audit - //Fallthrough - case "WU": //Withdrawn from University - //Fallthrough - case "EXE" : //Exempted - //Fallthrough - case "NT": //Not taken - return true; - default: - return false; - } - } - - /** - * Function to return module credits for module code. - * - * @param moduleCode string of module code - * @return int of module credit - */ - private int getModuleCreditForModule(String moduleCode) { - int mapIndex = allModules.getModuleMap().get(moduleCode); - return allModules.getModuleFullDetails()[mapIndex].getModuleCredit(); - } -} diff --git a/src/main/java/seedu/duke/apps/CapCalculator.java b/src/main/java/seedu/duke/apps/CapCalculator.java index 05e4bcf562..2044bc399f 100644 --- a/src/main/java/seedu/duke/apps/CapCalculator.java +++ b/src/main/java/seedu/duke/apps/CapCalculator.java @@ -2,6 +2,7 @@ import seedu.duke.exceptions.InvalidCapException; import seedu.duke.exceptions.InvalidCreditException; +import seedu.duke.globalcommons.App; import seedu.duke.objects.Person; import seedu.duke.ui.Ui; diff --git a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java new file mode 100644 index 0000000000..cd4ac708ab --- /dev/null +++ b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java @@ -0,0 +1,48 @@ +package seedu.duke.apps.academicplanner; + +import seedu.duke.apps.ModuleInitializer; +import seedu.duke.globalcommons.App; +import seedu.duke.globalcommons.Command; +import seedu.duke.objects.Person; +import seedu.duke.ui.Ui; + +public class AcademicPlannerApp extends App { + private static final String WELCOME_MESSAGE = "\nWelcome to Academic Planner!"; + private static final String EXIT_MESSAGE = "Thank you for using Academic Planner!"; + private static final String COMMANDS_LIST = "Available commands are:\n" + + "\tadd \n" + + "\tedit \n" + + "\tremove \n" + + "\tview\n" + + "\texit\n" + + "Type a command to continue..."; + + private final ModuleInitializer allModules; + private final Person currentPerson; + private Ui ui; + + public AcademicPlannerApp(ModuleInitializer allModules, Person currentPerson, Ui ui) { + this.allModules = allModules; + this.currentPerson = currentPerson; + this.ui = ui; + } + + public void run() { + System.out.println(WELCOME_MESSAGE); + System.out.println(COMMANDS_LIST); + boolean isExit = false; + + while (!isExit) { + try { + String userInput = ui.getScanner().nextLine(); + Command commandInput = AcademicPlannerParser.parse(userInput, allModules, currentPerson, ui); + commandInput.execute(); + isExit = commandInput.getIsExit(); + } catch (Exception e) { + System.out.println(e.getMessage()); + } + } + System.out.println(EXIT_MESSAGE); + } + +} diff --git a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java new file mode 100644 index 0000000000..04fab335b6 --- /dev/null +++ b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java @@ -0,0 +1,55 @@ +package seedu.duke.apps.academicplanner; + +import seedu.duke.apps.ModuleInitializer; +import seedu.duke.apps.academicplanner.commands.AddModuleCommand; +import seedu.duke.apps.academicplanner.commands.EditModuleCommand; +import seedu.duke.apps.academicplanner.commands.PrintCalenderCommand; +import seedu.duke.apps.academicplanner.commands.RemoveModuleCommand; +import seedu.duke.exceptions.CommandParserException; +import seedu.duke.globalcommons.Command; +import seedu.duke.objects.Person; +import seedu.duke.ui.Ui; + +import java.util.Scanner; + +public class AcademicPlannerParser { + private static final int MODULE_CODE_INDEX = 1; + public static final String NEW_LINE = "\n"; + private static final String EXITING_CURRENT_COMMAND = "Exiting current command back to Academic Planner Main Menu."; + private static final String ERROR_INVALID_COMMAND = "INVALID COMMAND"; + private static final String ADD_COMMAND = "ADD"; + private static final String EDIT_COMMAND = "EDIT"; + private static final String REMOVE_COMMAND = "REMOVE"; + private static final String VIEW_COMMAND = "VIEW"; + private static final String EXIT_COMMAND = "EXIT"; + private static final String EXIT_MESSAGE = "Thank you for using Academic Planner!"; + private static final String COMMANDS_LIST = "Available commands are:\n" + + "\tadd \n" + + "\tedit \n" + + "\tremove \n" + + "\tview\n" + + "\texit\n" + + "Type a command to continue..."; + + public static Command parse(String userInput, ModuleInitializer allModules, Person currentPerson, Ui ui) + throws CommandParserException { + String[] inputs = userInput.toUpperCase().split(" "); + Scanner in = ui.getScanner(); + + if (inputs[0].equals(ADD_COMMAND)) { + return new AddModuleCommand(allModules, currentPerson, in, inputs[MODULE_CODE_INDEX]); + } else if (inputs[0].equals(EDIT_COMMAND)) { + return new EditModuleCommand(allModules, currentPerson, in, inputs[MODULE_CODE_INDEX]); + } else if (inputs[0].equals(REMOVE_COMMAND)) { + return new RemoveModuleCommand(allModules, currentPerson, in, inputs[MODULE_CODE_INDEX]); + } else if (inputs[0].equals(VIEW_COMMAND)) { + System.out.println("Sorry this function is not ready yet!"); + return new PrintCalenderCommand(); + //TODO Add in print calender + } else if (inputs[0].equals(EXIT_COMMAND)) { + return new Command(true); + } else { + throw new CommandParserException(ERROR_INVALID_COMMAND + NEW_LINE + EXITING_CURRENT_COMMAND); + } + } +} diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java new file mode 100644 index 0000000000..504aabe40e --- /dev/null +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java @@ -0,0 +1,84 @@ +package seedu.duke.apps.academicplanner.commands; + +import seedu.duke.apps.ModuleInitializer; +import seedu.duke.apps.academicplanner.commons.AddUtils; +import seedu.duke.apps.academicplanner.commons.ModuleValidator; +import seedu.duke.exceptions.AcademicException; +import seedu.duke.globalcommons.Command; +import seedu.duke.objects.Person; + +import java.util.Scanner; + +public class AddModuleCommand extends Command { + private static final String ERROR_INVALID_COMMAND = "INVALID COMMAND"; + private static final String ERROR_INVALID_SEMESTER_INDEX = "INVALID SEMESTER INDEX"; + private static final String ERROR_INVALID_GRADE = "INVALID GRADE VALUE"; + private static final String ERROR_NOT_OFFERED = " IS NOT OFFERED BY NUS"; + private static final String ERROR_DUPLICATE_MOD = "You already have this mod on your calendar!"; + private static final String VALID_GRADES = "Valid grades are:\n" + + "\tLetter Grades: A+, A, A-, B+, B, B-, C+, C, D+, D, F\n" + + "\tSpecial Grades: CS, CU, S, U, W, IC, IP, AUD, WU, EXE\n" + + "\tIf you have yet to have a grade for the module: NT"; + private static final String VALID_SEMESTERS = "Valid semesters are integers from 1 to 10, inclusive"; + + private AddUtils addUtils; + private ModuleValidator moduleValidator; + private Scanner in; + private String moduleCode; + + /** + * + * @param allModules ModuleInitializer + * @param currentPerson Person + * @param in Scanner + * @param moduleCode String + */ + public AddModuleCommand(ModuleInitializer allModules, Person currentPerson, Scanner in, String moduleCode) { + this.addUtils = new AddUtils(allModules, currentPerson); + this.moduleValidator = new ModuleValidator(allModules, currentPerson); + this.in = in; + this.moduleCode = moduleCode; + } + + /** + * Adds a module to the user's academic calendar if it exists in FullModule, + * else does not add module into user's academic calendar. + * Validates user's input semester and grade. + * If either is invalid, does not add module into user's academic calendar. + */ + @Override + public void execute() throws AcademicException { + if (!moduleValidator.isModOfferedByNus(moduleCode)) { + throw new AcademicException(moduleCode + ERROR_NOT_OFFERED); + } + + if (moduleValidator.isModTakenByUser(moduleCode)) { + throw new AcademicException(ERROR_DUPLICATE_MOD); + } + + System.out.println("Semester you plan to take " + moduleCode.toUpperCase() + "?"); + System.out.println(VALID_SEMESTERS); + String userInput = in.nextLine(); + + int semesterValue; + try { + semesterValue = Integer.parseInt(userInput); + } catch (Exception e) { + throw new AcademicException(ERROR_INVALID_COMMAND); + } + + if (!moduleValidator.isValidSemester(semesterValue)) { + throw new AcademicException(ERROR_INVALID_SEMESTER_INDEX); + } + + System.out.println("Grade received for " + moduleCode.toUpperCase() + "?"); + System.out.println(VALID_GRADES); + String gradeValue = in.nextLine(); + + if (!moduleValidator.isValidGrade(gradeValue)) { + throw new AcademicException(ERROR_INVALID_GRADE); + } + int moduleCredit = addUtils.getModuleCreditForModule(moduleCode); + addUtils.addModuleToUser(moduleCode, semesterValue, gradeValue, moduleCredit); + } +} diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/EditModuleCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/EditModuleCommand.java new file mode 100644 index 0000000000..45e5547d7d --- /dev/null +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/EditModuleCommand.java @@ -0,0 +1,59 @@ +package seedu.duke.apps.academicplanner.commands; + +import seedu.duke.apps.ModuleInitializer; +import seedu.duke.apps.academicplanner.commons.EditUtils; +import seedu.duke.apps.academicplanner.commons.ModuleValidator; +import seedu.duke.exceptions.AcademicException; +import seedu.duke.globalcommons.Command; +import seedu.duke.objects.Person; + +import java.util.Scanner; + +public class EditModuleCommand extends Command { + private static final String EDIT_SEMESTER = "1"; + private static final String EDIT_GRADE = "2"; + private static final String ERROR_INVALID_COMMAND = "INVALID COMMAND"; + private static final String ERROR_NOT_ADDED = "You have not added this module into your list yet"; + private static final String ERROR_EDIT_OPTION = "Number entered does not correspond to any feature"; + public static final String PROMPT_EDIT_CHOICES = "Enter the number corresponding to the feature you wish to edit:\n" + + "\t1) Semester\n" + + "\t2) Grade"; + + private EditUtils editUtils; + private ModuleValidator moduleValidator; + private Scanner in; + private String moduleCode; + + public EditModuleCommand(ModuleInitializer allModules, Person currentPerson, Scanner in, String moduleCode) { + this.editUtils = new EditUtils(allModules, currentPerson); + this.moduleValidator = new ModuleValidator(allModules, currentPerson); + this.in = in; + this.moduleCode = moduleCode; + } + + /** + * Allows user to edit the module entry of his academic calendar. + * Parameters allowed to change are semesterIndex or Grade. + */ + @Override + public void execute() throws AcademicException { + try { + if (moduleValidator.isModTakenByUser(moduleCode)) { + System.out.println(PROMPT_EDIT_CHOICES); + String choice = in.nextLine(); + + if (choice.equals(EDIT_SEMESTER)) { + editUtils.editModuleSemester(in, moduleCode); + } else if (choice.equals(EDIT_GRADE)) { + editUtils.editModuleGrade(in, moduleCode); + } else { + throw new AcademicException(ERROR_EDIT_OPTION); + } + } else { + throw new AcademicException(ERROR_NOT_ADDED); + } + } catch (Exception e) { + throw new AcademicException(ERROR_INVALID_COMMAND); + } + } +} diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java new file mode 100644 index 0000000000..4868a52ca3 --- /dev/null +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java @@ -0,0 +1,6 @@ +package seedu.duke.apps.academicplanner.commands; + +import seedu.duke.globalcommons.Command; + +public class PrintCalenderCommand extends Command { +} diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java new file mode 100644 index 0000000000..840ef0cb4b --- /dev/null +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java @@ -0,0 +1,49 @@ +package seedu.duke.apps.academicplanner.commands; + +import seedu.duke.apps.ModuleInitializer; +import seedu.duke.apps.academicplanner.commons.ModuleValidator; +import seedu.duke.apps.academicplanner.commons.RemoveUtils; +import seedu.duke.exceptions.AcademicException; +import seedu.duke.globalcommons.Command; +import seedu.duke.objects.PartialModule; +import seedu.duke.objects.Person; + +import java.util.HashMap; +import java.util.Scanner; + +public class RemoveModuleCommand extends Command { + private static final String EXITING_CURRENT_COMMAND = "Exiting current command back to Academic Planner Main Menu."; + private static final String ERROR_INVALID_COMMAND = "INVALID COMMAND"; + private static final String ERROR_NOT_ADDED = "You have not added this module into your list yet"; + + private RemoveUtils removeUtils; + private ModuleValidator moduleValidator; + private HashMap modulesAddedMap; + private String moduleCode; + + public RemoveModuleCommand(ModuleInitializer allModules, Person currentPerson, Scanner in, String moduleCode) { + this.removeUtils = new RemoveUtils(currentPerson); + this.moduleValidator = new ModuleValidator(allModules, currentPerson); + this.modulesAddedMap = currentPerson.getModulesAddedMap(); + this.moduleCode = moduleCode; + } + + /** + * Removes moduleCode from user's academic calendar if it exists, + * else prompts user of error. + */ + @Override + public void execute() { + try { + if (moduleValidator.isModTakenByUser(moduleCode)) { + modulesAddedMap.remove(moduleCode); + removeUtils.removeModuleFromUserModuleList(moduleCode); + } else { + throw new AcademicException(ERROR_NOT_ADDED); + } + } catch (Exception e) { + System.out.println(ERROR_INVALID_COMMAND); + System.out.println(EXITING_CURRENT_COMMAND); + } + } +} diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java new file mode 100644 index 0000000000..69454495cd --- /dev/null +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java @@ -0,0 +1,54 @@ +package seedu.duke.apps.academicplanner.commons; + +import seedu.duke.apps.ModuleInitializer; +import seedu.duke.apps.capcalculator.commons.CalculatorUtils; +import seedu.duke.objects.PartialModule; +import seedu.duke.objects.Person; + +import java.util.ArrayList; +import java.util.HashMap; + +public class AddUtils { + private static final int FROM_ADD = 1; + + private final ModuleInitializer allModules; + private final ArrayList modulesList; + private final HashMap modulesAddedMap; + private final CalculatorUtils calculatorUtils; + + public AddUtils(ModuleInitializer allModules, Person currentPerson) { + this.allModules = allModules; + this.modulesList = currentPerson.getModulesList(); + this.modulesAddedMap = currentPerson.getModulesAddedMap(); + this.calculatorUtils = new CalculatorUtils(currentPerson); + } + + /** + * Creates a new instance of a module of the parameters and adds it into the + * hashmap and array list of user modules. + * + * @param moduleCode module to be added + * @param semesterValue semester that module is taken in + * @param gradeValue grade achieved for module + * @param moduleCredit module's credit weightage + */ + public void addModuleToUser(String moduleCode, int semesterValue, String gradeValue, int moduleCredit) { + PartialModule newModuleToAdd = new PartialModule(moduleCode, semesterValue, gradeValue, moduleCredit); + modulesList.add(newModuleToAdd); + modulesAddedMap.put(moduleCode, newModuleToAdd); + calculatorUtils.updateCap(FROM_ADD, newModuleToAdd); + System.out.println(newModuleToAdd.getModuleCode() + + " added into Semester " + semesterValue + "."); + } + + /** + * Function to return module credits for module code. + * + * @param moduleCode string of module code + * @return int of module credit + */ + public int getModuleCreditForModule(String moduleCode) { + int mapIndex = allModules.getModuleMap().get(moduleCode); + return allModules.getModuleFullDetails()[mapIndex].getModuleCredit(); + } +} diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java new file mode 100644 index 0000000000..4afe753f14 --- /dev/null +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java @@ -0,0 +1,107 @@ +package seedu.duke.apps.academicplanner.commons; + +import seedu.duke.apps.ModuleInitializer; +import seedu.duke.apps.capcalculator.commons.CalculatorUtils; +import seedu.duke.exceptions.AcademicException; +import seedu.duke.objects.PartialModule; +import seedu.duke.objects.Person; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Scanner; + +public class EditUtils { + private final ArrayList modulesList; + private final HashMap modulesAddedMap; + private final ModuleValidator modChecker; + private final CalculatorUtils calculatorUtils; + + public EditUtils(ModuleInitializer allModules, Person currentPerson) { + this.modulesList = currentPerson.getModulesList(); + this.modulesAddedMap = currentPerson.getModulesAddedMap(); + this.modChecker = new ModuleValidator(allModules, currentPerson); + this.calculatorUtils = new CalculatorUtils(currentPerson); + } + + private static final int FROM_EDIT = 2; + private static final String PROMPT_NEW_SEMESTER_VALUE = "Enter the new semester value: "; + private static final String PROMPT_NEW_GRADE = "Enter the new grade: "; + private static final String ERROR_INVALID_SEMESTER_INDEX = "INVALID SEMESTER INDEX"; + private static final String ERROR_INVALID_GRADE = "INVALID GRADE VALUE"; + + /** + * Changes the current grade of module to the input of the user. + * PartialModule must exist in user's list and hashmap + * + * @param in scanner + * @param moduleCode code of module to edit the grade + * @throws AcademicException invalid grade + */ + public void editModuleGrade(Scanner in, String moduleCode) throws AcademicException { + System.out.println(PROMPT_NEW_GRADE); + String gradeValue = in.nextLine().toUpperCase(); + + if (!modChecker.isValidGrade(gradeValue)) { + throw new AcademicException(ERROR_INVALID_GRADE); + } + + System.out.println(moduleCode); + updateModuleGrade(moduleCode, gradeValue); + System.out.println("Grade for " + moduleCode + " successfully updated!"); + } + + /** + * Updates user's module with new grade and updates user's Cap. + * + * @param moduleCode module to edit + * @param gradeValue grade to edit to + */ + public void updateModuleGrade(String moduleCode, String gradeValue) { + for (PartialModule item : modulesList) { + if (item.getModuleCode().equals(moduleCode)) { + double oldCap = item.getCap(); + item.setGrade(gradeValue); + double newCap = item.getCap(); + calculatorUtils.updateCap(FROM_EDIT, item, oldCap, newCap); + break; + } + } + modulesAddedMap.get(moduleCode).setGrade(gradeValue); + } + + /** + * Edits module semester taken when module is in user's list. + * PartialModule must exist in user's module list and hashmap. + * + * @param in scanner + * @param moduleCode module to edit + * @throws AcademicException invalid semester index + */ + public void editModuleSemester(Scanner in, String moduleCode) throws AcademicException { + System.out.println(PROMPT_NEW_SEMESTER_VALUE); + String newValue = in.nextLine(); + + if (!modChecker.isValidSemester(Integer.parseInt(newValue))) { + throw new AcademicException(ERROR_INVALID_SEMESTER_INDEX); + } + + updateModuleSemester(moduleCode, newValue); + modulesAddedMap.get(moduleCode).setSemesterIndex(Integer.parseInt(newValue)); + System.out.println("Semester for " + moduleCode + " successfully updated!"); + } + + /** + * Finds the module and updates the semester taken. + * + * @param moduleCode module to edit + * @param newValue new semester index + */ + public void updateModuleSemester(String moduleCode, String newValue) { + for (PartialModule item : modulesList) { + if (item.getModuleCode().equals(moduleCode)) { + item.setSemesterIndex(Integer.parseInt(newValue)); + return; + } + } + } +} diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java b/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java new file mode 100644 index 0000000000..9cf5772b73 --- /dev/null +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java @@ -0,0 +1,114 @@ +package seedu.duke.apps.academicplanner.commons; + +import seedu.duke.apps.ModuleInitializer; +import seedu.duke.objects.PartialModule; +import seedu.duke.objects.Person; + +import java.util.ArrayList; +import java.util.HashMap; + +public class ModuleValidator { + private static final int STARTING_SEMESTER_INDEX = 1; + private static final int FINAL_SEMESTER_INDEX = 10; + + private final ModuleInitializer allModules; + private final ArrayList modulesList; + private final HashMap modulesAddedMap; + + public ModuleValidator(ModuleInitializer allModules, Person currentPerson) { + this.allModules = allModules; + this.modulesList = currentPerson.getModulesList(); + this.modulesAddedMap = currentPerson.getModulesAddedMap(); + } + + /** + * Returns true if module code is offered by NUS, + * else returns false. + * @param moduleCode input module code + * @return boolean of module code in FullModule + */ + public boolean isModOfferedByNus(String moduleCode) { + boolean isOffered = allModules.getModuleMap().get(moduleCode) != null; + return (isOffered); + } + + /** + * Returns true if module is in the user's academic calendar, + * else returns false. + * + * @param moduleCode moduleCode to check + * @return boolean + */ + public boolean isModTakenByUser(String moduleCode) { + return (modulesAddedMap.containsKey(moduleCode)); + } + + /** + * Returns true if semsesterIndex is a valid semesterIndex, + * else returns false. + * + * @param semesterIndex semesterIndex to check + * @return false + */ + public boolean isValidSemester(int semesterIndex) { + return (semesterIndex >= STARTING_SEMESTER_INDEX && semesterIndex <= FINAL_SEMESTER_INDEX); + } + + /** + * Returns true if grade is a Grade option offered by NUS, + * else returns false. + * + * @param grade grade to check + * @return boolean + */ + public boolean isValidGrade(String grade) { + switch (grade.toUpperCase()) { + case "A+": + //Fallthrough + case "A": + //Fallthrough + case "A-": + //Fallthrough + case "B+": + //Fallthrough + case "B": + //Fallthrough + case "B-": + //Fallthrough + case "C+": + //Fallthrough + case "C": + //Fallthrough + case "D+": + //Fallthrough + case "D": + //Fallthrough + case "F": + //Fallthrough + case "CS": //Completed Satisfactorily + //Fallthrough + case "CU": //Completed Unsatisfactorily + //Fallthrough + case "S": //Satisfactory + //Fallthrough + case "U": //Unsatisfactory + //Fallthrough + case "W": //Withdrawn + //Fallthrough + case "IC": //Incomplete + //Fallthrough + case "IP": //In progress + //Fallthrough + case "AUD": //Audit + //Fallthrough + case "WU": //Withdrawn from University + //Fallthrough + case "EXE" : //Exempted + //Fallthrough + case "NT": //Not taken + return true; + default: + return false; + } + } +} diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java new file mode 100644 index 0000000000..2ca8d5f251 --- /dev/null +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java @@ -0,0 +1,36 @@ +package seedu.duke.apps.academicplanner.commons; + +import seedu.duke.apps.capcalculator.commons.CalculatorUtils; +import seedu.duke.objects.PartialModule; +import seedu.duke.objects.Person; + +import java.util.ArrayList; + +public class RemoveUtils { + private static final int FROM_REMOVE = 3; + + private final ArrayList modulesList; + private final CalculatorUtils calculatorUtils; + + public RemoveUtils(Person currentPerson) { + this.modulesList = currentPerson.getModulesList(); + this.calculatorUtils = new CalculatorUtils(currentPerson); + } + + /** + * Removes module from user's module list. + * PartialModule must exist in user's module list. + * + * @param moduleCode module to remove. + */ + public void removeModuleFromUserModuleList(String moduleCode) { + for (PartialModule item : modulesList) { + if (item.getModuleCode().equals(moduleCode)) { + System.out.println(item.getModuleCode() + " has been removed from the list"); + calculatorUtils.updateCap(FROM_REMOVE, item); + modulesList.remove(item); + return; + } + } + } +} diff --git a/src/main/java/seedu/duke/commons/AcademicPlannerCommon.java b/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java similarity index 56% rename from src/main/java/seedu/duke/commons/AcademicPlannerCommon.java rename to src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java index 7921c02eac..ba1cb96a3b 100644 --- a/src/main/java/seedu/duke/commons/AcademicPlannerCommon.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java @@ -1,70 +1,28 @@ -package seedu.duke.commons; +package seedu.duke.apps.capcalculator.commons; -import seedu.duke.apps.ModuleInitializer; -import seedu.duke.exceptions.AcademicPlannerParserException; import seedu.duke.objects.PartialModule; import seedu.duke.objects.Person; -import seedu.duke.ui.Ui; - -import java.util.ArrayList; -import java.util.HashMap; - -public class AcademicPlannerCommon { +public class CalculatorUtils { private static final int FROM_ADD = 1; private static final int FROM_EDIT = 2; private static final int FROM_REMOVE = 3; - private ModuleInitializer allModules = new ModuleInitializer(); - - public AcademicPlannerCommon() { - - } - - public static String getModuleCodeFromInput(String userInput) { - int moduleCodeStartIndex = userInput.indexOf("/m") + 1; - int moduleCodeEndIndex = userInput.indexOf("/") - 1; - return userInput.substring(moduleCodeStartIndex,moduleCodeEndIndex); - } - - public static int getSemesterFromInput(String userInput) throws AcademicPlannerParserException { - int semesterStartIndex = userInput.indexOf("/s") + 1; - int semesterEndIndex = userInput.indexOf("/") - 1; - try { - int inputSemester = Integer.parseInt(userInput.substring(semesterStartIndex,semesterEndIndex)); - return inputSemester; - } catch (Exception e) { - throw new AcademicPlannerParserException("Input semester is not an integer!"); - } - } - - public static String getGradeFromInput(String userInput) { - int gradeStartIndex = userInput.indexOf("/g"); - return userInput.substring(gradeStartIndex); - } + private final Person currentPerson; - public int getModuleCreditForModule(String moduleCode) { - int mapIndex = allModules.getModuleMap().get(moduleCode); - return allModules.getModuleFullDetails()[mapIndex].getModuleCredit(); + public CalculatorUtils(Person currentPerson) { + this.currentPerson = currentPerson; } - public void addModuleToUser(String moduleCode, int semesterValue, String gradeValue, int moduleCredit, - Person currentPerson, Ui ui) { - PartialModule newModuleToAdd = new PartialModule(moduleCode, semesterValue, gradeValue, moduleCredit); - ArrayList modulesList = currentPerson.getModulesList(); - HashMap modulesAddedMap = currentPerson.getModulesAddedMap(); - modulesList.add(newModuleToAdd); - modulesAddedMap.put(moduleCode, newModuleToAdd); - updateCap(FROM_ADD, newModuleToAdd, currentPerson); - System.out.println(newModuleToAdd.getModuleCode() - + " added into Semester " + semesterValue + "."); - } - - public void updateCap(int type, PartialModule currentModule,Person currentPerson, double... caps) { - - ArrayList modulesList = currentPerson.getModulesList(); - HashMap modulesAddedMap = currentPerson.getModulesAddedMap(); - + /** + * Update Cap after every change in current module list. + * + * @param type An int storing the type of function calling update cap + * @param currentModule A PartialModule object storing current module + * @param caps An optional number of double storing old cap and new cap (If you send in old, must send in new also) + */ + //TODO Look into throwing error and short circuiting this command + public void updateCap(int type, PartialModule currentModule, double... caps) { // Caps is an array, 0 being oldCap, 1 being newCap if (type == FROM_ADD) { //Incrementing total MC regardless of SU diff --git a/src/main/java/seedu/duke/commands/AcademicPlannerAddCommand.java b/src/main/java/seedu/duke/commands/AcademicPlannerAddCommand.java deleted file mode 100644 index 3bc445590b..0000000000 --- a/src/main/java/seedu/duke/commands/AcademicPlannerAddCommand.java +++ /dev/null @@ -1,68 +0,0 @@ -package seedu.duke.commands; - -import seedu.duke.apps.ModuleInitializer; -import seedu.duke.commons.AcademicPlannerCommon; -import seedu.duke.exceptions.AcademicPlannerParserException; -import seedu.duke.objects.Person; -import seedu.duke.ui.Ui; -import static seedu.duke.commons.AcademicPlannerCommon.getModuleCodeFromInput; -import static seedu.duke.commons.AcademicPlannerCommon.getSemesterFromInput; -import static seedu.duke.commons.AcademicPlannerCommon.getGradeFromInput; - - -public class AcademicPlannerAddCommand extends AcademicPlannerCommand { - - private String moduleCode; - private int semester; - private String grade; - private Person user; - private Ui ui = new Ui(); - private AcademicPlannerCommon apc = new AcademicPlannerCommon(); - - //userInput format = "add m/cs1010 s/2 g/A+" - public AcademicPlannerAddCommand(String userInput, ModuleInitializer allmodules, - Person currentPerson, Ui ui) throws AcademicPlannerParserException { - setModuleCode(getModuleCodeFromInput(userInput)); - setSemester(getSemesterFromInput(userInput)); - setGrade(getGradeFromInput(userInput)); - setUser(currentPerson); - } - - public Person getUser() { - return user; - } - - public void setUser(Person user) { - this.user = user; - } - - public String getModuleCode() { - return moduleCode; - } - - public void setModuleCode(String moduleCode) { - this.moduleCode = moduleCode; - } - - public int getSemester() { - return semester; - } - - public void setSemester(int semester) { - this.semester = semester; - } - - public String getGrade() { - return grade; - } - - public void setGrade(String grade) { - this.grade = grade; - } - - @Override - public void run() { - int moduleCredit = apc.getModuleCreditForModule(moduleCode); - apc.addModuleToUser(moduleCode,semester,grade,moduleCredit,getUser(),ui); - } -} diff --git a/src/main/java/seedu/duke/commands/AcademicPlannerCommand.java b/src/main/java/seedu/duke/commands/AcademicPlannerCommand.java deleted file mode 100644 index f2244c6326..0000000000 --- a/src/main/java/seedu/duke/commands/AcademicPlannerCommand.java +++ /dev/null @@ -1,21 +0,0 @@ -package seedu.duke.commands; - -public class AcademicPlannerCommand { - boolean isExit = false; - - public AcademicPlannerCommand() { - - } - - public AcademicPlannerCommand(boolean isExitCommand) { - this.isExit = isExitCommand; - } - - public boolean isExit() { - return isExit; - } - - public void run() { - - } -} diff --git a/src/main/java/seedu/duke/exceptions/CommandParserException.java b/src/main/java/seedu/duke/exceptions/CommandParserException.java new file mode 100644 index 0000000000..868a8a15c8 --- /dev/null +++ b/src/main/java/seedu/duke/exceptions/CommandParserException.java @@ -0,0 +1,14 @@ +package seedu.duke.exceptions; + +public class CommandParserException extends Exception { + String errorMessage; + + public CommandParserException(String errorMessage) { + this.errorMessage = errorMessage; + } + + @Override + public String getMessage() { + return this.errorMessage; + } +} diff --git a/src/main/java/seedu/duke/apps/App.java b/src/main/java/seedu/duke/globalcommons/App.java similarity index 62% rename from src/main/java/seedu/duke/apps/App.java rename to src/main/java/seedu/duke/globalcommons/App.java index 2434808ddf..6fb6b317d0 100644 --- a/src/main/java/seedu/duke/apps/App.java +++ b/src/main/java/seedu/duke/globalcommons/App.java @@ -1,7 +1,7 @@ -package seedu.duke.apps; +package seedu.duke.globalcommons; public class App { - boolean isExit = false; + private boolean isExit = false; public App() { @@ -18,4 +18,8 @@ public boolean isExit() { public void run() { } + + public boolean getIsExit() { + return this.isExit; + } } diff --git a/src/main/java/seedu/duke/globalcommons/Command.java b/src/main/java/seedu/duke/globalcommons/Command.java new file mode 100644 index 0000000000..4388e63dbf --- /dev/null +++ b/src/main/java/seedu/duke/globalcommons/Command.java @@ -0,0 +1,21 @@ +package seedu.duke.globalcommons; + +public class Command { + private boolean isExit; + + public Command() { + this.isExit = false; + } + + public Command(boolean isExit) { + this.isExit = isExit; + } + + public void execute() throws Exception { + + } + + public boolean getIsExit() { + return this.isExit; + } +} diff --git a/src/main/java/seedu/duke/parser/AcademicPlannerParser.java b/src/main/java/seedu/duke/parser/AcademicPlannerParser.java deleted file mode 100644 index 76b5b063c3..0000000000 --- a/src/main/java/seedu/duke/parser/AcademicPlannerParser.java +++ /dev/null @@ -1,47 +0,0 @@ -package seedu.duke.parser; - -import seedu.duke.commands.AcademicPlannerAddCommand; -import seedu.duke.commands.AcademicPlannerCommand; -import seedu.duke.apps.ModuleInitializer; -import seedu.duke.exceptions.AcademicPlannerParserException; -import seedu.duke.objects.Person; -import seedu.duke.ui.Ui; - - -public class AcademicPlannerParser { - - private static final String ADD_COMMAND = "add"; - private static final String EDIT_COMMAND = "edit;"; - private static final String REMOVE_COMMAND = "remove"; - private static final String LIST_COMMAND = "list"; - private static final String EXIT_COMMAND = "exit"; - private static final String INVALID_COMMAND_MESSAGE = "OOPS!!! I'm sorry, but I don't know what that means :-("; - - public static AcademicPlannerCommand parse(String userInput, ModuleInitializer allmodules, - Person currentPerson, Ui ui) throws AcademicPlannerParserException { - userInput = userInput.trim().toLowerCase(); - - if (userInput.startsWith(ADD_COMMAND)) { - //ADD COMMAND - System.out.println("add command"); - return new AcademicPlannerAddCommand(userInput, allmodules, currentPerson, ui); - } else if (userInput.startsWith(EDIT_COMMAND)) { - //EDIT COMMAND - System.out.println("edit command"); - return new AcademicPlannerAddCommand(userInput, allmodules, currentPerson, ui); - } else if (userInput.startsWith(REMOVE_COMMAND)) { - //REMOVE COMMAND - System.out.println("remove command"); - return new AcademicPlannerAddCommand(userInput, allmodules, currentPerson, ui); - } else if (userInput.equals(LIST_COMMAND)) { - //LIST COMMAND - System.out.println("list command"); - return new AcademicPlannerAddCommand(userInput, allmodules, currentPerson, ui); - } else if (userInput.equals(EXIT_COMMAND)) { - //EXIT - return new AcademicPlannerCommand(true); - } else { - throw new AcademicPlannerParserException(INVALID_COMMAND_MESSAGE); - } - } -} diff --git a/src/main/java/seedu/duke/parser/AppParser.java b/src/main/java/seedu/duke/parser/AppParser.java index 6554bd2302..b03a1ecac0 100644 --- a/src/main/java/seedu/duke/parser/AppParser.java +++ b/src/main/java/seedu/duke/parser/AppParser.java @@ -1,15 +1,14 @@ package seedu.duke.parser; -import seedu.duke.apps.AcademicPlanner; -import seedu.duke.apps.App; +import seedu.duke.apps.academicplanner.AcademicPlannerApp; import seedu.duke.apps.CapCalculator; import seedu.duke.apps.ModuleInitializer; import seedu.duke.exceptions.AppParserException; +import seedu.duke.globalcommons.App; import seedu.duke.objects.Person; import seedu.duke.ui.Ui; public class AppParser { - private static final String ACADEMIC_PLAN_COMMAND = "acadplan"; private static final String CAP_CALCULATOR_COMMAND = "capcalc"; private static final String EXIT_COMMAND = "exit"; @@ -20,7 +19,7 @@ public static App parse(String userInput, ModuleInitializer allModules, Person c userInput = userInput.trim().toLowerCase(); if (userInput.equals(ACADEMIC_PLAN_COMMAND)) { - return new AcademicPlanner(allModules, currentPerson, ui); + return new AcademicPlannerApp(allModules, currentPerson, ui); } else if (userInput.equals(CAP_CALCULATOR_COMMAND)) { return new CapCalculator(currentPerson, ui); } else if (userInput.equals(EXIT_COMMAND)) { From c9f41be81245321f22a401f8819ab5b5bc6953e1 Mon Sep 17 00:00:00 2001 From: Khenus Date: Fri, 9 Oct 2020 15:29:09 +0800 Subject: [PATCH 046/450] V0.6 Updated Expected.txt --- text-ui-test/EXPECTED.TXT | 7 ------- 1 file changed, 7 deletions(-) diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 251851cf98..a70391e693 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -19,13 +19,6 @@ Valid grades are: Special Grades: CS, CU, S, U, W, IC, IP, AUD, WU, EXE If you have yet to have a grade for the module: NT CS1010 added into Semester 2. -Available commands are: - add - edit - remove - view - exit -Type a command to continue... Thank you for using Academic Planner! Welcome back to PlanNUS Main Menu! For academic planner, type From 0aa5041e380f99edf508fbbf2453ea84720f240b Mon Sep 17 00:00:00 2001 From: Khenus Date: Fri, 9 Oct 2020 15:34:58 +0800 Subject: [PATCH 047/450] V0.6.2 Updated gradlew check --- .../duke/apps/academicplanner/AcademicPlannerParser.java | 2 +- .../apps/academicplanner/commands/AddModuleCommand.java | 7 ------- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java index 04fab335b6..78011c322c 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java +++ b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java @@ -32,7 +32,7 @@ public class AcademicPlannerParser { + "Type a command to continue..."; public static Command parse(String userInput, ModuleInitializer allModules, Person currentPerson, Ui ui) - throws CommandParserException { + throws CommandParserException { String[] inputs = userInput.toUpperCase().split(" "); Scanner in = ui.getScanner(); diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java index 504aabe40e..867b1a5645 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java @@ -26,13 +26,6 @@ public class AddModuleCommand extends Command { private Scanner in; private String moduleCode; - /** - * - * @param allModules ModuleInitializer - * @param currentPerson Person - * @param in Scanner - * @param moduleCode String - */ public AddModuleCommand(ModuleInitializer allModules, Person currentPerson, Scanner in, String moduleCode) { this.addUtils = new AddUtils(allModules, currentPerson); this.moduleValidator = new ModuleValidator(allModules, currentPerson); From 777988c065df5b3d906d3681f7531c37c0e4714f Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Fri, 9 Oct 2020 16:56:30 +0800 Subject: [PATCH 048/450] Add JUnit tests for addModuleToUser function --- .../academicplanner/commons/AddUtilsTest.java | 72 +++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 src/test/java/seedu/duke/apps/academicplanner/commons/AddUtilsTest.java diff --git a/src/test/java/seedu/duke/apps/academicplanner/commons/AddUtilsTest.java b/src/test/java/seedu/duke/apps/academicplanner/commons/AddUtilsTest.java new file mode 100644 index 0000000000..5b0cfde266 --- /dev/null +++ b/src/test/java/seedu/duke/apps/academicplanner/commons/AddUtilsTest.java @@ -0,0 +1,72 @@ +package seedu.duke.apps.academicplanner.commons; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import seedu.duke.apps.ModuleInitializer; +import seedu.duke.objects.PartialModule; +import seedu.duke.objects.Person; + +import java.util.ArrayList; + +import static org.junit.jupiter.api.Assertions.*; + +class AddUtilsTest { + + ModuleInitializer allModules; + Person currentPerson; + AddUtils addUtils; + + @BeforeEach + void setup() { + allModules = new ModuleInitializer(); + currentPerson = new Person("Bob"); + addUtils = new AddUtils(allModules,currentPerson); + } + + @Test + void addModuleToUser_emptyList_success() { + setup(); + + ArrayList modulesList = currentPerson.getModulesList(); + assertEquals(modulesList.size(),0); + addUtils.addModuleToUser("CS1010",1,"A+",4); + assertEquals(modulesList.size(),1); + + for (PartialModule m : modulesList) { + if (m.getModuleCode().equalsIgnoreCase("CS1010")) { + assertEquals(m.getModuleCode(),"CS1010"); + assertEquals(m.getSemesterIndex(),1); + assertEquals(m.getGrade(),"A+"); + assertEquals(m.getModuleCredit(),4); + } + } + } + + @Test + void addModuleToUser_nonEmptyList_success() { + setup(); + + ArrayList modulesList = currentPerson.getModulesList(); + assertEquals(modulesList.size(),0); + + addUtils.addModuleToUser("CS1010",1,"A+",4); + assertEquals(modulesList.size(),1); + + addUtils.addModuleToUser("CS1231",1,"B-",4); + assertEquals(modulesList.size(),2); + + for (PartialModule m : modulesList) { + if (m.getModuleCode().equalsIgnoreCase("CS1010")) { + assertEquals(m.getModuleCode(),"CS1010"); + assertEquals(m.getSemesterIndex(),1); + assertEquals(m.getGrade(),"A+"); + assertEquals(m.getModuleCredit(),4); + } else { + assertEquals(m.getModuleCode(),"CS1231"); + assertEquals(m.getSemesterIndex(),1); + assertEquals(m.getGrade(),"B-"); + assertEquals(m.getModuleCredit(),4); + } + } + } +} \ No newline at end of file From 6f1feed978a64f1b1cab7a3db49ec674c35e2148 Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Fri, 9 Oct 2020 16:58:00 +0800 Subject: [PATCH 049/450] Update JUnit test for addModuleToUser --- .../seedu/duke/apps/academicplanner/commons/AddUtilsTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/seedu/duke/apps/academicplanner/commons/AddUtilsTest.java b/src/test/java/seedu/duke/apps/academicplanner/commons/AddUtilsTest.java index 5b0cfde266..13974060ca 100644 --- a/src/test/java/seedu/duke/apps/academicplanner/commons/AddUtilsTest.java +++ b/src/test/java/seedu/duke/apps/academicplanner/commons/AddUtilsTest.java @@ -54,7 +54,7 @@ void addModuleToUser_nonEmptyList_success() { addUtils.addModuleToUser("CS1231",1,"B-",4); assertEquals(modulesList.size(),2); - + for (PartialModule m : modulesList) { if (m.getModuleCode().equalsIgnoreCase("CS1010")) { assertEquals(m.getModuleCode(),"CS1010"); @@ -69,4 +69,4 @@ void addModuleToUser_nonEmptyList_success() { } } } -} \ No newline at end of file +} From 81d0990b660ce90319f1d2c38d4d8ee94b07a94d Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Fri, 9 Oct 2020 17:01:39 +0800 Subject: [PATCH 050/450] Clean up JUnit code --- .../seedu/duke/apps/academicplanner/commons/AddUtilsTest.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/test/java/seedu/duke/apps/academicplanner/commons/AddUtilsTest.java b/src/test/java/seedu/duke/apps/academicplanner/commons/AddUtilsTest.java index 13974060ca..2c7bee447e 100644 --- a/src/test/java/seedu/duke/apps/academicplanner/commons/AddUtilsTest.java +++ b/src/test/java/seedu/duke/apps/academicplanner/commons/AddUtilsTest.java @@ -5,10 +5,8 @@ import seedu.duke.apps.ModuleInitializer; import seedu.duke.objects.PartialModule; import seedu.duke.objects.Person; - import java.util.ArrayList; - -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; class AddUtilsTest { From 3f7f9e6b71bffb1a6f5dc6cdd2590a8986470f50 Mon Sep 17 00:00:00 2001 From: JuZihao <57383789+JuZihao@users.noreply.github.com> Date: Fri, 9 Oct 2020 18:32:58 +0800 Subject: [PATCH 051/450] More OOP and refactering of Cap Calculator --- .../java/seedu/duke/apps/CapCalculator.java | 158 ------------------ .../apps/capcalculator/CapCalculator.java | 55 ++++++ .../capcalculator/CapCalculatorParser.java | 33 ++++ .../commands/CurrentCommand.java | 22 +++ .../commands/SetTargetCommand.java | 35 ++++ .../commons/CalculatorUtils.java | 29 ++++ .../capcalculator/commons/SetTargetUtils.java | 83 +++++++++ .../java/seedu/duke/parser/AppParser.java | 2 +- .../duke/parser/CapCalculatorParser.java | 27 --- 9 files changed, 258 insertions(+), 186 deletions(-) delete mode 100644 src/main/java/seedu/duke/apps/CapCalculator.java create mode 100644 src/main/java/seedu/duke/apps/capcalculator/CapCalculator.java create mode 100644 src/main/java/seedu/duke/apps/capcalculator/CapCalculatorParser.java create mode 100644 src/main/java/seedu/duke/apps/capcalculator/commands/CurrentCommand.java create mode 100644 src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java create mode 100644 src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java delete mode 100644 src/main/java/seedu/duke/parser/CapCalculatorParser.java diff --git a/src/main/java/seedu/duke/apps/CapCalculator.java b/src/main/java/seedu/duke/apps/CapCalculator.java deleted file mode 100644 index 2044bc399f..0000000000 --- a/src/main/java/seedu/duke/apps/CapCalculator.java +++ /dev/null @@ -1,158 +0,0 @@ -package seedu.duke.apps; - -import seedu.duke.exceptions.InvalidCapException; -import seedu.duke.exceptions.InvalidCreditException; -import seedu.duke.globalcommons.App; -import seedu.duke.objects.Person; -import seedu.duke.ui.Ui; - -import java.math.RoundingMode; -import java.text.DecimalFormat; -import java.util.Scanner; - -public class CapCalculator extends App { - - private static final double MAXIMUM_CAP = 5.00; - private static final String ERROR_INVALID_COMMAND = "INVALID COMMAND"; - private static final String AWAIT_COMMAND = "Type a command to continue..."; - private static final String EXIT_COMMAND = "EXIT"; - private static final String CURRENT_COMMAND = "CURRENT"; - private static final String SET_TARGET_COMMAND = "SET TARGET"; - private static final String EXIT_MESSAGE = "EXITING CAPCALC"; - private static final String INVALID_CAP_MESSAGE = "Your target CAP cannot be greater than the maximum CAP of 5!"; - private static final String INVALID_MC_MESSAGE = "Your target MC cannot be 0!"; - private static final String WELCOME_MESSAGE = "Welcome to CAP Calculator! Commands available are:\n" - + "\tCurrent\n" - + "\tSet target\n" - + "\tTo exit CAP Calculator, use command: \"exit\"\n\n" - + "\tInitializing your CAP..."; - - private Person person; - private Scanner scanner; - private Ui ui; - private final DecimalFormat formatFinalCap = new DecimalFormat("#.##"); - - public CapCalculator(Person currentPerson, Ui ui) { - this.person = currentPerson; - this.ui = ui; - this.scanner = ui.getScanner(); - } - - //Main Function - public void run() { - System.out.println(WELCOME_MESSAGE); - System.out.println(AWAIT_COMMAND); - String input = scanner.nextLine().toUpperCase(); - formatFinalCap.setRoundingMode(RoundingMode.UP); - - while (!input.equals(EXIT_COMMAND)) { - if (input.equals(CURRENT_COMMAND)) { - printCurrentCap(); - } else if (input.equals(SET_TARGET_COMMAND)) { - setTargetCap(); - } else { - System.out.println(ERROR_INVALID_COMMAND); - } - input = scanner.nextLine().toUpperCase(); - } - System.out.println(EXIT_MESSAGE); - } - - /** - * Prints out current CAP and number of graded MCs. - */ - private void printCurrentCap() { - double currentCap = person.getCurrentTotalMcxGrade() / (double) person.getCurrentMcAfterSU(); - System.out.println("Your current now CAP is: " + formatCapToString(currentCap)); - System.out.println("Number of graded MCs taken is: " + person.getCurrentMcAfterSU()); - } - - /** - * Allow the user to set the target CAP that user want to achieve in the next given MCs. - */ - private void setTargetCap() { - try { - System.out.println("What is your target CAP?"); - double targetCap = Double.parseDouble(scanner.nextLine()); - checkValidCap(targetCap); - - System.out.println("How many graded MCs you are taking to achieve the target CAP?"); - int targetGradedMC = Integer.parseInt(scanner.nextLine()); - checkValidCredits(targetGradedMC); - - calculateResults(targetCap, targetGradedMC); - } catch (NullPointerException e) { - System.out.println(ERROR_INVALID_COMMAND); - System.out.println(AWAIT_COMMAND); - } catch (InvalidCapException e) { - System.out.println(e.getMessage()); - } catch (InvalidCreditException e) { - System.out.println(e.getMessage()); - } - } - - /** - * Checks if the target Cap given by the user is valid. - * - * @param cap Cap to be checked - * @throws InvalidCapException if the Cap given is greater than 5.00 - */ - private void checkValidCap(double cap) throws InvalidCapException { - if (cap > MAXIMUM_CAP) { - throw new InvalidCapException(INVALID_CAP_MESSAGE); - } - } - - /** - * Checks if the target Cap given by the user is valid. - * - * @param credits Module credits to be checked - * @throws InvalidCreditException if the module credit given is 0 - */ - private void checkValidCredits(int credits) throws InvalidCreditException { - if (credits == 0) { - throw new InvalidCreditException(INVALID_MC_MESSAGE); - } - } - - /** - * Calculate what should be the user's minimum CAP in order to achieve user's target CAP. - */ - private void calculateResults(double targetCap,int targetGradedMC) { - int totalMcToTarget = person.getCurrentMcAfterSU() + targetGradedMC; - double targetCapxTargetMC = (double) totalMcToTarget * targetCap; - double neededCap = (targetCapxTargetMC - person.getCurrentTotalMcxGrade()) / (double) targetGradedMC; - - if (neededCap <= 5) { - System.out.println("You should achieve a minimum CAP of " + formatCapToString(neededCap) + " for your next " - + targetGradedMC + " MCs to achieve your target CAP of " + targetCap + "."); - } else { - System.out.println("OOPS!! Looks like you are not able to achieve your target CAP of " + targetCap - + " with you target MCs of " + targetGradedMC + "."); - } - } - - /** - * Returns CAP score as a string. - * - * @param academicPoint academic point to parse - * @return string of academic point - */ - private String formatCapToString(double academicPoint) { - if (isNaN(academicPoint)) { - return "0"; - } - return formatFinalCap.format(academicPoint); - } - - /** - * Returns true if CAP is NaN - * else returns false. - * - * @param academicPoint academic point to check - * @return boolean - */ - public boolean isNaN(double academicPoint) { - return (academicPoint != academicPoint); - } -} diff --git a/src/main/java/seedu/duke/apps/capcalculator/CapCalculator.java b/src/main/java/seedu/duke/apps/capcalculator/CapCalculator.java new file mode 100644 index 0000000000..d5b2ba7f5b --- /dev/null +++ b/src/main/java/seedu/duke/apps/capcalculator/CapCalculator.java @@ -0,0 +1,55 @@ +package seedu.duke.apps.capcalculator; + +import seedu.duke.globalcommons.App; +import seedu.duke.globalcommons.Command; +import seedu.duke.objects.Person; +import seedu.duke.ui.Ui; + +import java.math.RoundingMode; +import java.text.DecimalFormat; + +import static seedu.duke.apps.capcalculator.CapCalculatorParser.ERROR_INVALID_COMMAND; +import static seedu.duke.apps.capcalculator.CapCalculatorParser.NEW_LINE; +import static seedu.duke.apps.capcalculator.CapCalculatorParser.EXITING_CURRENT_COMMAND; + +public class CapCalculator extends App { + + private static final String AWAIT_COMMAND = "Type a command to continue..."; + private static final String EXIT_MESSAGE = "Thank you for using Cap Calculator!"; + private static final String WELCOME_MESSAGE = "Welcome to CAP Calculator! Commands available are:\n" + + "\tcurrent\n" + + "\tset target\n" + + "\tTo exit CAP Calculator, use command: \"exit\"\n\n" + + "\tInitializing your CAP..."; + + private final Person currentPerson; + private final Ui ui; + private final DecimalFormat formatFinalCap = new DecimalFormat("#.##"); + + public CapCalculator(Person currentPerson, Ui ui) { + this.currentPerson = currentPerson; + this.ui = ui; + } + + //Main Function + public void run() { + System.out.println(WELCOME_MESSAGE); + System.out.println(AWAIT_COMMAND); + boolean isExit = false; + formatFinalCap.setRoundingMode(RoundingMode.UP); + + while (!isExit) { + try { + String userInput = ui.getScanner().nextLine(); + Command commandInput = CapCalculatorParser.parse(userInput, currentPerson, ui); + commandInput.execute(); + isExit = commandInput.getIsExit(); + } catch (NumberFormatException e) { + System.out.println(ERROR_INVALID_COMMAND + NEW_LINE + EXITING_CURRENT_COMMAND); + } catch (Exception e) { + System.out.println(e.getMessage()); + } + } + System.out.println(EXIT_MESSAGE); + } +} diff --git a/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorParser.java b/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorParser.java new file mode 100644 index 0000000000..2c16067c4e --- /dev/null +++ b/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorParser.java @@ -0,0 +1,33 @@ +package seedu.duke.apps.capcalculator; + +import seedu.duke.apps.capcalculator.commands.CurrentCommand; +import seedu.duke.apps.capcalculator.commands.SetTargetCommand; +import seedu.duke.exceptions.CommandParserException; +import seedu.duke.globalcommons.Command; +import seedu.duke.objects.Person; +import seedu.duke.ui.Ui; + +public class CapCalculatorParser { + + public static final String NEW_LINE = "\n"; + public static final String EXITING_CURRENT_COMMAND = "Exiting current command back to Cap Calculator Main Menu."; + public static final String ERROR_INVALID_COMMAND = "INVALID COMMAND"; + private static final String CURRENT_COMMAND = "current"; + private static final String SET_TARGET_COMMAND = "set target"; + private static final String EXIT_COMMAND = "exit"; + private static final String INVALID_COMMAND_MESSAGE = "OOPS!!! I'm sorry, but I don't know what that means :-("; + + public static Command parse(String userInput, Person currentPerson, Ui ui) throws CommandParserException { + userInput = userInput.trim().toLowerCase(); + + if (userInput.equals(CURRENT_COMMAND)) { + return new CurrentCommand(currentPerson); + } else if (userInput.equals(SET_TARGET_COMMAND)) { + return new SetTargetCommand(currentPerson, ui); + } else if (userInput.equals(EXIT_COMMAND)) { + return new Command(true); + } else { + throw new CommandParserException(INVALID_COMMAND_MESSAGE); + } + } +} diff --git a/src/main/java/seedu/duke/apps/capcalculator/commands/CurrentCommand.java b/src/main/java/seedu/duke/apps/capcalculator/commands/CurrentCommand.java new file mode 100644 index 0000000000..e969b4b2ed --- /dev/null +++ b/src/main/java/seedu/duke/apps/capcalculator/commands/CurrentCommand.java @@ -0,0 +1,22 @@ +package seedu.duke.apps.capcalculator.commands; + +import seedu.duke.globalcommons.Command; +import seedu.duke.objects.Person; + +import static seedu.duke.apps.capcalculator.commons.CalculatorUtils.formatCapToString; + +public class CurrentCommand extends Command { + + private Person currentPerson; + + public CurrentCommand(Person currentPerson) { + this.currentPerson = currentPerson; + } + + @Override + public void execute() { + double currentCap = currentPerson.getCurrentTotalMcxGrade() / (double) currentPerson.getCurrentMcAfterSU(); + System.out.println("Your current now CAP is: " + formatCapToString(currentCap)); + System.out.println("Number of graded MCs taken is: " + currentPerson.getCurrentMcAfterSU()); + } +} diff --git a/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java b/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java new file mode 100644 index 0000000000..00a259be21 --- /dev/null +++ b/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java @@ -0,0 +1,35 @@ +package seedu.duke.apps.capcalculator.commands; + +import seedu.duke.exceptions.InvalidCapException; +import seedu.duke.exceptions.InvalidCreditException; +import seedu.duke.globalcommons.Command; +import seedu.duke.objects.Person; +import seedu.duke.ui.Ui; +import seedu.duke.apps.capcalculator.commons.SetTargetUtils; + + +public class SetTargetCommand extends Command { + + private Person currentPerson; + private Ui ui; + private SetTargetUtils setTargetUtils; + + public SetTargetCommand(Person currentPerson, Ui ui) { + this.currentPerson = currentPerson; + this.ui = ui; + this.setTargetUtils = new SetTargetUtils(currentPerson, ui); + } + + @Override + public void execute() { + try { + double targetCap = setTargetUtils.getTargetCap(); + int targetMCs = setTargetUtils.getTargetGradedMC(); + setTargetUtils.showResultsToUser(targetCap, targetMCs); + } catch (InvalidCapException e) { + System.out.println(e.getMessage()); + } catch (InvalidCreditException e) { + System.out.println(e.getMessage()); + } + } +} diff --git a/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java b/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java index ba1cb96a3b..bb8275e705 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java @@ -3,10 +3,15 @@ import seedu.duke.objects.PartialModule; import seedu.duke.objects.Person; +import java.text.DecimalFormat; + public class CalculatorUtils { private static final int FROM_ADD = 1; private static final int FROM_EDIT = 2; private static final int FROM_REMOVE = 3; + private static final DecimalFormat formatFinalCap = new DecimalFormat("#.##"); + protected static final double MAXIMUM_CAP = 5.00; + private final Person currentPerson; @@ -75,4 +80,28 @@ public void updateCap(int type, PartialModule currentModule, double... caps) { } } } + + /** + * Returns CAP score as a string. + * + * @param academicPoint academic point to parse + * @return string of academic point + */ + public static String formatCapToString(double academicPoint) { + if (isNaN(academicPoint)) { + return "0"; + } + return formatFinalCap.format(academicPoint); + } + + /** + * Returns true if CAP is NaN + * else returns false. + * + * @param academicPoint academic point to check + * @return boolean + */ + public static boolean isNaN(double academicPoint) { + return (academicPoint != academicPoint); + } } diff --git a/src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java b/src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java new file mode 100644 index 0000000000..fcc216d595 --- /dev/null +++ b/src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java @@ -0,0 +1,83 @@ +package seedu.duke.apps.capcalculator.commons; + +import seedu.duke.exceptions.InvalidCapException; +import seedu.duke.exceptions.InvalidCreditException; +import seedu.duke.objects.Person; +import seedu.duke.ui.Ui; + +import static seedu.duke.apps.capcalculator.commons.CalculatorUtils.MAXIMUM_CAP; +import static seedu.duke.apps.capcalculator.commons.CalculatorUtils.formatCapToString; + +public class SetTargetUtils { + private static final String INVALID_CAP_MESSAGE = "Your target CAP cannot be greater than the maximum CAP of 5!"; + private static final String INVALID_MC_MESSAGE = "Your target MC cannot be 0!"; + + private Person currentPerson; + private Ui ui; + + public SetTargetUtils(Person currentPerson, Ui ui) { + this.currentPerson = currentPerson; + this.ui = ui; + } + + /** + * Obtain the target CAP from the user. + */ + public double getTargetCap() throws InvalidCapException { + System.out.println("What is your target CAP?"); + double targetCap = Double.parseDouble(ui.getScanner().nextLine()); + checkValidCap(targetCap); + return targetCap; + } + + /** + * Obtain the target MCs from the user. + */ + public int getTargetGradedMC() throws InvalidCreditException { + System.out.println("How many graded MCs you are taking to achieve the target CAP?"); + int targetGradedMC = Integer.parseInt(ui.getScanner().nextLine()); + checkValidCredits(targetGradedMC); + return targetGradedMC; + } + + /** + * Checks if the target Cap given by the user is valid. + * + * @param cap Cap to be checked + * @throws InvalidCapException if the Cap given is greater than 5.00 or less than 0 + */ + private void checkValidCap(double cap) throws InvalidCapException { + if (cap > MAXIMUM_CAP || cap <= 0) { + throw new InvalidCapException(INVALID_CAP_MESSAGE); + } + } + + /** + * Checks if the target Cap given by the user is valid. + * + * @param credits Module credits to be checked + * @throws InvalidCreditException if the module credit given less than 0 + */ + private void checkValidCredits(int credits) throws InvalidCreditException { + if (credits <= 0) { + throw new InvalidCreditException(INVALID_MC_MESSAGE); + } + } + + /** + * Calculate what should be the user's minimum CAP in order to achieve user's target CAP and display to user. + */ + public void showResultsToUser(double targetCap,int targetGradedMC) { + int totalMcToTarget = currentPerson.getCurrentMcAfterSU() + targetGradedMC; + double targetCapxTargetMC = (double) totalMcToTarget * targetCap; + double neededCap = (targetCapxTargetMC - currentPerson.getCurrentTotalMcxGrade()) / (double) targetGradedMC; + + if (neededCap <= 5) { + System.out.println("You should achieve a minimum CAP of " + formatCapToString(neededCap) + " for your next " + + targetGradedMC + " MCs to achieve your target CAP of " + targetCap + "."); + } else { + System.out.println("OOPS!! Looks like you are not able to achieve your target CAP of " + targetCap + + " with you target MCs of " + targetGradedMC + "."); + } + } +} diff --git a/src/main/java/seedu/duke/parser/AppParser.java b/src/main/java/seedu/duke/parser/AppParser.java index b03a1ecac0..c22dd6be7e 100644 --- a/src/main/java/seedu/duke/parser/AppParser.java +++ b/src/main/java/seedu/duke/parser/AppParser.java @@ -1,7 +1,7 @@ package seedu.duke.parser; import seedu.duke.apps.academicplanner.AcademicPlannerApp; -import seedu.duke.apps.CapCalculator; +import seedu.duke.apps.capcalculator.CapCalculator; import seedu.duke.apps.ModuleInitializer; import seedu.duke.exceptions.AppParserException; import seedu.duke.globalcommons.App; diff --git a/src/main/java/seedu/duke/parser/CapCalculatorParser.java b/src/main/java/seedu/duke/parser/CapCalculatorParser.java deleted file mode 100644 index 4e2152a49e..0000000000 --- a/src/main/java/seedu/duke/parser/CapCalculatorParser.java +++ /dev/null @@ -1,27 +0,0 @@ -package seedu.duke.parser; - -import seedu.duke.apps.CapCalculator; -import seedu.duke.objects.Person; -import seedu.duke.ui.Ui; - -public class CapCalculatorParser { - - private static final String CURRENT_COMMAND = "current"; - private static final String SET_TARGET_COMMAND = "set target"; - private static final String EXIT_COMMAND = "exit"; - private static final String INVALID_COMMAND_MESSAGE = "OOPS!!! I'm sorry, but I don't know what that means :-("; - - public static CapCalculatorParser parse(String userInput, Person currentPerson, Ui ui) { - userInput = userInput.trim().toLowerCase(); - - if (userInput.equals(CURRENT_COMMAND)) { - return new CapCalculatorCurrentCommand(); - } else if (userInput.equals(SET_TARGET_COMMAND)) { - return new SetTargetCommand(); - } else if (userInput.equals(EXIT_COMMAND)) { - return new CapCalculatorParser(true); - } else { - throw new - } - } -} From 875aa1b5391164016d385d78811f61bf1d9743de Mon Sep 17 00:00:00 2001 From: harryleecp Date: Sat, 10 Oct 2020 10:11:47 +0800 Subject: [PATCH 052/450] Added images folder to access snapshots of expected outputs --- docs/UserGuide.md | 74 +++++++++++++++------------ docs/images/acadplan_features.png | Bin 0 -> 9939 bytes docs/images/add_module.png | Bin 0 -> 25687 bytes docs/images/capcalc_current.png | Bin 0 -> 6041 bytes docs/images/capcalc_features.png | Bin 0 -> 14411 bytes docs/images/capcalc_set_target.png | Bin 0 -> 15085 bytes docs/images/edit_module.png | Bin 0 -> 8366 bytes docs/images/edit_module_grade.png | Bin 0 -> 3643 bytes docs/images/edit_module_semester.png | Bin 0 -> 6314 bytes docs/images/exit_PlanNUS.png | Bin 0 -> 4740 bytes docs/images/exit_acadplan.png | Bin 0 -> 14293 bytes docs/images/exit_capcalc.png | Bin 0 -> 12812 bytes docs/images/remove_module.png | Bin 0 -> 5134 bytes 13 files changed, 42 insertions(+), 32 deletions(-) create mode 100644 docs/images/acadplan_features.png create mode 100644 docs/images/add_module.png create mode 100644 docs/images/capcalc_current.png create mode 100644 docs/images/capcalc_features.png create mode 100644 docs/images/capcalc_set_target.png create mode 100644 docs/images/edit_module.png create mode 100644 docs/images/edit_module_grade.png create mode 100644 docs/images/edit_module_semester.png create mode 100644 docs/images/exit_PlanNUS.png create mode 100644 docs/images/exit_acadplan.png create mode 100644 docs/images/exit_capcalc.png create mode 100644 docs/images/remove_module.png diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 6341fa8747..db11952d33 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -20,14 +20,14 @@ PlanNUS is a __desktop application for planning academic journey__ with modules PlanNUS has two separate commands at the main page where the users can either choose to have an outlook of their potential academic journey or calculate their CAP. For each of these commands, there are more specific functions for configuration of user's desired choices. - + -### Academic Calendar Planner: `acadPlan` -Directs user to the page where he/she can plan a personalized academic journey in NUS by using `add`, `remove` or `edit` features as shown below. +### Academic Calendar Planner: `acadplan` +Directs user to the page where he/she can plan a personalized academic journey in NUS by using `add`, `remove` , `view` or `edit` features as shown below. -{Photo here} + -Input format: `acadPlan` +Input format: `acadplan` #### Adding a module into the calendar: `add` @@ -38,7 +38,9 @@ Example of usage: * `add CS2113T` * `ADD cs2101` -{Photo here} +Upon entering the desired module, user will be prompted to enter the semester when this module had been or to be taken before keying in the grade as shown in the image below. + + __Caution:__ @@ -54,7 +56,7 @@ Example of usage: * `remove cs2113T` * `REMOVE CS2101` -{Photo here} + __Caution:__ @@ -69,7 +71,17 @@ Example of usage: * `edit CS2113T` * `EDIT cs2101` -{Photo here} + + +As shown in the image, user can choose to edit either the _Semester_ or _Grade_ of the selected module. (__Note:__ Enter either `1` or `2` instead of the component's name) + +Expected output when user wishes to change the _Semester_. + + + +Expected output when user wishes to change the _Grade_. + + __Caution:__ @@ -83,57 +95,55 @@ Input format: `view` -### Cap Calculator: `capCalc` +### Cap Calculator: `capcalc` -#### Printing current CAP and MCs taken: `current` +Directs user to the page where he/she can view the `current` CAP or even `set target` CAP to be met in the upcoming semester(s). -Input format: `current` + -{Photo here} +Input format: `capcalc` -__Caution:__ - -* Initializing the current CAP reads in all the modules added by the user in Academic Calendar Planner. -* If there are no modules added, the current CAP and graded MCs are set to 0 +#### Printing current CAP and MCs taken: `current` -#### Configure current CAP and graded MCs: `set current` +The value of CAP depends entirely on the modules and with corresponding grades added by the user in Academic Calendar Planner. -Input format: `set current` + -{Photo here} +Input format: `current` __Caution:__ -* Maximum CAP is 5.0 +* If there are no modules added, the current CAP and graded MCs are set to 0 #### Set target CAP: `set target` -This is for the user to set a target CAP that he or she wishes to obtain for the specified graded MCs. +This is for the user to set a target CAP that he or she wishes to obtain for the next specified graded MCs. -Input format: `set target` + -{Photo here} +Input format: `set target` __Caution:__ * Maximum CAP is 5.0 -#### Make the module grade as S/U: `set SU` -Input format: `set SU` -When prompted for the module that user has taken, the input format will be as such: -` ` (Example: `CS2113T B+ 4`) +### Exiting from a feature or PlanNUS: `exit` -{Photo here} +This command directs user back to the main page of PlanNUS after they are done using a feature or exits from the entire application itself. +When user exits from the Academic Planner, expected output is as shown below. + -### Exiting from a feature: `exit` +When user exits from the CAP calculator, expected output will be as follows: -This command directs user back to the main page of PlanNUS after they are done using a feature. + -{Photo here} +Last but not least, the expected output for exiting PlanNUS will be as such: + + Input format: `exit` @@ -213,4 +223,4 @@ As per NUS Grade Policy, letter grades will have a corresponding Academic Point | F | 0.0 | | Additional Grading Options* | - | -*Additional Grading options include S,U,CS,CU,IC,IP,AUD,EXE,W,WU. They hold no Academic Point Value. +*Additional Grading options include S,U,CS,CU,IC,IP,AUD,EXE,W,WU. They hold no Academic Point Value. \ No newline at end of file diff --git a/docs/images/acadplan_features.png b/docs/images/acadplan_features.png new file mode 100644 index 0000000000000000000000000000000000000000..d75b70873bf1cda4869ca220d8931e63b3d9bdc0 GIT binary patch literal 9939 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 literal 0 HcmV?d00001 diff --git a/docs/images/add_module.png b/docs/images/add_module.png new file mode 100644 index 0000000000000000000000000000000000000000..0a5fe85b23297b9771fd42502f06d6b088f66a1a GIT binary patch literal 25687 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 literal 0 HcmV?d00001 diff --git a/docs/images/capcalc_current.png b/docs/images/capcalc_current.png new file mode 100644 index 0000000000000000000000000000000000000000..ea2fd3b1af11fca495e44e1f38a37078d30a5739 GIT binary patch literal 6041 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 literal 0 HcmV?d00001 diff --git a/docs/images/capcalc_features.png b/docs/images/capcalc_features.png new file mode 100644 index 0000000000000000000000000000000000000000..a7267c6d9c70689a6a736a600c3321ee9bed0698 GIT binary patch literal 14411 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 literal 0 HcmV?d00001 diff --git a/docs/images/capcalc_set_target.png b/docs/images/capcalc_set_target.png new file mode 100644 index 0000000000000000000000000000000000000000..a21162a0347feee4486b89ffc92b0dc5a6724b05 GIT binary patch literal 15085 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 D4_l*& literal 0 HcmV?d00001 diff --git a/docs/images/edit_module.png b/docs/images/edit_module.png new file mode 100644 index 0000000000000000000000000000000000000000..330c6d0aab9963ca55b4a99b464c311fc44c7dca GIT binary patch literal 8366 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 eSZQ9mBHvaSWdFH0RD=5*PeS>C*gii1 literal 0 HcmV?d00001 diff --git a/docs/images/edit_module_grade.png b/docs/images/edit_module_grade.png new file mode 100644 index 0000000000000000000000000000000000000000..138af7f1d67e7fdab189fc9cbc56e606f53cf45f GIT binary patch literal 3643 zcmb7HXHXMrvkroQC{i>ay?O+K1_TtO1dz}a>0kg6Apz;ch=59ze&`7h6p6847pCJqd0PsHj z$C$=l#R5+{^&08vSOq$+X2e@s+!6ZPqnconY>D#p*|f1V84mOWXFvGayACQ)Jgc(W z_;XG&(7OMek~}0S=Y5PkI5j*)EINW$`m%x6_Tl`vW)$=EAP<*$#`yfryN#r%v8dVk zOgFAxi&uyA!7P9{tG11{@@vBD#{d{pAAoc!hY5aKkGYlOZ&nPDoAVR`x)9hLL2eiu zNu_2bc?{JTO__bVi1Y_wgu`27dZY3F>K4C!M~6#~oql{^rmIs}3s&g@>>(xEygbsL zzmK+b9ElJ;99)Kb1 zgi}ZaiR+MR>Rp@q4aX#|CM^eQV@k-cGC!<6-}cDvbkZGN60c>VqlqcG!8>t7b%z@u z%{fJqTr3M4S(V+XS|v`}*a0wBEbY&Ak&hF#a5Yt^hi5tqz6LmVkdi81x&Fu$IkfVa zAD2>7_;6|>@oL9jl!t90)_D2gP@6H;=q6P~NxLF`0g%+0iqOotmn&*kdgOpO5z}K!T)!R{}hC`+V!h2CRFY|!}$#$F|Q~I>-SMJEwqXF_&xG&Z%2DgA**@oUdgSHDn9rjg1d^)DYT|w z<+xOa-s&$8=sxM+cVu>D|2t}xjm#i$Wex!Q>Mj?!r{jL z4TwDo|A;BL(=>idB^41-#LkY$>eCVpxYoO6o9F$<&SdAVR|hfBf%FYDxmMv>LTF!$8mK6 zB*A1his`cSl%#r7U}aTkUD#b7+*4DRgGx)DoyGK$i2+5hMqMkAfuD|gr5tFdKO2w{ zNcznEK@LA(@nbspc|>R6(i@#M{JSnkuv%%5a`*#%>!u{(E_SjVmD7Oqr4pJ~5SQRV zt#FGCoYGOTg*zYY9gG+e-xgIgRSNgq{}9Sb+1(H5v1^y6Jwi$bx>g8XYtEL#8aN7F z`2GD?ELQTC$rC}19BgFlBPuTP+&TmgpI(-o|Fle_9Xu0SEcpCd{k4E|Lp7QKvt}Lr zn0s4b(bIAlJ|;eAf}b|<>yW7pl5dic^c6t~jk3*+`_JI}M=6224@-xaq4`_g=bB6G z;C*OZ&4@E16|!@vuxv{@g5YV`en?;z_wHbea@G zfEBwe!&CcWomaS%Ar$(4JewBm=HEe-{9PW}bzR&{0lsUPpLK40fy3Sr{MMrn_W@j9 z9pW9$6@E{sb)xClzsa${4sEDjOz+V4y;SLa*!~ z0!@y~88sU@-+8T*+ordgK%T1@{#sU0_4PJbiB>c)qYD;=hbw&O8keoZY@r;3h_vMF|_a3xfS9z}Qe8(N;} zs4;IiP~0^5VJdkQ#HlpoQT8RugGcwHL`N+4^?tn^5sf7{?DQ|Xfrn1>HP;SkQr6oG z9}7vvehuLA@hCYi_HNi;S#905>O>)MVVj);0L#2eqfvJfEDzE|ZC12_?0Nts-o0s( z0_g@-ME1dw_{#8VRKaTQSUB{JFPEt*WdGn!tY{RykJH-cOAO`JX>~Uc@_vfHZ@0 zw&KQoa+|Sywq<8V{ENqxr+(bIuvhFjcrXlry@Fj_y^*x!B)k>$-nVNnmVpe8Sy%dx z$Rsix4qe#&M!mSigv(Lu)MNn|Nh!iMxAV9@`7~tcSBR;KGTQ$FNS`^O!|>}w@4UTd zYf{JKM?H!dpyBm1t#X>Ac~RW<4z}~%(?Z`KtO_Y-n(W@Z#f%kO255(}zoG9&JdkZJ zCtqG@ig=KM9Q>vN$yO(hK*vT=7hN4Dg(S>u!msa)<>db+&#WYNuNW!*9?H9ab+#{3 zxsdq@Y%*QKikd?njr*C{uFr zpKQ$eX|3nBVN7p9uzK82-+9yUq9axRmA9d^^Q*se`%B=ZJBf%)xCfIs4@=wgjmhr) zi*%-4yeI~2#ktp+kZ7qtDj({eG= z>+|mtuj1U}nhj~&Z!fbHmY>H7Fu^=Su= zYSD)=2QmO)#eM#=fDLRtthl;wza98h6!kz)9{Ovu=k2qEtxC`Icl5+h^^>{L#D$}~ zG9`tcog(ak%@bY41K5Te20_td+tIn^ZtwPD$esF0A30>Z2av$$ywwxb4&0J;gye+a z(lLhwiEr_W-=Ebk-QV7+DgHf^+0YK}t7!p^k+&-=TZ!=`54;eYzVcK?=B6*X@k8{i zCJt4>2XTEiz{QW!-6~;G1sm^p6(7R;Q*ugf-fD@+ALq#K#VAsn#*a%02tJS7Y@CSSpM@~>=*YcDV=k$XU+@5 zFS%IlXdt6d0CuFLIKc+Mt<#{HS&_>Rs_=_mM@l};(a9FEiHKVRq5Hq|aKUX;)H>nyJCFX29m)Y zplcw|{camWSizyD4xlWVI{hVm)hTJufxnHctsU&xKiIoMl z4jfF|##~CzX1gCp#=k~EEk@{~Y>s89OS)<`Hziht^D+8xoaaMES!4E0Owd5U1o~TS za&Se=AE{-MKMXZO2o4I`=b%=kv%uQS|kAV;^2p8c z-6*zXTp-i$M8D?jhaINXR|1Hv2NvupKtMg@|2hrdvtAu>UCz^QGA?KoJ^AnfjG*`Q Jh`LUp{{l<88L9vP literal 0 HcmV?d00001 diff --git a/docs/images/edit_module_semester.png b/docs/images/edit_module_semester.png new file mode 100644 index 0000000000000000000000000000000000000000..b0706dde066e395cd159a479dab2740771792e45 GIT binary patch literal 6314 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 Ssw6xO(0cSlqfYJl+kXRP=sJ%8 literal 0 HcmV?d00001 diff --git a/docs/images/exit_PlanNUS.png b/docs/images/exit_PlanNUS.png new file mode 100644 index 0000000000000000000000000000000000000000..9de233a2ddd1da5b4fdce030b686a102b26b50d0 GIT binary patch literal 4740 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

bS}M@4Q6^2yb*u?qp(#kS14I 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 literal 0 HcmV?d00001 diff --git a/docs/images/remove_module.png b/docs/images/remove_module.png new file mode 100644 index 0000000000000000000000000000000000000000..2265218114e76f606f5f503e45e9db6333a4e684 GIT binary patch literal 5134 zcmb7Ibx;)Ew_jofC8Zmb7U^bTSsD~!0qJfK0i|n~mRLd%!KGWeo28VHZb6ntKpLc% zdVIfc-ao&2^JdIjFNVkvOgC9Gg1TP6S3F=qL~zxbk^yHHOc0B%Gc=GLgAaq%zrDI{8z1k8JE~ zRG6soRoGYNx=*rjoL{n}DqGNoWXgRuPUW7kvtv}65^gUixYn`0Rz^OBKO>>(TD zky=&56C)wDhZyo-MqJE}sRCU%?-kvx+?qv-x#ewg*GJ1HaS#2VFjB6>@Rw{C?yA z$v`WpCh_O9+@XYiNp(S4!Fk2-nSO)j;P+5%ex=xVFR;X4fRrrv)V7+3ykKq(h!DU> zCj0!b4DCkNv|Md$hx_M{gy=B$^5DMK)b5RKifnz_6$TC9R4y6VC|MyMAS~v17GS`Z zP7%GY+^uILG5^5#6#8~`PhcgCtK=zbxuCqrlcc%=iOe$=mE^xXOI{MvEn*8=pU1g! zdablgr3H)`S%nZ*FPka^Z&tAee&drV&E4f$gPyr6f$Kk zk_xIN%g&Ew!YD)*=u!f{Jv9d^OS>#vB+9kPtNgy_*f zp^JNIZJVLbhxfICopc0Gt|VTXoo;|gmKU3OxVTYC;92kp4&s;XICd>t#m9IRw|p%U z3D+=}bOF_eQUzlXwnUamOzT3(`o~i?B56)GDN4=ty7vmXwRp~l@S4?D?Bu41D#Whn z2m`vS^)GV|;5Ui7v}#D!#LJ7Gw70t2Q;|VJ1d5?rN0hX2?}l)`coj5sEwgKH3t10i zS9C`Wf14$1+@qy?7~`Q0p&HsPN|^Of{t0B%mdKxHBK#klM|;8qim)luvlJ#=KOpeP zglMwV#vgH8znu#&d%jQ7gPqt*XaKZ*mU>6%O)mb#5hBbuG|3b)N8DH27u-n%-C(1u zlhskIWkY@J|M+n$gZ%rKdpj4|3YD!5Pfvg`<=RfxtOt*{h1p%a3!{m%Px5c*_ySns zw6e(Z1uQjua<8OP>q28aCam^rC#7QA%rDuvwijt)t_p(B;Did^Cz`<>R;Bx9K*?GpE!UB zue7a|6}3JivjGEA>-hT&K8^SBCF&}UF9WChb(Z7#1~E9skZmPSL{FOBPW)0cgwnBw z)f9y6Bk6?s;&{TCC#+N!SXsdn!9h+#w<#Hn{oCKaMA<8U^-JfOynr78K0cP+6)Pr8 zLei#Oa@#8RHvBhwEy7cR*Srf`{!xg_xPkyz_&QKM{Tj21JehR`*dd;NQdp1*s_jsFPA4%Wxq`iZ0o` zU=upvr&PNNUP44Zc(mF4j%(x*by}-k5D0J3T^eJyP$Sk zhlW#3XQduF)Lum;uu7lMjUtasE*LIQE!kRtHUnzxjb>Dq`?`i=_D};3voFqoV4nS*g0iq*(^;Op36jFye48eO|eDv1)qlO<_ePSu&jun-y71DMnRK%%P zv*qTVx$GdL<+OQWNY^L`wn`-PWE0AooNbK$INu59WFHr&^#{@VUrMqD{OjN(Og4i` z?t5igrXbYR1>eRUB}dq5SCPbR0liCf1oEex9O?1CiJorQjx4DSb$+k6uydbM;_Vm3 zN=la`_Jsm2E(3k(j4}O=U;tc0bLs=)fB;Bdwe%-U`y`o2KZ2|@N#d-GL(xjX#^m!c zW&V^{&ZZ6d^(5zejy(0rQYv1z_rr27M)E36K0}U`dFCDeR>5~j>R<>wj(SXC7@2eOFdJ=pBofw-{uPUY`+o`hc-eBLk{I_~6^FyBr~ z=4_wOHyCyyD;%t@~^_R|^m zcpN|ky-|Q7xPww&ofX%r7%-+$sjHX-T0gosAvWmR%T%r>i*Z{UYd_5ozUu)(XX~pp z4=TW79(9iXeYdkxh2_F@i-fv^u33)g-oa|Hsei=EQ7iw+$^ex64hGB4_H%$=UCg$e zcuk^xeEU1m3O@JMMx(r9sm?)0(u}!sxdTbKL`9;N<=#6}q#66`#Q|@ucb$mfYpQ{} zyD1g;I`vP#y(zph%nx14av4)P&%=(|zvbIH4hA`zi}NcTrcg7f>tHZ)a=oS}WKn6Z zefIm^hPg(pZyFe0tkm@wkn&(@;*3(^iR_!pmS$GJO-mwuTxb5bI~}LGze_PxZLyW< z*NV(2)NmlIre>x3bA!y}yBzX%-pr3Bqu<};g6)U(i$;|^(9b;t&1Y^pzLV%N<6UCH zEi$+u?Yc0!%-sp}#*0NafE&Uksg&Q;0uioiL3J8u&hUA&}5iX>4n(PUGb zQkLvFn}T@z)XR)Y3Tol6>*Xwf-+wlCPqsfQGzZmKXBI9Inyf^(qcK3!LFd}SMTxt| z?4RfdHCtWZSv?9iEk$!|{Jg!i0@dsV_?^3<3Z{^b^2a=WO#Btb=W)Az4GY8Tvrx z6t8h`zch?TDEUAxFF5`DYjOq-SKFq&e5#y%WeS^DBL!jS1Q0aOoR~GLvBv2NCGxsr z-?z;fG<%)bF;pFDqPuVxaGB@1WQYD0aBiij)2+YWF#7AyaQ}-2d@P7eiv~Ick55>C ze#yb4snEZsuG+eG&-r<(%XAK>70WgbNm^Pwl%yPTy4BWA!7{{%@H!NxYv=tdPDeBA zpEew1a@idp-vOc$*9%^L34^$Zmsx0jDD03f_C{l^5zrv+`P%R?4rbD(nPdStvu~*J zC!<4Iq@WpYJ%hjiL2WLt{rA06F*-nT*>9^wdzFOTIE*5g0 zv)s$W%Fwg-K}mG9FlA#d4j=WQ;+zEsfS}->;aYms)@-qZrevn&alwfEc+cmA>RA^ zY)w}oVJ4?)dlLUjMZE7<3CRs{CZ6$-b4L9*DE>{el@=_;%(!4xQ`^_cZ;9RbIU`&X zZC-zrLUnE8llM0z5xcS2!#o?l$AfdNiNjrDnd~Qm9+2_W+Pg(inZ>wm7g`ivrjLr; z%=j7Afpq&Qj|6U&E8{=cYG8LxuZU9E)UXC^r5uU-RUbS>8JGsXZMIDw$sgdf5w6cn z)l;xNlCX(L!}G%UI5o75y$rIT@^ar^I~tEjaBDmjN+vBD9r;6q?T`{W5K5-T5eJAKqC-VB+weS~nlqCjcvi3*6_=+595D5-V*Kk<8N)Rg4 z>}I#2QCGbFDUV(KgF2>zaacr>s921zV&t?G3pY^j#}d`@SZI3OO!^aNevLotpg+`X z!PqWgd~1my(4LZ#(#<5J-{#gU;G7{WFasR0kTAHrTWJm~@sz2Vqp{ds>rBbAR>84< z3>W#ba1*M-%sex5(DoSL{3|&4;#)kFnTmzKD9r$re{N?q&%wBiqati8Dg7&R+Du0D zQBTR}c|Xcz5Y_B$1*h^oSM+W$d^U8r%;0^p>wr|EEOyumyw-3`Sj=i!o)rZwfeUBqwD9_j7 zx0}=JJ!5~@WLw6ph$v)l%)R`qYvvQK*0*mZa(R_S^`95f!j8ii%^55EcnLE~SS~2N z@$AdNrvj<-Lb}zur0bQVUY8(xa0Q~o*oc0R0h=V6&`IRRULQiBUSxh1y|w@Zriw~< z4P9lwy*Zxr>r)+YcRN0IcW-*yeg-Ng!JVu$4?Oe@MBF(`Denv7NVV9@2LRCjkV)j;ty1Uz`*L;%FxE_^*_Mu`nV3 zO(h&R+sE*dkt_RWXD(|8f#_ZID4nksw0_87>r?q^Piz4X*~`+*l?Ur^neSI4NZv*VndpV34z-&;SEMhe~BNW{BFjQrl% z6ROLsJBo^3gk2rRRh%|dxO!lQ2MfIUyuFS((^&n^ho`bD>YH^D8iR0@-Jwwrh;r&c zmN_}OFrsD76Gl!jlsdx;XLEnHZ>*uwK+V*dFm*f9c?vJlxX{1OLhkP6(R$XoJJUf2*UMBDvoeK|$k1Kfcm&Y-kXeic!r%q;*HgF*e| z$!4GDzI*bm^4hohIL<%M81@5=GFwcEah92Lz%+;vMVR#MoppN}g7xs9FB}YLYbv|C z9FX-_86qTx9ikGpcDBc!tr@sTyumpFx*|gK?mJr$3GztHf3ora7l9ASf@An+dIfCw Ur6uR?dw2jfB@M+2d5e($0*m0@HUIzs literal 0 HcmV?d00001 From 04c1ee853a8fdae2c6789220261e3a0993978d2e Mon Sep 17 00:00:00 2001 From: JuZihao <57383789+JuZihao@users.noreply.github.com> Date: Sat, 10 Oct 2020 12:05:36 +0800 Subject: [PATCH 053/450] Update testing results --- text-ui-test/EXPECTED.TXT | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index a70391e693..3afd5c7a14 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -25,15 +25,15 @@ Welcome back to PlanNUS Main Menu! For CAP calculator, type To exit PlanNUS, type Welcome to CAP Calculator! Commands available are: - Current - Set target + current + set target To exit CAP Calculator, use command: "exit" Initializing your CAP... Type a command to continue... Your current now CAP is: 5 Number of graded MCs taken is: 4 -EXITING CAPCALC +Thank you for using Cap Calculator! Welcome back to PlanNUS Main Menu! For academic planner, type For CAP calculator, type From 3524c76a5eef90913c5e56e6f425b5d741b3a5e8 Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Sat, 10 Oct 2020 19:12:20 +0800 Subject: [PATCH 054/450] Fix bug where exit from PlanNUS main menu will trigger help messages --- src/main/java/seedu/duke/Duke.java | 6 ++++-- text-ui-test/EXPECTED.TXT | 4 ---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/main/java/seedu/duke/Duke.java b/src/main/java/seedu/duke/Duke.java index ce2edc338b..73498358ef 100644 --- a/src/main/java/seedu/duke/Duke.java +++ b/src/main/java/seedu/duke/Duke.java @@ -36,8 +36,10 @@ public void run() { App selectedApp = AppParser.parse(userInput, allModules, currentPerson, ui); selectedApp.run(); isExit = selectedApp.getIsExit(); - System.out.println(WELCOME_BACK_MESSAGE); - System.out.println(HELP_MESSAGE); + if (!isExit) { + System.out.println(WELCOME_BACK_MESSAGE); + System.out.println(HELP_MESSAGE); + } } catch (Exception e) { System.out.println(e.getMessage()); } diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 3afd5c7a14..572b7398a4 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -39,8 +39,4 @@ Welcome back to PlanNUS Main Menu! For CAP calculator, type To exit PlanNUS, type OOPS!!! I'm sorry, but I don't know what that means :-( -Welcome back to PlanNUS Main Menu! - For academic planner, type - For CAP calculator, type - To exit PlanNUS, type Thanks for using PlanNUS! We hope to see you again! From 65b3f4e55fca25a77ca446c03a72ec75f5d43d3e Mon Sep 17 00:00:00 2001 From: JuZihao <57383789+JuZihao@users.noreply.github.com> Date: Sat, 10 Oct 2020 20:04:48 +0800 Subject: [PATCH 055/450] Added some JUnit test for Cap Calculator parser. --- .../capcalculator/CapCalculatorParser.java | 2 +- .../CapCalculatorParserTest.java | 78 +++++++++++++++++++ 2 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 src/test/java/seedu/duke/apps/capcalculator/CapCalculatorParserTest.java diff --git a/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorParser.java b/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorParser.java index 2c16067c4e..3c146cfc42 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorParser.java +++ b/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorParser.java @@ -12,10 +12,10 @@ public class CapCalculatorParser { public static final String NEW_LINE = "\n"; public static final String EXITING_CURRENT_COMMAND = "Exiting current command back to Cap Calculator Main Menu."; public static final String ERROR_INVALID_COMMAND = "INVALID COMMAND"; + public static final String INVALID_COMMAND_MESSAGE = "OOPS!!! I'm sorry, but I don't know what that means :-("; private static final String CURRENT_COMMAND = "current"; private static final String SET_TARGET_COMMAND = "set target"; private static final String EXIT_COMMAND = "exit"; - private static final String INVALID_COMMAND_MESSAGE = "OOPS!!! I'm sorry, but I don't know what that means :-("; public static Command parse(String userInput, Person currentPerson, Ui ui) throws CommandParserException { userInput = userInput.trim().toLowerCase(); diff --git a/src/test/java/seedu/duke/apps/capcalculator/CapCalculatorParserTest.java b/src/test/java/seedu/duke/apps/capcalculator/CapCalculatorParserTest.java new file mode 100644 index 0000000000..99ba156757 --- /dev/null +++ b/src/test/java/seedu/duke/apps/capcalculator/CapCalculatorParserTest.java @@ -0,0 +1,78 @@ +package seedu.duke.apps.capcalculator; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import seedu.duke.apps.capcalculator.commands.CurrentCommand; +import seedu.duke.apps.capcalculator.commands.SetTargetCommand; +import seedu.duke.globalcommons.Command; +import seedu.duke.objects.Person; +import seedu.duke.ui.Ui; + +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.fail; +import static seedu.duke.apps.capcalculator.CapCalculatorParser.INVALID_COMMAND_MESSAGE; + +class CapCalculatorParserTest { + + private Person currentPerson; + private Ui ui; + + @BeforeEach + public void setup() { + currentPerson = new Person("Bob"); + ui = new Ui(); + } + + @Test + void parse_emptyInput_exceptionThrown() { + try { + final String emptyInput = ""; + CapCalculatorParser.parse(emptyInput, currentPerson, ui); + } catch (Exception e) { + assertEquals(INVALID_COMMAND_MESSAGE, e.getMessage()); + } + } + + @Test + void parse_unknownInput_exceptionThrown() { + try { + final String unknownInput = "unknown command word"; + CapCalculatorParser.parse(unknownInput, currentPerson, ui); + } catch (Exception e) { + assertEquals(INVALID_COMMAND_MESSAGE, e.getMessage()); + } + } + + /** + * Tests for commands. ======================================================================= + */ + + @Test + public void parse_currentCommand_parsedCorrectly() { + final String input = "current"; + parseAndAssertCommandType(input, CurrentCommand.class, currentPerson, ui); + } + + @Test + public void parse_setTargetCommand_parsedCorrectly() { + final String input = "set target"; + parseAndAssertCommandType(input, SetTargetCommand.class, currentPerson, ui); + } + + /** + * Parses input and asserts the class/type of the returned command object. + * + * @param input to be parsed + * @param expectedCommandClass expected class of returned command + */ + private void parseAndAssertCommandType(String input, Class expectedCommandClass, + Person currentPerson, Ui ui) { + try { + final Command result = CapCalculatorParser.parse(input, currentPerson, ui); + assertTrue(result.getClass().isAssignableFrom(expectedCommandClass)); + } catch (Exception e) { + fail(); + } + } +} \ No newline at end of file From 986394af1b5b06691dac3d7d03837f7bcd4493c7 Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Sat, 10 Oct 2020 21:00:58 +0800 Subject: [PATCH 056/450] Update javadoc comments --- src/main/java/seedu/duke/Duke.java | 7 +++++++ .../java/seedu/duke/apps/ModuleInitializer.java | 4 +++- .../apps/academicplanner/AcademicPlannerApp.java | 3 +++ .../academicplanner/AcademicPlannerParser.java | 14 +++++++++++++- .../academicplanner/commands/AddModuleCommand.java | 4 +++- .../commands/EditModuleCommand.java | 4 +++- .../commands/RemoveModuleCommand.java | 4 +++- .../apps/academicplanner/commons/AddUtils.java | 4 +++- .../apps/academicplanner/commons/EditUtils.java | 4 +++- .../academicplanner/commons/ModuleValidator.java | 2 +- .../apps/academicplanner/commons/RemoveUtils.java | 4 +++- src/main/java/seedu/duke/globalcommons/App.java | 3 +++ .../java/seedu/duke/globalcommons/Command.java | 3 +++ .../java/seedu/duke/objects/PartialModule.java | 4 ++++ src/main/java/seedu/duke/objects/Person.java | 3 +++ src/main/java/seedu/duke/parser/AppParser.java | 3 +++ src/main/java/seedu/duke/ui/Ui.java | 3 +++ 17 files changed, 64 insertions(+), 9 deletions(-) diff --git a/src/main/java/seedu/duke/Duke.java b/src/main/java/seedu/duke/Duke.java index 73498358ef..df84d2b92a 100644 --- a/src/main/java/seedu/duke/Duke.java +++ b/src/main/java/seedu/duke/Duke.java @@ -25,6 +25,9 @@ public Duke() { currentPerson = new Person("Bob"); } + /** + * Main entry function for PlanNUS. + */ public void run() { System.out.println(WELCOME_MESSAGE); System.out.println(HELP_MESSAGE); @@ -47,6 +50,10 @@ public void run() { System.out.println(EXIT_MESSAGE); } + /** + * Main runnable code. + * @param args arguments from command line + */ public static void main(String[] args) { new Duke().run(); } diff --git a/src/main/java/seedu/duke/apps/ModuleInitializer.java b/src/main/java/seedu/duke/apps/ModuleInitializer.java index 598660d484..b307daca88 100644 --- a/src/main/java/seedu/duke/apps/ModuleInitializer.java +++ b/src/main/java/seedu/duke/apps/ModuleInitializer.java @@ -2,13 +2,15 @@ import com.google.gson.Gson; import seedu.duke.objects.FullModule; - import java.io.InputStream; import java.io.Reader; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map; +/** + * Class representing function to load all modules offered by NUS. + */ public class ModuleInitializer { private Map moduleMap = new HashMap<>(); private FullModule[] moduleFullDetails; diff --git a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java index cd4ac708ab..7f1af2f7f3 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java +++ b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java @@ -6,6 +6,9 @@ import seedu.duke.objects.Person; import seedu.duke.ui.Ui; +/** + * Class representing the Academic Planner Application. + */ public class AcademicPlannerApp extends App { private static final String WELCOME_MESSAGE = "\nWelcome to Academic Planner!"; private static final String EXIT_MESSAGE = "Thank you for using Academic Planner!"; diff --git a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java index 78011c322c..02822400b5 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java +++ b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java @@ -9,9 +9,11 @@ import seedu.duke.globalcommons.Command; import seedu.duke.objects.Person; import seedu.duke.ui.Ui; - import java.util.Scanner; +/** + * Class representing the parser for the academic parser. Used in the academic parser app. + */ public class AcademicPlannerParser { private static final int MODULE_CODE_INDEX = 1; public static final String NEW_LINE = "\n"; @@ -31,6 +33,16 @@ public class AcademicPlannerParser { + "\texit\n" + "Type a command to continue..."; + /** + * Command to process the user inputs and to return the intended command with the correct parameters. + * + * @param userInput input of user + * @param allModules data of all modules offered by NUS + * @param currentPerson person using the app + * @param ui ui for output + * @return Command to be executed + * @throws CommandParserException to return with error message + */ public static Command parse(String userInput, ModuleInitializer allModules, Person currentPerson, Ui ui) throws CommandParserException { String[] inputs = userInput.toUpperCase().split(" "); diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java index 867b1a5645..0cd02e36eb 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java @@ -6,9 +6,11 @@ import seedu.duke.exceptions.AcademicException; import seedu.duke.globalcommons.Command; import seedu.duke.objects.Person; - import java.util.Scanner; +/** + * Class representing an add module command from the academic planner. + */ public class AddModuleCommand extends Command { private static final String ERROR_INVALID_COMMAND = "INVALID COMMAND"; private static final String ERROR_INVALID_SEMESTER_INDEX = "INVALID SEMESTER INDEX"; diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/EditModuleCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/EditModuleCommand.java index 45e5547d7d..108b0246f2 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/EditModuleCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/EditModuleCommand.java @@ -6,9 +6,11 @@ import seedu.duke.exceptions.AcademicException; import seedu.duke.globalcommons.Command; import seedu.duke.objects.Person; - import java.util.Scanner; +/** + * Class representing an edit module command from the academic planner. + */ public class EditModuleCommand extends Command { private static final String EDIT_SEMESTER = "1"; private static final String EDIT_GRADE = "2"; diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java index 840ef0cb4b..7cf3bb42c3 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java @@ -7,10 +7,12 @@ import seedu.duke.globalcommons.Command; import seedu.duke.objects.PartialModule; import seedu.duke.objects.Person; - import java.util.HashMap; import java.util.Scanner; +/** + * Class representing an remove module command from the academic planner. + */ public class RemoveModuleCommand extends Command { private static final String EXITING_CURRENT_COMMAND = "Exiting current command back to Academic Planner Main Menu."; private static final String ERROR_INVALID_COMMAND = "INVALID COMMAND"; diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java index 69454495cd..5e2ebde162 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java @@ -4,10 +4,12 @@ import seedu.duke.apps.capcalculator.commons.CalculatorUtils; import seedu.duke.objects.PartialModule; import seedu.duke.objects.Person; - import java.util.ArrayList; import java.util.HashMap; +/** + * Class representing add module utilities from the add module command. + */ public class AddUtils { private static final int FROM_ADD = 1; diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java index 4afe753f14..1eb6a54421 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java @@ -5,11 +5,13 @@ import seedu.duke.exceptions.AcademicException; import seedu.duke.objects.PartialModule; import seedu.duke.objects.Person; - import java.util.ArrayList; import java.util.HashMap; import java.util.Scanner; +/** + * Class representing edit module utilities from the edit module command. + */ public class EditUtils { private final ArrayList modulesList; private final HashMap modulesAddedMap; diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java b/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java index 9cf5772b73..64308ab22e 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java @@ -3,10 +3,10 @@ import seedu.duke.apps.ModuleInitializer; import seedu.duke.objects.PartialModule; import seedu.duke.objects.Person; - import java.util.ArrayList; import java.util.HashMap; + public class ModuleValidator { private static final int STARTING_SEMESTER_INDEX = 1; private static final int FINAL_SEMESTER_INDEX = 10; diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java index 2ca8d5f251..3a958ad41c 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java @@ -3,9 +3,11 @@ import seedu.duke.apps.capcalculator.commons.CalculatorUtils; import seedu.duke.objects.PartialModule; import seedu.duke.objects.Person; - import java.util.ArrayList; +/** + * Class representing remove module utilities from the remove module command. + */ public class RemoveUtils { private static final int FROM_REMOVE = 3; diff --git a/src/main/java/seedu/duke/globalcommons/App.java b/src/main/java/seedu/duke/globalcommons/App.java index 6fb6b317d0..5cdb9eec86 100644 --- a/src/main/java/seedu/duke/globalcommons/App.java +++ b/src/main/java/seedu/duke/globalcommons/App.java @@ -1,5 +1,8 @@ package seedu.duke.globalcommons; +/** + * Class representing an application in PlanNUS. + */ public class App { private boolean isExit = false; diff --git a/src/main/java/seedu/duke/globalcommons/Command.java b/src/main/java/seedu/duke/globalcommons/Command.java index 4388e63dbf..b1146f8dd4 100644 --- a/src/main/java/seedu/duke/globalcommons/Command.java +++ b/src/main/java/seedu/duke/globalcommons/Command.java @@ -1,5 +1,8 @@ package seedu.duke.globalcommons; +/** + * Class representing a command in PlanNUS. + */ public class Command { private boolean isExit; diff --git a/src/main/java/seedu/duke/objects/PartialModule.java b/src/main/java/seedu/duke/objects/PartialModule.java index 4f0046bc8d..6e6cded00b 100644 --- a/src/main/java/seedu/duke/objects/PartialModule.java +++ b/src/main/java/seedu/duke/objects/PartialModule.java @@ -2,6 +2,10 @@ import org.apache.commons.lang3.builder.ToStringBuilder; +/** + * Class representing module object to be stored in the Person object. + * It is a truncated version of FullModule with only relevant fields. + */ public class PartialModule implements Comparable { private String moduleCode; private int semesterIndex; // 1 to 8 diff --git a/src/main/java/seedu/duke/objects/Person.java b/src/main/java/seedu/duke/objects/Person.java index 105fee4101..89f00beb8b 100644 --- a/src/main/java/seedu/duke/objects/Person.java +++ b/src/main/java/seedu/duke/objects/Person.java @@ -3,6 +3,9 @@ import java.util.ArrayList; import java.util.HashMap; +/** + * Class representing the user for PlanNUS. + */ public class Person { //General Variables private String personName; diff --git a/src/main/java/seedu/duke/parser/AppParser.java b/src/main/java/seedu/duke/parser/AppParser.java index c22dd6be7e..dc919c17f6 100644 --- a/src/main/java/seedu/duke/parser/AppParser.java +++ b/src/main/java/seedu/duke/parser/AppParser.java @@ -8,6 +8,9 @@ import seedu.duke.objects.Person; import seedu.duke.ui.Ui; +/** + * Class representing the parser for applications used in the main PlanNUS page. + */ public class AppParser { private static final String ACADEMIC_PLAN_COMMAND = "acadplan"; private static final String CAP_CALCULATOR_COMMAND = "capcalc"; diff --git a/src/main/java/seedu/duke/ui/Ui.java b/src/main/java/seedu/duke/ui/Ui.java index dfff04677b..8bbd702983 100644 --- a/src/main/java/seedu/duke/ui/Ui.java +++ b/src/main/java/seedu/duke/ui/Ui.java @@ -2,6 +2,9 @@ import java.util.Scanner; +/** + * Class representing the ui for PlanNUS. + */ public class Ui { private Scanner scanner; From 063f2cab5b8aa11c64234b0eb470c9886d0bdd1d Mon Sep 17 00:00:00 2001 From: harryleecp Date: Sat, 10 Oct 2020 22:21:01 +0800 Subject: [PATCH 057/450] Amended the link to the jar file (to be released) --- docs/UserGuide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index db11952d33..5cb0d35dfc 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -8,7 +8,7 @@ PlanNUS is a __desktop application for planning academic journey__ with modules ## Quick Start 1. Ensure that you have Java 11 or above installed. -1. Down the latest version of `PlanNUS` from [here](http://link.to/duke). +1. Download the latest version of `PlanNUS` from [here](https://github.com/AY2021S1-CS2113T-F12-1/tp/releases). 1. Double click on _PlanNUS.jar_ to start up the program. 1. If the previous step does not work, open up the command prompt. 1. Go to the directory where the jar file is saved at. From a5be34c6135b2bc24c2771f9f026b9b046d67fa4 Mon Sep 17 00:00:00 2001 From: harryleecp Date: Sat, 10 Oct 2020 22:25:50 +0800 Subject: [PATCH 058/450] Testing commit for DG --- docs/DeveloperGuide.md | 40 ++++++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 0ec3db103d..9d60578c86 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -1,11 +1,29 @@ # Developer Guide +{:toc} + +## Setting up PlanNUS + +First and foremost, the following steps are assuming that you already have a [GitHub](github.com) account set up beforehand. Once this has been done, proceed to __fork__ this [repo](https://github.com/AY2021S1-CS2113T-F12-1/tp), and __clone__ the fork into your computer using [Sourcetree]() or any other _Git GUI_. + +The _IDE_ to be used should contain the latest version of _Java_ as this is the main programming language for this application. Thus you are highly recommended to use Intellij IDEA. + +The following are remaining steps to be taken to finish the set up: + +1. Make sure that the version is configured as __JDK 11__. +2. When prompted, __import__ the project as a __Gradle project__ (could take minutes to complete). +3. Enter commands to ensure that PlanNUS functions as expected. You may refer to the _User Guide_ for valid commands. + + + ## Design & implementation {Describe the design and implementation of the product. Use UML diagrams and short code snippets where applicable.} + ## Product scope + ### Target user profile {Describe the target user profile} @@ -14,21 +32,31 @@ {Describe the value proposition: what problem does it solve?} + + ## User Stories -|Version| As a ... | I want to ... | So that I can ...| -|--------|----------|---------------|------------------| -|v1.0|new user|see usage instructions|refer to them when I forget how to use the application| -|v2.0|user|find a to-do item by name|locate a to-do without having to go through the entire list| +| Version | As a ... | I want to ... | So that I can ... | +| ------- | --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| v1.0 | fresh undergraduate | visualize the modules in the recommended schedule and course requirements | better plan out my academic journey for the next 4-5 years in NUS | +| v1.0 | undergraduate with at least 1 semester of study completed | calculate my CAP easily | forecast my own expected graduation CAP and if they match my expected CAP | +| v1.0 | undergraduate with at least 1 semester of study completed | print out a personalised list of modules taken so far and grades obtained | track my academic progression in NUS | +| v2.0 | user | find a to-do item by name | locate a to-do without having to go through the entire list | + + ## Non-Functional Requirements {Give non-functional requirements} + + ## Glossary -* *glossary item* - Definition +- *glossary item* - Definition + + ## Instructions for manual testing -{Give instructions on how to do a manual product testing e.g., how to load sample data to be used for testing} +{Give instructions on how to do a manual product testing e.g., how to load sample data to be used for testing} \ No newline at end of file From 91664762668a492efa9e8ac5259df0d7ccc4a956 Mon Sep 17 00:00:00 2001 From: Khenus Date: Sun, 11 Oct 2020 01:01:31 +0800 Subject: [PATCH 059/450] V0.7 Added test for Module initializer --- build.gradle | 10 +++- src/main/java/META-INF/MANIFEST.MF | 3 ++ src/main/java/seedu/duke/Duke.java | 3 +- .../seedu/duke/apps/ModuleInitializer.java | 15 ++++++ .../duke/apps/ModuleInitializerTest.java | 47 +++++++++++++++++++ 5 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 src/main/java/META-INF/MANIFEST.MF create mode 100644 src/test/java/seedu/duke/apps/ModuleInitializerTest.java diff --git a/build.gradle b/build.gradle index 30d5145f95..c0ee787f31 100644 --- a/build.gradle +++ b/build.gradle @@ -43,6 +43,14 @@ checkstyle { toolVersion = '8.23' } -run{ +run { standardInput = System.in } + +jar { + manifest { + attributes( + 'Main-Class': 'seedu.duke.Duke' + ) + } +} diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF new file mode 100644 index 0000000000..19e86fe56e --- /dev/null +++ b/src/main/java/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Main-Class: seedu.duke.Duke + diff --git a/src/main/java/seedu/duke/Duke.java b/src/main/java/seedu/duke/Duke.java index df84d2b92a..099f65f8a2 100644 --- a/src/main/java/seedu/duke/Duke.java +++ b/src/main/java/seedu/duke/Duke.java @@ -8,7 +8,6 @@ public class Duke { - private static final String WELCOME_MESSAGE = "Welcome to PlanNUS!"; private static final String WELCOME_BACK_MESSAGE = "Welcome back to PlanNUS Main Menu!"; private static final String EXIT_MESSAGE = "Thanks for using PlanNUS! We hope to see you again!"; @@ -23,6 +22,8 @@ public Duke() { ui = new Ui(); allModules = new ModuleInitializer(); currentPerson = new Person("Bob"); + + System.out.println(allModules.getModuleFullDetails()[1786].toString()); } /** diff --git a/src/main/java/seedu/duke/apps/ModuleInitializer.java b/src/main/java/seedu/duke/apps/ModuleInitializer.java index b307daca88..1baba1eff4 100644 --- a/src/main/java/seedu/duke/apps/ModuleInitializer.java +++ b/src/main/java/seedu/duke/apps/ModuleInitializer.java @@ -12,6 +12,7 @@ * Class representing function to load all modules offered by NUS. */ public class ModuleInitializer { + private boolean isLoadingSuccessful; private Map moduleMap = new HashMap<>(); private FullModule[] moduleFullDetails; @@ -25,6 +26,20 @@ public ModuleInitializer() { for (int i = 0; i < moduleFullDetails.length; i++) { moduleMap.put(moduleFullDetails[i].getModuleCode(), i); } + + if (moduleFullDetails.length != 12436) { + isLoadingSuccessful = false; + } else { + isLoadingSuccessful = true; + } + } + + public ModuleInitializer(boolean isProperCreation) { + this.isLoadingSuccessful = isProperCreation; + } + + public boolean getIsLoadingSuccessful() { + return this.isLoadingSuccessful; } public Map getModuleMap() { diff --git a/src/test/java/seedu/duke/apps/ModuleInitializerTest.java b/src/test/java/seedu/duke/apps/ModuleInitializerTest.java new file mode 100644 index 0000000000..42014edc90 --- /dev/null +++ b/src/test/java/seedu/duke/apps/ModuleInitializerTest.java @@ -0,0 +1,47 @@ +package seedu.duke.apps; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import seedu.duke.objects.FullModule; + +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.*; + +class ModuleInitializerTest { + private ModuleInitializer allModules; + + @BeforeEach + public void setup() { + allModules = new ModuleInitializer(); + } + + @Test + void getModuleMap_loadAllModuleData_success() { + Map moduleMap = allModules.getModuleMap(); + + assertEquals(moduleMap.get("CS1010"), 1786); + } + + @Test + void getModuleFullDetails_loadAllModuleData_success() { + FullModule[] modules = allModules.getModuleFullDetails(); + + assertEquals(allModules.getIsLoadingSuccessful(), true); + + assertEquals(modules.length, 12436); + assertEquals(modules[1786].toString(), "{\"additionalProperties\":{}," + + "\"attributes\":[true,false,false,false,false,false,false,false,false]," + + "\"corequisite\":\"\",\"department\":\"Computer Science\",\"faculty\":\"Computing\"," + + "\"moduleCode\":\"CS1010\",\"moduleCredit\":4," + + "\"preclusion\":\"CS1010E, CS1010J, CS1010S, CS1010X, CS1010XCP, CS1101S\"," + + "\"prerequisite\":\"\",\"semester\":[1,2],\"title\":\"Programming Methodology\"}"); + } + + @Test + void getModuleFullDetails_loadAllModuleData_fail() { + allModules = new ModuleInitializer(false); + + assertEquals(allModules.getIsLoadingSuccessful(), false); + } +} \ No newline at end of file From 4e6f63e48c529ebdf5150a2c1995ed0bae3f8475 Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Sun, 11 Oct 2020 11:37:38 +0800 Subject: [PATCH 060/450] Clean up code Add missing javadoc comments Refactor code to have higher level of SLAP --- .gitignore | 1 + src/main/java/seedu/duke/Duke.java | 35 ++++- .../academicplanner/AcademicPlannerApp.java | 11 +- .../commands/AddModuleCommand.java | 22 ++- .../academicplanner/commons/EditUtils.java | 31 +++- .../commons/ModuleValidator.java | 1 - .../apps/capcalculator/CapCalculator.java | 27 +++- .../capcalculator/CapCalculatorParser.java | 12 ++ .../commands/CurrentCommand.java | 7 +- .../commands/SetTargetCommand.java | 7 +- .../commons/CalculatorUtils.java | 138 +++++++++++++----- .../capcalculator/commons/SetTargetUtils.java | 33 ++++- .../duke/exceptions/AcademicException.java | 3 + .../AcademicPlannerParserException.java | 3 + .../duke/exceptions/AppParserException.java | 3 + .../exceptions/CapCalculatorException.java | 2 +- .../exceptions/CommandParserException.java | 3 + .../seedu/duke/objects/PartialModule.java | 6 + src/main/java/seedu/duke/objects/Person.java | 6 +- .../java/seedu/duke/parser/AppParser.java | 10 ++ 20 files changed, 288 insertions(+), 73 deletions(-) diff --git a/.gitignore b/.gitignore index af269c4002..9a3f753456 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,4 @@ bin/ /text-ui-test/ACTUAL.txt text-ui-test/EXPECTED-UNIX.TXT /text-ui-test/DIFF.TXT +DIFF.TXT diff --git a/src/main/java/seedu/duke/Duke.java b/src/main/java/seedu/duke/Duke.java index df84d2b92a..2f34dd4f6c 100644 --- a/src/main/java/seedu/duke/Duke.java +++ b/src/main/java/seedu/duke/Duke.java @@ -6,7 +6,9 @@ import seedu.duke.parser.AppParser; import seedu.duke.ui.Ui; - +/** + * Class representing main function of PlanNUS. + */ public class Duke { private static final String WELCOME_MESSAGE = "Welcome to PlanNUS!"; @@ -29,8 +31,7 @@ public Duke() { * Main entry function for PlanNUS. */ public void run() { - System.out.println(WELCOME_MESSAGE); - System.out.println(HELP_MESSAGE); + showWelcomeMessage(); boolean isExit = false; while (!isExit) { @@ -40,18 +41,40 @@ public void run() { selectedApp.run(); isExit = selectedApp.getIsExit(); if (!isExit) { - System.out.println(WELCOME_BACK_MESSAGE); - System.out.println(HELP_MESSAGE); + showWelcomeBackMessage(); } } catch (Exception e) { System.out.println(e.getMessage()); } } + showExitMessage(); + } + + /** + * Prints exit message for user just before termination of program. + */ + private void showExitMessage() { System.out.println(EXIT_MESSAGE); } /** - * Main runnable code. + * Prints welcome back message for user when user returns back to main menu. + */ + private void showWelcomeBackMessage() { + System.out.println(WELCOME_BACK_MESSAGE); + System.out.println(HELP_MESSAGE); + } + + /** + * Prints welcome message for user upon first entry into PlanNUS. + */ + private void showWelcomeMessage() { + System.out.println(WELCOME_MESSAGE); + System.out.println(HELP_MESSAGE); + } + + /** + * Main executable code. * @param args arguments from command line */ public static void main(String[] args) { diff --git a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java index 7f1af2f7f3..1e88108706 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java +++ b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java @@ -30,6 +30,9 @@ public AcademicPlannerApp(ModuleInitializer allModules, Person currentPerson, Ui this.ui = ui; } + /** + * Main entry point for the Academic Planner Application. + */ public void run() { System.out.println(WELCOME_MESSAGE); System.out.println(COMMANDS_LIST); @@ -45,7 +48,13 @@ public void run() { System.out.println(e.getMessage()); } } - System.out.println(EXIT_MESSAGE); + showExitMessageAcademicPlanner(); } + /** + * Prints exit message for Academic Planner. + */ + private void showExitMessageAcademicPlanner() { + System.out.println(EXIT_MESSAGE); + } } diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java index 0cd02e36eb..a3970a67e9 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java @@ -51,8 +51,7 @@ public void execute() throws AcademicException { throw new AcademicException(ERROR_DUPLICATE_MOD); } - System.out.println("Semester you plan to take " + moduleCode.toUpperCase() + "?"); - System.out.println(VALID_SEMESTERS); + promptUserToEnterSemester(); String userInput = in.nextLine(); int semesterValue; @@ -66,8 +65,7 @@ public void execute() throws AcademicException { throw new AcademicException(ERROR_INVALID_SEMESTER_INDEX); } - System.out.println("Grade received for " + moduleCode.toUpperCase() + "?"); - System.out.println(VALID_GRADES); + promptUserToEnterGrade(); String gradeValue = in.nextLine(); if (!moduleValidator.isValidGrade(gradeValue)) { @@ -76,4 +74,20 @@ public void execute() throws AcademicException { int moduleCredit = addUtils.getModuleCreditForModule(moduleCode); addUtils.addModuleToUser(moduleCode, semesterValue, gradeValue, moduleCredit); } + + /** + * Prints prompt and help messages for user to enter module's grade. + */ + private void promptUserToEnterGrade() { + System.out.println("Grade received for " + moduleCode.toUpperCase() + "?"); + System.out.println(VALID_GRADES); + } + + /** + * Prints prompt and help messages for user to enter module's semester taken. + */ + private void promptUserToEnterSemester() { + System.out.println("Semester you plan to take " + moduleCode.toUpperCase() + "?"); + System.out.println(VALID_SEMESTERS); + } } diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java index 1eb6a54421..6f4dcb4924 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java @@ -13,6 +13,7 @@ * Class representing edit module utilities from the edit module command. */ public class EditUtils { + private final ArrayList modulesList; private final HashMap modulesAddedMap; private final ModuleValidator modChecker; @@ -30,6 +31,11 @@ public EditUtils(ModuleInitializer allModules, Person currentPerson) { private static final String PROMPT_NEW_GRADE = "Enter the new grade: "; private static final String ERROR_INVALID_SEMESTER_INDEX = "INVALID SEMESTER INDEX"; private static final String ERROR_INVALID_GRADE = "INVALID GRADE VALUE"; + private static final String VALID_GRADES = "Valid grades are:\n" + + "\tLetter Grades: A+, A, A-, B+, B, B-, C+, C, D+, D, F\n" + + "\tSpecial Grades: CS, CU, S, U, W, IC, IP, AUD, WU, EXE\n" + + "\tIf you have yet to have a grade for the module: NT"; + private static final String VALID_SEMESTERS = "Valid semesters are integers from 1 to 10, inclusive"; /** * Changes the current grade of module to the input of the user. @@ -41,6 +47,7 @@ public EditUtils(ModuleInitializer allModules, Person currentPerson) { */ public void editModuleGrade(Scanner in, String moduleCode) throws AcademicException { System.out.println(PROMPT_NEW_GRADE); + System.out.println(VALID_GRADES); String gradeValue = in.nextLine().toUpperCase(); if (!modChecker.isValidGrade(gradeValue)) { @@ -59,18 +66,27 @@ public void editModuleGrade(Scanner in, String moduleCode) throws AcademicExcept * @param gradeValue grade to edit to */ public void updateModuleGrade(String moduleCode, String gradeValue) { - for (PartialModule item : modulesList) { - if (item.getModuleCode().equals(moduleCode)) { - double oldCap = item.getCap(); - item.setGrade(gradeValue); - double newCap = item.getCap(); - calculatorUtils.updateCap(FROM_EDIT, item, oldCap, newCap); + for (PartialModule module : modulesList) { + if (module.getModuleCode().equals(moduleCode)) { + updateCurrentModuleGrade(gradeValue, module); break; } } modulesAddedMap.get(moduleCode).setGrade(gradeValue); } + /** + * Updates module to reflect the new grade. + * @param gradeValue new grade value to reflect + * @param module module to edit + */ + private void updateCurrentModuleGrade(String gradeValue, PartialModule module) { + double oldCap = module.getCap(); + module.setGrade(gradeValue); + double newCap = module.getCap(); + calculatorUtils.updateCap(FROM_EDIT, module, oldCap, newCap); + } + /** * Edits module semester taken when module is in user's list. * PartialModule must exist in user's module list and hashmap. @@ -81,6 +97,7 @@ public void updateModuleGrade(String moduleCode, String gradeValue) { */ public void editModuleSemester(Scanner in, String moduleCode) throws AcademicException { System.out.println(PROMPT_NEW_SEMESTER_VALUE); + System.out.println(VALID_SEMESTERS); String newValue = in.nextLine(); if (!modChecker.isValidSemester(Integer.parseInt(newValue))) { @@ -102,7 +119,7 @@ public void updateModuleSemester(String moduleCode, String newValue) { for (PartialModule item : modulesList) { if (item.getModuleCode().equals(moduleCode)) { item.setSemesterIndex(Integer.parseInt(newValue)); - return; + break; } } } diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java b/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java index 64308ab22e..6ab99691b5 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java @@ -6,7 +6,6 @@ import java.util.ArrayList; import java.util.HashMap; - public class ModuleValidator { private static final int STARTING_SEMESTER_INDEX = 1; private static final int FINAL_SEMESTER_INDEX = 10; diff --git a/src/main/java/seedu/duke/apps/capcalculator/CapCalculator.java b/src/main/java/seedu/duke/apps/capcalculator/CapCalculator.java index d5b2ba7f5b..91644c6b4a 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/CapCalculator.java +++ b/src/main/java/seedu/duke/apps/capcalculator/CapCalculator.java @@ -4,14 +4,15 @@ import seedu.duke.globalcommons.Command; import seedu.duke.objects.Person; import seedu.duke.ui.Ui; - import java.math.RoundingMode; import java.text.DecimalFormat; - import static seedu.duke.apps.capcalculator.CapCalculatorParser.ERROR_INVALID_COMMAND; import static seedu.duke.apps.capcalculator.CapCalculatorParser.NEW_LINE; import static seedu.duke.apps.capcalculator.CapCalculatorParser.EXITING_CURRENT_COMMAND; +/** + * Class representing the CAP Calculator app in PlanNUS. + */ public class CapCalculator extends App { private static final String AWAIT_COMMAND = "Type a command to continue..."; @@ -31,10 +32,11 @@ public CapCalculator(Person currentPerson, Ui ui) { this.ui = ui; } - //Main Function + /** + * Main function for CAP Calculator. + */ public void run() { - System.out.println(WELCOME_MESSAGE); - System.out.println(AWAIT_COMMAND); + showWelcomeMessage(); boolean isExit = false; formatFinalCap.setRoundingMode(RoundingMode.UP); @@ -50,6 +52,21 @@ public void run() { System.out.println(e.getMessage()); } } + showExitMessage(); + } + + /** + * Prints out exit message when user enters CAP Calculator. + */ + private void showExitMessage() { System.out.println(EXIT_MESSAGE); } + + /** + * Prints out welcome message when user enters CAP Calculator. + */ + private void showWelcomeMessage() { + System.out.println(WELCOME_MESSAGE); + System.out.println(AWAIT_COMMAND); + } } diff --git a/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorParser.java b/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorParser.java index 3c146cfc42..329a39a883 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorParser.java +++ b/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorParser.java @@ -7,6 +7,9 @@ import seedu.duke.objects.Person; import seedu.duke.ui.Ui; +/** + * Class representing the parser used in the CAP Calculator app. + */ public class CapCalculatorParser { public static final String NEW_LINE = "\n"; @@ -17,6 +20,15 @@ public class CapCalculatorParser { private static final String SET_TARGET_COMMAND = "set target"; private static final String EXIT_COMMAND = "exit"; + /** + * Processes user input command and returns command to be executed. + * + * @param userInput user input + * @param currentPerson user of PlanNUS + * @param ui ui + * @return Command to be executed + * @throws CommandParserException thrown when an invalid command is entered + */ public static Command parse(String userInput, Person currentPerson, Ui ui) throws CommandParserException { userInput = userInput.trim().toLowerCase(); diff --git a/src/main/java/seedu/duke/apps/capcalculator/commands/CurrentCommand.java b/src/main/java/seedu/duke/apps/capcalculator/commands/CurrentCommand.java index e969b4b2ed..ee578390a0 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commands/CurrentCommand.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commands/CurrentCommand.java @@ -2,9 +2,11 @@ import seedu.duke.globalcommons.Command; import seedu.duke.objects.Person; - import static seedu.duke.apps.capcalculator.commons.CalculatorUtils.formatCapToString; +/** + * Class representing the Current CAP command for CAP Calculator. + */ public class CurrentCommand extends Command { private Person currentPerson; @@ -13,6 +15,9 @@ public CurrentCommand(Person currentPerson) { this.currentPerson = currentPerson; } + /** + * Prints out user's current cap obtained from his/her academic calendar. + */ @Override public void execute() { double currentCap = currentPerson.getCurrentTotalMcxGrade() / (double) currentPerson.getCurrentMcAfterSU(); diff --git a/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java b/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java index 00a259be21..8c45f34e65 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java @@ -7,7 +7,9 @@ import seedu.duke.ui.Ui; import seedu.duke.apps.capcalculator.commons.SetTargetUtils; - +/** + * Class representing the Set target CAP command for CAP Calculator. + */ public class SetTargetCommand extends Command { private Person currentPerson; @@ -20,6 +22,9 @@ public SetTargetCommand(Person currentPerson, Ui ui) { this.setTargetUtils = new SetTargetUtils(currentPerson, ui); } + /** + * Function to calculate CAP needed to obtain target grades. + */ @Override public void execute() { try { diff --git a/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java b/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java index bb8275e705..7e3020f21f 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java @@ -2,9 +2,11 @@ import seedu.duke.objects.PartialModule; import seedu.duke.objects.Person; - import java.text.DecimalFormat; +/** + * Class representing common functions for the CAP Calculator. + */ public class CalculatorUtils { private static final int FROM_ADD = 1; private static final int FROM_EDIT = 2; @@ -12,7 +14,6 @@ public class CalculatorUtils { private static final DecimalFormat formatFinalCap = new DecimalFormat("#.##"); protected static final double MAXIMUM_CAP = 5.00; - private final Person currentPerson; public CalculatorUtils(Person currentPerson) { @@ -30,57 +31,122 @@ public CalculatorUtils(Person currentPerson) { public void updateCap(int type, PartialModule currentModule, double... caps) { // Caps is an array, 0 being oldCap, 1 being newCap if (type == FROM_ADD) { - //Incrementing total MC regardless of SU - int moduleCredit = currentModule.getModuleCredit(); - currentPerson.setCurrentMc(currentPerson.getCurrentMc() + moduleCredit); - - //Incrementing total MC after SU only if module is not SU - if (currentModule.getCap() != -1.00) { - currentPerson.setCurrentMcAfterSU(currentPerson.getCurrentMcAfterSU() + moduleCredit); - double newMCxGrade = currentModule.getCap() * moduleCredit; - currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() + newMCxGrade); - } + updateCapFromAdd(currentModule); } else if (type == FROM_REMOVE) { //Decreasing total MC regardless of SU currentPerson.setCurrentMc(currentPerson.getCurrentMc() - currentModule.getModuleCredit()); - //Decreasing total MC after SU only if module is not SU if (currentModule.getCap() != -1.00) { - currentPerson.setCurrentMcAfterSU(currentPerson.getCurrentMcAfterSU() - - currentModule.getModuleCredit()); - double mcxGradeToMinus = currentModule.getCap() * currentModule.getModuleCredit(); - currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() - - mcxGradeToMinus); + editCapNonSuToSu(currentModule, currentModule.getCap()); } } else if (type == FROM_EDIT) { - if (caps[0] == -1.00 && caps[1] != -1.00) { + if (isFromSuToNonSu(caps)) { //Case where previously was SU but new is not SU - currentPerson.setCurrentMcAfterSU(currentPerson.getCurrentMcAfterSU() - + currentModule.getModuleCredit()); - double newMCxGrade = caps[1] * currentModule.getModuleCredit(); - currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() - + newMCxGrade); + editCapSuToNonSu(currentModule.getModuleCredit(), caps[1]); - } else if (caps[0] != -1.00 && caps[1] == -1.00) { + } else if (isFromNonSuToSu(caps)) { //Case where previously was not SU but now is SU - currentPerson.setCurrentMcAfterSU(currentPerson.getCurrentMcAfterSU() - - currentModule.getModuleCredit()); - double mcxGradeToMinus = caps[0] * currentModule.getModuleCredit(); - currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() - - mcxGradeToMinus); + editCapNonSuToSu(currentModule, caps[0]); - } else if (caps[0] != caps[1]) { + } else if (isFromNonSuToNonSu(caps)) { //Case where previously and new cap are not SU but not the same - double oldMCxGrade = caps[0] * currentModule.getModuleCredit(); - double newMCxGrade = caps[1] * currentModule.getModuleCredit(); - double mcxGradeToSet = newMCxGrade - oldMCxGrade; - currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() - + mcxGradeToSet); + editCapNonSuToNonSu(currentModule, caps); } } } + /** + * Returns true if edited module was from a special grade to special grade, + * else returns false. + * + * @param caps Academic points of original and edited module + * @return boolean + */ + private boolean isFromNonSuToNonSu(double[] caps) { + return caps[0] != caps[1]; + } + + /** + * Returns true if edited module was from a special grade to letter grade, + * else returns false. + * + * @param caps Academic points of original and edited module + * @return boolean + */ + private boolean isFromNonSuToSu(double[] caps) { + return caps[0] != -1.00 && caps[1] == -1.00; + } + + /** + * Returns true if edited module was from a special grade to letter grade, + * else returns false. + * + * @param caps Academic points of original and edited module + * @return boolean + */ + private boolean isFromSuToNonSu(double[] caps) { + return caps[0] == -1.00 && caps[1] != -1.00; + } + + /** + * Updates CAP when User edits module from a special grade to a special grade. + * + * @param currentModule module that was edited + * @param caps array of previous and new cap + */ + private void editCapNonSuToNonSu(PartialModule currentModule, double[] caps) { + double oldMCxGrade = caps[0] * currentModule.getModuleCredit(); + double newMCxGrade = caps[1] * currentModule.getModuleCredit(); + double mcxGradeToSet = newMCxGrade - oldMCxGrade; + currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() + + mcxGradeToSet); + } + + /** + * Updates CAP when User edits module from a special grade to a letter grade. + * + * @param currentModule module that was edited + * @param cap user's CAP + */ + private void editCapNonSuToSu(PartialModule currentModule, double cap) { + currentPerson.setCurrentMcAfterSU(currentPerson.getCurrentMcAfterSU() + - currentModule.getModuleCredit()); + double mcxGradeToMinus = cap * currentModule.getModuleCredit(); + currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() + - mcxGradeToMinus); + } + + /** + * Updates CAP when User edits module from a letter grade to a special grade. + * + * @param moduleCredit module credit of edited module + * @param cap user's CAP + */ + private void editCapSuToNonSu(Integer moduleCredit, double cap) { + currentPerson.setCurrentMcAfterSU(currentPerson.getCurrentMcAfterSU() + + moduleCredit); + double newMCxGrade = cap * moduleCredit; + currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() + + newMCxGrade); + } + + /** + * Updates CAP when User adds in a new module. + * + * @param currentModule module that is newly added + */ + private void updateCapFromAdd(PartialModule currentModule) { + //Incrementing total MC regardless of SU + int moduleCredit = currentModule.getModuleCredit(); + currentPerson.setCurrentMc(currentPerson.getCurrentMc() + moduleCredit); + + //Incrementing total MC after SU only if module is not SU + if (currentModule.getCap() != -1.00) { + editCapSuToNonSu(moduleCredit, currentModule.getCap()); + } + } + /** * Returns CAP score as a string. * diff --git a/src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java b/src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java index fcc216d595..0935b9af25 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java @@ -4,10 +4,12 @@ import seedu.duke.exceptions.InvalidCreditException; import seedu.duke.objects.Person; import seedu.duke.ui.Ui; - import static seedu.duke.apps.capcalculator.commons.CalculatorUtils.MAXIMUM_CAP; import static seedu.duke.apps.capcalculator.commons.CalculatorUtils.formatCapToString; +/** + * Class representing the common Set Target functions in CAP Calculator. + */ public class SetTargetUtils { private static final String INVALID_CAP_MESSAGE = "Your target CAP cannot be greater than the maximum CAP of 5!"; private static final String INVALID_MC_MESSAGE = "Your target MC cannot be 0!"; @@ -73,11 +75,32 @@ public void showResultsToUser(double targetCap,int targetGradedMC) { double neededCap = (targetCapxTargetMC - currentPerson.getCurrentTotalMcxGrade()) / (double) targetGradedMC; if (neededCap <= 5) { - System.out.println("You should achieve a minimum CAP of " + formatCapToString(neededCap) + " for your next " - + targetGradedMC + " MCs to achieve your target CAP of " + targetCap + "."); + printTargetResultPossible(targetCap, targetGradedMC, neededCap); } else { - System.out.println("OOPS!! Looks like you are not able to achieve your target CAP of " + targetCap - + " with you target MCs of " + targetGradedMC + "."); + printTargetResultImpossible(targetCap, targetGradedMC); } } + + /** + * Prints out message for user when the target result cannot be achieved. + * + * @param targetCap user's targeted CAP. + * @param targetGradedMC user's targeted MC. + */ + private void printTargetResultImpossible(double targetCap, int targetGradedMC) { + System.out.println("OOPS!! Looks like you are not able to achieve your target CAP of " + targetCap + + " with you target MCs of " + targetGradedMC + "."); + } + + /** + * Prints out message for user when the target result can be achieved. + * + * @param targetCap user's targeted CAP. + * @param targetGradedMC user's targeted MC. + * @param neededCap user's future CAP needed to reach targeted CAP + */ + private void printTargetResultPossible(double targetCap, int targetGradedMC, double neededCap) { + System.out.println("You should achieve a minimum CAP of " + formatCapToString(neededCap) + " for your next " + + targetGradedMC + " MCs to achieve your target CAP of " + targetCap + "."); + } } diff --git a/src/main/java/seedu/duke/exceptions/AcademicException.java b/src/main/java/seedu/duke/exceptions/AcademicException.java index f5e30ecc30..2255307d9b 100644 --- a/src/main/java/seedu/duke/exceptions/AcademicException.java +++ b/src/main/java/seedu/duke/exceptions/AcademicException.java @@ -1,5 +1,8 @@ package seedu.duke.exceptions; +/** + * Signals that an invalid command has been given in the Academic Planner App. + */ public class AcademicException extends Exception { private String errorMessage; diff --git a/src/main/java/seedu/duke/exceptions/AcademicPlannerParserException.java b/src/main/java/seedu/duke/exceptions/AcademicPlannerParserException.java index 8d270d8528..2117e0da72 100644 --- a/src/main/java/seedu/duke/exceptions/AcademicPlannerParserException.java +++ b/src/main/java/seedu/duke/exceptions/AcademicPlannerParserException.java @@ -1,5 +1,8 @@ package seedu.duke.exceptions; +/** + * Signals that an invalid command has been given in the Academic Planner Parser. + */ public class AcademicPlannerParserException extends Exception { String errorMessage; diff --git a/src/main/java/seedu/duke/exceptions/AppParserException.java b/src/main/java/seedu/duke/exceptions/AppParserException.java index 517f195726..bdc56f5cfc 100644 --- a/src/main/java/seedu/duke/exceptions/AppParserException.java +++ b/src/main/java/seedu/duke/exceptions/AppParserException.java @@ -1,5 +1,8 @@ package seedu.duke.exceptions; +/** + * Signals that an invalid command has been given in the App parser. + */ public class AppParserException extends Exception { String errorMessage; diff --git a/src/main/java/seedu/duke/exceptions/CapCalculatorException.java b/src/main/java/seedu/duke/exceptions/CapCalculatorException.java index d83fd4c158..b6e14f9611 100644 --- a/src/main/java/seedu/duke/exceptions/CapCalculatorException.java +++ b/src/main/java/seedu/duke/exceptions/CapCalculatorException.java @@ -1,7 +1,7 @@ package seedu.duke.exceptions; /** - * Represents a Capcalculator exception. + * Signals that an invalid command has been given in the CAP Calculator App. */ public class CapCalculatorException extends Exception { private String errorMessage; diff --git a/src/main/java/seedu/duke/exceptions/CommandParserException.java b/src/main/java/seedu/duke/exceptions/CommandParserException.java index 868a8a15c8..dcbd223b39 100644 --- a/src/main/java/seedu/duke/exceptions/CommandParserException.java +++ b/src/main/java/seedu/duke/exceptions/CommandParserException.java @@ -1,5 +1,8 @@ package seedu.duke.exceptions; +/** + * Signals that an invalid command has been given in the main command parser. + */ public class CommandParserException extends Exception { String errorMessage; diff --git a/src/main/java/seedu/duke/objects/PartialModule.java b/src/main/java/seedu/duke/objects/PartialModule.java index 6e6cded00b..29bd46c978 100644 --- a/src/main/java/seedu/duke/objects/PartialModule.java +++ b/src/main/java/seedu/duke/objects/PartialModule.java @@ -54,6 +54,12 @@ public void setGrade(String grade) { setCap(grade); } + /** + * Returns Academic points associated with letter grades. + * If grade is a special grading option, returns -1.00. + * + * @param grade user grade to check + */ public void setCap(String grade) { switch (grade.toUpperCase()) { case "A+": diff --git a/src/main/java/seedu/duke/objects/Person.java b/src/main/java/seedu/duke/objects/Person.java index 89f00beb8b..8ea4b4dac8 100644 --- a/src/main/java/seedu/duke/objects/Person.java +++ b/src/main/java/seedu/duke/objects/Person.java @@ -7,15 +7,11 @@ * Class representing the user for PlanNUS. */ public class Person { - //General Variables - private String personName; - //Variables needed for CAP Calculation + private String personName; private double currentTotalMcxGrade; private int currentMc; private int currentMcAfterSU; - - //Variables needed for Academic Planner private ArrayList modulesList; private HashMap modulesAddedMap; diff --git a/src/main/java/seedu/duke/parser/AppParser.java b/src/main/java/seedu/duke/parser/AppParser.java index dc919c17f6..fa48851dd3 100644 --- a/src/main/java/seedu/duke/parser/AppParser.java +++ b/src/main/java/seedu/duke/parser/AppParser.java @@ -17,6 +17,16 @@ public class AppParser { private static final String EXIT_COMMAND = "exit"; private static final String INVALID_COMMAND_MESSAGE = "OOPS!!! I'm sorry, but I don't know what that means :-("; + /** + * Processes user input command and returns app to be run. + * + * @param userInput user input + * @param allModules variable containing all modules offered by NUS + * @param currentPerson user of PlanNUS + * @param ui Ui + * @return app to be run + * @throws AppParserException thrown when an invalid command is give + */ public static App parse(String userInput, ModuleInitializer allModules, Person currentPerson, Ui ui) throws AppParserException { userInput = userInput.trim().toLowerCase(); From bfd1fe39f904761d6abc0e65a33b461d31599920 Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Sun, 11 Oct 2020 11:51:24 +0800 Subject: [PATCH 061/450] Update addModuleToUser test --- .../duke/apps/academicplanner/commons/AddUtilsTest.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/test/java/seedu/duke/apps/academicplanner/commons/AddUtilsTest.java b/src/test/java/seedu/duke/apps/academicplanner/commons/AddUtilsTest.java index 2c7bee447e..d72248cda2 100644 --- a/src/test/java/seedu/duke/apps/academicplanner/commons/AddUtilsTest.java +++ b/src/test/java/seedu/duke/apps/academicplanner/commons/AddUtilsTest.java @@ -7,18 +7,22 @@ import seedu.duke.objects.Person; import java.util.ArrayList; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.assertFalse; class AddUtilsTest { ModuleInitializer allModules; Person currentPerson; AddUtils addUtils; + ModuleValidator moduleValidator; @BeforeEach void setup() { allModules = new ModuleInitializer(); currentPerson = new Person("Bob"); addUtils = new AddUtils(allModules,currentPerson); + moduleValidator = new ModuleValidator(allModules,currentPerson); } @Test @@ -38,6 +42,8 @@ void addModuleToUser_emptyList_success() { assertEquals(m.getModuleCredit(),4); } } + assertTrue(moduleValidator.isModTakenByUser("CS1010")); + assertFalse(moduleValidator.isModTakenByUser("CS2113")); } @Test @@ -66,5 +72,8 @@ void addModuleToUser_nonEmptyList_success() { assertEquals(m.getModuleCredit(),4); } } + assertTrue(moduleValidator.isModTakenByUser("CS1010")); + assertTrue(moduleValidator.isModTakenByUser("CS1231")); + assertFalse(moduleValidator.isModTakenByUser("CS2113")); } } From 6218ad2219058e841fa1ba5d96c4da4261ca2361 Mon Sep 17 00:00:00 2001 From: Khenus Date: Sun, 11 Oct 2020 12:07:34 +0800 Subject: [PATCH 062/450] V0.7 Added test for Module initializer --- src/main/java/seedu/duke/apps/ModuleInitializer.java | 4 +++- src/test/java/seedu/duke/apps/ModuleInitializerTest.java | 7 +++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/seedu/duke/apps/ModuleInitializer.java b/src/main/java/seedu/duke/apps/ModuleInitializer.java index 1baba1eff4..f089038998 100644 --- a/src/main/java/seedu/duke/apps/ModuleInitializer.java +++ b/src/main/java/seedu/duke/apps/ModuleInitializer.java @@ -12,6 +12,8 @@ * Class representing function to load all modules offered by NUS. */ public class ModuleInitializer { + private final static int TOTAL_NUMBER_OF_MODULES = 12436; + private boolean isLoadingSuccessful; private Map moduleMap = new HashMap<>(); private FullModule[] moduleFullDetails; @@ -27,7 +29,7 @@ public ModuleInitializer() { moduleMap.put(moduleFullDetails[i].getModuleCode(), i); } - if (moduleFullDetails.length != 12436) { + if (moduleFullDetails.length != TOTAL_NUMBER_OF_MODULES) { isLoadingSuccessful = false; } else { isLoadingSuccessful = true; diff --git a/src/test/java/seedu/duke/apps/ModuleInitializerTest.java b/src/test/java/seedu/duke/apps/ModuleInitializerTest.java index 42014edc90..547e171e2c 100644 --- a/src/test/java/seedu/duke/apps/ModuleInitializerTest.java +++ b/src/test/java/seedu/duke/apps/ModuleInitializerTest.java @@ -9,6 +9,9 @@ import static org.junit.jupiter.api.Assertions.*; class ModuleInitializerTest { + private final static int TOTAL_NUMBER_OF_MODULES = 12436; + private final static int INDEX_OF_CS1010 = 1786; + private ModuleInitializer allModules; @BeforeEach @@ -20,7 +23,7 @@ public void setup() { void getModuleMap_loadAllModuleData_success() { Map moduleMap = allModules.getModuleMap(); - assertEquals(moduleMap.get("CS1010"), 1786); + assertEquals(moduleMap.get("CS1010"), INDEX_OF_CS1010); } @Test @@ -29,7 +32,7 @@ void getModuleFullDetails_loadAllModuleData_success() { assertEquals(allModules.getIsLoadingSuccessful(), true); - assertEquals(modules.length, 12436); + assertEquals(modules.length, TOTAL_NUMBER_OF_MODULES); assertEquals(modules[1786].toString(), "{\"additionalProperties\":{}," + "\"attributes\":[true,false,false,false,false,false,false,false,false]," + "\"corequisite\":\"\",\"department\":\"Computer Science\",\"faculty\":\"Computing\"," + From c3078fac4edb641f976de34305c739f6cb45a6ac Mon Sep 17 00:00:00 2001 From: Khenus Date: Sun, 11 Oct 2020 12:15:47 +0800 Subject: [PATCH 063/450] V0.7 Updated style for Module Initializer test --- .../seedu/duke/apps/ModuleInitializer.java | 2 +- .../seedu/duke/apps/ModuleInitializerTest.java | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/main/java/seedu/duke/apps/ModuleInitializer.java b/src/main/java/seedu/duke/apps/ModuleInitializer.java index f089038998..efdbd52b5b 100644 --- a/src/main/java/seedu/duke/apps/ModuleInitializer.java +++ b/src/main/java/seedu/duke/apps/ModuleInitializer.java @@ -12,7 +12,7 @@ * Class representing function to load all modules offered by NUS. */ public class ModuleInitializer { - private final static int TOTAL_NUMBER_OF_MODULES = 12436; + private static final int TOTAL_NUMBER_OF_MODULES = 12436; private boolean isLoadingSuccessful; private Map moduleMap = new HashMap<>(); diff --git a/src/test/java/seedu/duke/apps/ModuleInitializerTest.java b/src/test/java/seedu/duke/apps/ModuleInitializerTest.java index 547e171e2c..ae52055459 100644 --- a/src/test/java/seedu/duke/apps/ModuleInitializerTest.java +++ b/src/test/java/seedu/duke/apps/ModuleInitializerTest.java @@ -6,11 +6,11 @@ import java.util.Map; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; class ModuleInitializerTest { - private final static int TOTAL_NUMBER_OF_MODULES = 12436; - private final static int INDEX_OF_CS1010 = 1786; + private static final int TOTAL_NUMBER_OF_MODULES = 12436; + private static final int INDEX_OF_CS1010 = 1786; private ModuleInitializer allModules; @@ -33,12 +33,12 @@ void getModuleFullDetails_loadAllModuleData_success() { assertEquals(allModules.getIsLoadingSuccessful(), true); assertEquals(modules.length, TOTAL_NUMBER_OF_MODULES); - assertEquals(modules[1786].toString(), "{\"additionalProperties\":{}," + - "\"attributes\":[true,false,false,false,false,false,false,false,false]," + - "\"corequisite\":\"\",\"department\":\"Computer Science\",\"faculty\":\"Computing\"," + - "\"moduleCode\":\"CS1010\",\"moduleCredit\":4," + - "\"preclusion\":\"CS1010E, CS1010J, CS1010S, CS1010X, CS1010XCP, CS1101S\"," + - "\"prerequisite\":\"\",\"semester\":[1,2],\"title\":\"Programming Methodology\"}"); + assertEquals(modules[1786].toString(), "{\"additionalProperties\":{}," + + "\"attributes\":[true,false,false,false,false,false,false,false,false]," + + "\"corequisite\":\"\",\"department\":\"Computer Science\",\"faculty\":\"Computing\"," + + "\"moduleCode\":\"CS1010\",\"moduleCredit\":4," + + "\"preclusion\":\"CS1010E, CS1010J, CS1010S, CS1010X, CS1010XCP, CS1101S\"," + + "\"prerequisite\":\"\",\"semester\":[1,2],\"title\":\"Programming Methodology\"}"); } @Test From e0c47fbacc038aa4b99e8d551ef641ea10cdcf51 Mon Sep 17 00:00:00 2001 From: Khenus Date: Sun, 11 Oct 2020 12:20:20 +0800 Subject: [PATCH 064/450] V0.7 Updated style for Module Initializer test --- src/main/java/seedu/duke/Duke.java | 2 -- text-ui-test/runtest.bat | 2 -- 2 files changed, 4 deletions(-) diff --git a/src/main/java/seedu/duke/Duke.java b/src/main/java/seedu/duke/Duke.java index 099f65f8a2..84255c2e94 100644 --- a/src/main/java/seedu/duke/Duke.java +++ b/src/main/java/seedu/duke/Duke.java @@ -22,8 +22,6 @@ public Duke() { ui = new Ui(); allModules = new ModuleInitializer(); currentPerson = new Person("Bob"); - - System.out.println(allModules.getModuleFullDetails()[1786].toString()); } /** diff --git a/text-ui-test/runtest.bat b/text-ui-test/runtest.bat index d2fbc860d8..25ac7a2989 100644 --- a/text-ui-test/runtest.bat +++ b/text-ui-test/runtest.bat @@ -16,6 +16,4 @@ java -jar %jarloc% < ..\..\text-ui-test\input.txt > ..\..\text-ui-test\ACTUAL.TX cd ..\..\text-ui-test -findstr /vixg:ACTUAL.TXT EXPECTED.TXT > DIFF.TXT - FC ACTUAL.TXT EXPECTED.TXT >NUL && ECHO Test passed! || Echo Test failed! From 0e029ad1b29256f31e93f37c13b2e8ab8bc6ad83 Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Sun, 11 Oct 2020 12:38:00 +0800 Subject: [PATCH 065/450] Add assertions for Add module functions in academic planner --- .../duke/apps/academicplanner/commands/AddModuleCommand.java | 2 ++ .../seedu/duke/apps/academicplanner/commons/AddUtils.java | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java index a3970a67e9..8e9d246756 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java @@ -72,6 +72,8 @@ public void execute() throws AcademicException { throw new AcademicException(ERROR_INVALID_GRADE); } int moduleCredit = addUtils.getModuleCreditForModule(moduleCode); + assert semesterValue > 0; + assert moduleCredit >= 0; addUtils.addModuleToUser(moduleCode, semesterValue, gradeValue, moduleCredit); } diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java index 5e2ebde162..83d50cd16c 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java @@ -51,6 +51,8 @@ public void addModuleToUser(String moduleCode, int semesterValue, String gradeVa */ public int getModuleCreditForModule(String moduleCode) { int mapIndex = allModules.getModuleMap().get(moduleCode); - return allModules.getModuleFullDetails()[mapIndex].getModuleCredit(); + int moduleCredit = allModules.getModuleFullDetails()[mapIndex].getModuleCredit(); + assert moduleCredit >= 0; + return moduleCredit; } } From 9f951649dc8d79f1a22c257b3e94a45b838ccfd7 Mon Sep 17 00:00:00 2001 From: Khenus Date: Sun, 11 Oct 2020 12:43:52 +0800 Subject: [PATCH 066/450] V0.7.1 Added JavaDocs for ModuleInitializer --- .../seedu/duke/apps/ModuleInitializer.java | 29 ++++++++++++++++--- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/src/main/java/seedu/duke/apps/ModuleInitializer.java b/src/main/java/seedu/duke/apps/ModuleInitializer.java index efdbd52b5b..8051d68256 100644 --- a/src/main/java/seedu/duke/apps/ModuleInitializer.java +++ b/src/main/java/seedu/duke/apps/ModuleInitializer.java @@ -14,10 +14,13 @@ public class ModuleInitializer { private static final int TOTAL_NUMBER_OF_MODULES = 12436; - private boolean isLoadingSuccessful; + private boolean isLoadingSuccessful = false; private Map moduleMap = new HashMap<>(); private FullModule[] moduleFullDetails; + /** + * Default constructor for to load all modules from JSON file. + */ public ModuleInitializer() { Gson gson = new Gson(); @@ -29,25 +32,43 @@ public ModuleInitializer() { moduleMap.put(moduleFullDetails[i].getModuleCode(), i); } - if (moduleFullDetails.length != TOTAL_NUMBER_OF_MODULES) { - isLoadingSuccessful = false; - } else { + if (moduleFullDetails.length == TOTAL_NUMBER_OF_MODULES) { isLoadingSuccessful = true; } } + /** + * Constructor for checking condition where loading all module from JSON file fails. + * + * @param isProperCreation boolean indicating non-proper creation of module initializer (Default: false) + */ public ModuleInitializer(boolean isProperCreation) { this.isLoadingSuccessful = isProperCreation; } + /** + * Getter for whether loading modules from JSON is successful. + * + * @return boolean + */ public boolean getIsLoadingSuccessful() { return this.isLoadingSuccessful; } + /** + * Getter for module map. + * + * @return Map + */ public Map getModuleMap() { return this.moduleMap; } + /** + * Getter for full module details. + * + * @return An Array of FullModule + */ public FullModule[] getModuleFullDetails() { return this.moduleFullDetails; } From 63a7cf93194a3c9dce7952de9db2d4ac9e5e39bf Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Sun, 11 Oct 2020 12:58:04 +0800 Subject: [PATCH 067/450] Add logging for add module function in academic calendar --- .../academicplanner/commands/AddModuleCommand.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java index 8e9d246756..35b85a1306 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java @@ -7,6 +7,8 @@ import seedu.duke.globalcommons.Command; import seedu.duke.objects.Person; import java.util.Scanner; +import java.util.logging.Level; +import java.util.logging.Logger; /** * Class representing an add module command from the academic planner. @@ -23,6 +25,7 @@ public class AddModuleCommand extends Command { + "\tIf you have yet to have a grade for the module: NT"; private static final String VALID_SEMESTERS = "Valid semesters are integers from 1 to 10, inclusive"; + private static final Logger logger = Logger.getLogger("AddModuleCommand.java"); private AddUtils addUtils; private ModuleValidator moduleValidator; private Scanner in; @@ -43,11 +46,15 @@ public AddModuleCommand(ModuleInitializer allModules, Person currentPerson, Scan */ @Override public void execute() throws AcademicException { + logger.setLevel(Level.WARNING); + logger.log(Level.INFO,"Executing add command."); if (!moduleValidator.isModOfferedByNus(moduleCode)) { + logger.log(Level.WARNING,"Module entered not offered by NUS."); throw new AcademicException(moduleCode + ERROR_NOT_OFFERED); } if (moduleValidator.isModTakenByUser(moduleCode)) { + logger.log(Level.WARNING,"Module entered is duplicated."); throw new AcademicException(ERROR_DUPLICATE_MOD); } @@ -58,10 +65,12 @@ public void execute() throws AcademicException { try { semesterValue = Integer.parseInt(userInput); } catch (Exception e) { + logger.log(Level.WARNING,"Semester entered is not an integer."); throw new AcademicException(ERROR_INVALID_COMMAND); } if (!moduleValidator.isValidSemester(semesterValue)) { + logger.log(Level.WARNING,"Semester entered is invalid."); throw new AcademicException(ERROR_INVALID_SEMESTER_INDEX); } @@ -69,12 +78,14 @@ public void execute() throws AcademicException { String gradeValue = in.nextLine(); if (!moduleValidator.isValidGrade(gradeValue)) { + logger.log(Level.WARNING,"Grade entered is invalid."); throw new AcademicException(ERROR_INVALID_GRADE); } int moduleCredit = addUtils.getModuleCreditForModule(moduleCode); assert semesterValue > 0; assert moduleCredit >= 0; addUtils.addModuleToUser(moduleCode, semesterValue, gradeValue, moduleCredit); + logger.log(Level.INFO,"Finish executing add command."); } /** From 131b7aa11a2035eb62c72b6fbc8d18218dd68900 Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Sun, 11 Oct 2020 17:31:30 +0800 Subject: [PATCH 068/450] Update AboutUs.md --- docs/AboutUs.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/AboutUs.md b/docs/AboutUs.md index 29a89b153e..1b8577f47e 100644 --- a/docs/AboutUs.md +++ b/docs/AboutUs.md @@ -1,9 +1,9 @@ # About us -Display | Name | Github Profile ----|:---:|:---: -![](https://avatars3.githubusercontent.com/u/60382285?s=400) | Jerrold Lam | [jerroldlam](https://github.com/jerroldlam "Github User Profile") -![](https://avatars3.githubusercontent.com/u/56764814?s=100) | Khenus Tan | [Khenus](https://github.com/Khenus "Github User Profile") -![](https://avatars3.githubusercontent.com/u/60414537?s=100) | Harry Lee | [harryleecp](https://github.com/harryleecp "Github User Profile") -![](https://avatars3.githubusercontent.com/u/57383789?s=100) | Ju Zihao | [JuZihao](https://github.com/JuZihao "Github User Profile") -![](https://avatars3.githubusercontent.com/u/49282734?s=400) | Vanessa Kang | [Vanessa-Kang](https://github.com/vanessa-kang "Github User Profile") +Display | Name | Github Profile | Portfolio +---|:---:|:---:|:---: +![](https://avatars3.githubusercontent.com/u/60382285?s=400) | Jerrold Lam | [jerroldlam](https://github.com/jerroldlam "Github User Profile") | [Portfolio](team/Lam.md) +![](https://avatars3.githubusercontent.com/u/56764814?s=100) | Khenus Tan | [Khenus](https://github.com/Khenus "Github User Profile") | [Portfolio](team/Khenus.md) +![](https://avatars3.githubusercontent.com/u/60414537?s=100) | Harry Lee | [harryleecp](https://github.com/harryleecp "Github User Profile") | [Portfolio](team/Harry.md) +![](https://avatars3.githubusercontent.com/u/57383789?s=100) | Ju Zihao | [JuZihao](https://github.com/JuZihao "Github User Profile") | [Portfolio](team/Zihao.md) +![](https://avatars3.githubusercontent.com/u/49282734?s=400) | Vanessa Kang | [Vanessa-Kang](https://github.com/vanessa-kang "Github User Profile") | [Portfolio](team/Vanessa.md) From abd4a2c3ba1e6339ff2eaeee9a3fe80bc0bb97f8 Mon Sep 17 00:00:00 2001 From: harryleecp Date: Sun, 11 Oct 2020 22:52:13 +0800 Subject: [PATCH 069/450] Added a basic structure for DG, more information to be added --- docs/DeveloperGuide.md | 134 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 119 insertions(+), 15 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index fd987546e8..7b05b7dda3 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -16,45 +16,149 @@ The following are remaining steps to be taken to finish the set up: -## Design & implementation +## Design -{Describe the design and implementation of the product. Use UML diagrams and short code snippets where applicable.} +### Architecture +{Exact diagram and corresponding descriptions to be added} +### UI component -## Product scope +{Exact diagram and corresponding descriptions to be added} -### Target user profile +### Logic component -{Describe the target user profile} +{Exact diagram and corresponding descriptions to be added} -### Value proposition +### Model component -{Describe the value proposition: what problem does it solve?} +{Exact diagram and corresponding descriptions to be added} +### Storage component +{Exact diagram and corresponding descriptions to be added} -## User Stories +### Common classes + +{Exact diagram and corresponding descriptions to be added} + + + +## Implementation + +### Academic Calendar Planner features (i.e. add, remove, edit and view) + +#### Proposed implementation + +{Exact diagram and corresponding descriptions to be added} + +#### Design consideration + +{Exact diagram and corresponding descriptions to be added} + +### CAP Calculator features (i.e. current and set target) + +#### Proposed implementation + +{Exact diagram and corresponding descriptions to be added} + +#### Design consideration + +{Exact diagram and corresponding descriptions to be added} + + + +## Documentation, logging, testing, configuration, dev-ops + +__Documentation guide__ + +__Testing guide__ + +__Logging guide__ + +__Configuration guide__ + +__DevOps guide__ + + + +## Appendix: Requirements + +### Product scope + +__Target user profile:__ + +* has adequate level of familiarization with CLI applications +* requires a clear outlook of academic journey with the modules offered by NUS +* wants to keep track of his or her results and set target grades for the upcoming semester(s) +* prefers using desktop or laptop instead of other electronic devices + +__Value proposition:__ +Provides NUS undergraduates with a platform to keep track of their academic progress and explore other possibilities with the plethora of modules available. + + + +### User stories | Version | As a ... | I want to ... | So that I can ... | | ------- | --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | | v1.0 | fresh undergraduate | visualize the modules in the recommended schedule and course requirements | better plan out my academic journey for the next 4-5 years in NUS | | v1.0 | undergraduate with at least 1 semester of study completed | calculate my CAP easily | forecast my own expected graduation CAP and if they match my expected CAP | -| v1.0 | undergraduate with at least 1 semester of study completed | print out a personalised list of modules taken so far and grades obtained | track my academic progression in NUS | +| v1.0 | undergraduate with at least 1 semester of study completed | print out a personalized list of modules taken so far and grades obtained | track my academic progression in NUS | | v2.0 | user | find a to-do item by name | locate a to-do without having to go through the entire list | -## Non-Functional Requirements -{Give non-functional requirements} +### Use cases + +__Use case 1: Add a module__ + +__MSS__ + +1. User enters `acadplan` in the main menu of PlanNUS + +2. User enters the necessary command and module code + +3. PlanNUS prompts user to enter the remaining information + +4. PlanNUS adds the module + + Use case ends. + +__Extensions__ + +* 2a. The command entered is invalid. + + * 2a1. PlanNUS shows an error message. + + Use case ends. + +* 2b. Module code entered is invalid. + + * 2b1. PlanNUS shows an error message. + + Use case ends. + +* 3a. Invalid semester or grade is entered. + + * 3a1. PlanNUS shows an error message. + + Use case ends resumes at step 3. + + + +{More to be added} + +### Non-Functional Requirements +{More to be added} -## Glossary +### Glossary -- *glossary item* - Definition +{More to be added} -## Instructions for manual testing +## Appendix: Instructions for manual testing -{Give instructions on how to do a manual product testing e.g., how to load sample data to be used for testing} \ No newline at end of file +{More to be added} \ No newline at end of file From 8215393d9f729d2707b3a69e03752c6637a0b340 Mon Sep 17 00:00:00 2001 From: Khenus Date: Mon, 12 Oct 2020 01:12:42 +0800 Subject: [PATCH 070/450] V0.8 Added exception for missing or corrupted data file --- build.gradle | 6 +- src/main/java/META-INF/MANIFEST.MF | 2 +- .../seedu/duke/{Duke.java => PlanNus.java} | 55 +++++++++----- .../seedu/duke/apps/ModuleInitializer.java | 75 ------------------ .../academicplanner/AcademicPlannerApp.java | 6 +- .../AcademicPlannerParser.java | 4 +- .../commands/AddModuleCommand.java | 6 +- .../commands/EditModuleCommand.java | 6 +- .../commands/RemoveModuleCommand.java | 6 +- .../academicplanner/commons/AddUtils.java | 6 +- .../academicplanner/commons/EditUtils.java | 6 +- .../commons/ModuleValidator.java | 6 +- .../exceptions/AcademicException.java | 2 +- ...pCalculator.java => CapCalculatorApp.java} | 4 +- .../commons/CalculatorUtils.java | 28 +++++-- .../exceptions/CapCalculatorException.java | 4 +- .../duke/apps/moduleloader/ModuleLoader.java | 76 +++++++++++++++++++ .../exceptions/ModuleLoaderException.java | 18 +++++ .../AcademicPlannerParserException.java | 18 ----- .../duke/exceptions/InvalidCapException.java | 2 + .../exceptions/InvalidCreditException.java | 2 + .../java/seedu/duke/parser/AppParser.java | 8 +- .../seedu/duke/{Duke.java => PlanNus.java} | 2 +- ...ializerTest.java => ModuleLoaderTest.java} | 22 ++++-- .../academicplanner/commons/AddUtilsTest.java | 17 +++-- ...t.java => CapCalculatorAppParserTest.java} | 2 +- 26 files changed, 216 insertions(+), 173 deletions(-) rename src/main/java/seedu/duke/{Duke.java => PlanNus.java} (56%) delete mode 100644 src/main/java/seedu/duke/apps/ModuleInitializer.java rename src/main/java/seedu/duke/{ => apps/academicplanner}/exceptions/AcademicException.java (92%) rename src/main/java/seedu/duke/apps/capcalculator/{CapCalculator.java => CapCalculatorApp.java} (95%) rename src/main/java/seedu/duke/{ => apps/capcalculator}/exceptions/CapCalculatorException.java (84%) create mode 100644 src/main/java/seedu/duke/apps/moduleloader/ModuleLoader.java create mode 100644 src/main/java/seedu/duke/apps/moduleloader/exceptions/ModuleLoaderException.java delete mode 100644 src/main/java/seedu/duke/exceptions/AcademicPlannerParserException.java rename src/test/java/seedu/duke/{Duke.java => PlanNus.java} (92%) rename src/test/java/seedu/duke/apps/{ModuleInitializerTest.java => ModuleLoaderTest.java} (66%) rename src/test/java/seedu/duke/apps/capcalculator/{CapCalculatorParserTest.java => CapCalculatorAppParserTest.java} (98%) diff --git a/build.gradle b/build.gradle index c0ee787f31..ec0fed9bc2 100644 --- a/build.gradle +++ b/build.gradle @@ -31,11 +31,11 @@ test { } application { - mainClassName = "seedu.duke.Duke" + mainClassName = "seedu.duke.PlanNus" } shadowJar { - archiveBaseName = "duke" + archiveBaseName = "PlanNus" archiveClassifier = null } @@ -50,7 +50,7 @@ run { jar { manifest { attributes( - 'Main-Class': 'seedu.duke.Duke' + 'Main-Class': 'seedu.duke.PlanNus' ) } } diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF index 19e86fe56e..593f8abf3a 100644 --- a/src/main/java/META-INF/MANIFEST.MF +++ b/src/main/java/META-INF/MANIFEST.MF @@ -1,3 +1,3 @@ Manifest-Version: 1.0 -Main-Class: seedu.duke.Duke +Main-Class: seedu.duke.PlanNus diff --git a/src/main/java/seedu/duke/Duke.java b/src/main/java/seedu/duke/PlanNus.java similarity index 56% rename from src/main/java/seedu/duke/Duke.java rename to src/main/java/seedu/duke/PlanNus.java index 01e72f2ebf..aeb63c2df9 100644 --- a/src/main/java/seedu/duke/Duke.java +++ b/src/main/java/seedu/duke/PlanNus.java @@ -1,6 +1,6 @@ package seedu.duke; -import seedu.duke.apps.ModuleInitializer; +import seedu.duke.apps.moduleloader.ModuleLoader; import seedu.duke.globalcommons.App; import seedu.duke.objects.Person; import seedu.duke.parser.AppParser; @@ -9,44 +9,57 @@ /** * Class representing main function of PlanNUS. */ -public class Duke { +public class PlanNus { private static final String WELCOME_MESSAGE = "Welcome to PlanNUS!"; private static final String WELCOME_BACK_MESSAGE = "Welcome back to PlanNUS Main Menu!"; private static final String EXIT_MESSAGE = "Thanks for using PlanNUS! We hope to see you again!"; private static final String HELP_MESSAGE = "\tFor academic planner, type \n" + "\tFor CAP calculator, type \n" + "\tTo exit PlanNUS, type "; + private Ui ui; - private ModuleInitializer allModules; + private ModuleLoader allModules; private Person currentPerson; + private boolean isStartupSuccessfully; - public Duke() { - ui = new Ui(); - allModules = new ModuleInitializer(); - currentPerson = new Person("Bob"); + /** + * Default constructor for PlanNus. + */ + public PlanNus() { + try { + this.ui = new Ui(); + this.allModules = new ModuleLoader(); + this.currentPerson = new Person("Bob"); + this.isStartupSuccessfully = true; + } catch (Exception e) { + this.isStartupSuccessfully = false; + System.out.println(e.getMessage()); + } } /** * Main entry function for PlanNUS. */ public void run() { - showWelcomeMessage(); - boolean isExit = false; + if (isStartupSuccessfully) { + showWelcomeMessage(); + boolean isExit = false; - while (!isExit) { - try { - String userInput = ui.getScanner().nextLine(); - App selectedApp = AppParser.parse(userInput, allModules, currentPerson, ui); - selectedApp.run(); - isExit = selectedApp.getIsExit(); - if (!isExit) { - showWelcomeBackMessage(); + while (!isExit) { + try { + String userInput = ui.getScanner().nextLine(); + App selectedApp = AppParser.parse(userInput, allModules, currentPerson, ui); + selectedApp.run(); + isExit = selectedApp.getIsExit(); + if (!isExit) { + showWelcomeBackMessage(); + } + } catch (Exception e) { + System.out.println(e.getMessage()); } - } catch (Exception e) { - System.out.println(e.getMessage()); } + showExitMessage(); } - showExitMessage(); } /** @@ -77,6 +90,6 @@ private void showWelcomeMessage() { * @param args arguments from command line */ public static void main(String[] args) { - new Duke().run(); + new PlanNus().run(); } } diff --git a/src/main/java/seedu/duke/apps/ModuleInitializer.java b/src/main/java/seedu/duke/apps/ModuleInitializer.java deleted file mode 100644 index 8051d68256..0000000000 --- a/src/main/java/seedu/duke/apps/ModuleInitializer.java +++ /dev/null @@ -1,75 +0,0 @@ -package seedu.duke.apps; - -import com.google.gson.Gson; -import seedu.duke.objects.FullModule; -import java.io.InputStream; -import java.io.Reader; -import java.io.InputStreamReader; -import java.util.HashMap; -import java.util.Map; - -/** - * Class representing function to load all modules offered by NUS. - */ -public class ModuleInitializer { - private static final int TOTAL_NUMBER_OF_MODULES = 12436; - - private boolean isLoadingSuccessful = false; - private Map moduleMap = new HashMap<>(); - private FullModule[] moduleFullDetails; - - /** - * Default constructor for to load all modules from JSON file. - */ - public ModuleInitializer() { - Gson gson = new Gson(); - - InputStream in = ModuleInitializer.class.getResourceAsStream("/ModuleData.json"); - Reader jsonReader = new InputStreamReader(in); - moduleFullDetails = gson.fromJson(jsonReader, FullModule[].class); - - for (int i = 0; i < moduleFullDetails.length; i++) { - moduleMap.put(moduleFullDetails[i].getModuleCode(), i); - } - - if (moduleFullDetails.length == TOTAL_NUMBER_OF_MODULES) { - isLoadingSuccessful = true; - } - } - - /** - * Constructor for checking condition where loading all module from JSON file fails. - * - * @param isProperCreation boolean indicating non-proper creation of module initializer (Default: false) - */ - public ModuleInitializer(boolean isProperCreation) { - this.isLoadingSuccessful = isProperCreation; - } - - /** - * Getter for whether loading modules from JSON is successful. - * - * @return boolean - */ - public boolean getIsLoadingSuccessful() { - return this.isLoadingSuccessful; - } - - /** - * Getter for module map. - * - * @return Map - */ - public Map getModuleMap() { - return this.moduleMap; - } - - /** - * Getter for full module details. - * - * @return An Array of FullModule - */ - public FullModule[] getModuleFullDetails() { - return this.moduleFullDetails; - } -} diff --git a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java index 1e88108706..c9b7e791dd 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java +++ b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java @@ -1,6 +1,6 @@ package seedu.duke.apps.academicplanner; -import seedu.duke.apps.ModuleInitializer; +import seedu.duke.apps.moduleloader.ModuleLoader; import seedu.duke.globalcommons.App; import seedu.duke.globalcommons.Command; import seedu.duke.objects.Person; @@ -20,11 +20,11 @@ public class AcademicPlannerApp extends App { + "\texit\n" + "Type a command to continue..."; - private final ModuleInitializer allModules; + private final ModuleLoader allModules; private final Person currentPerson; private Ui ui; - public AcademicPlannerApp(ModuleInitializer allModules, Person currentPerson, Ui ui) { + public AcademicPlannerApp(ModuleLoader allModules, Person currentPerson, Ui ui) { this.allModules = allModules; this.currentPerson = currentPerson; this.ui = ui; diff --git a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java index 02822400b5..3b0201b441 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java +++ b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java @@ -1,6 +1,6 @@ package seedu.duke.apps.academicplanner; -import seedu.duke.apps.ModuleInitializer; +import seedu.duke.apps.moduleloader.ModuleLoader; import seedu.duke.apps.academicplanner.commands.AddModuleCommand; import seedu.duke.apps.academicplanner.commands.EditModuleCommand; import seedu.duke.apps.academicplanner.commands.PrintCalenderCommand; @@ -43,7 +43,7 @@ public class AcademicPlannerParser { * @return Command to be executed * @throws CommandParserException to return with error message */ - public static Command parse(String userInput, ModuleInitializer allModules, Person currentPerson, Ui ui) + public static Command parse(String userInput, ModuleLoader allModules, Person currentPerson, Ui ui) throws CommandParserException { String[] inputs = userInput.toUpperCase().split(" "); Scanner in = ui.getScanner(); diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java index a3970a67e9..8147b7ff32 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java @@ -1,9 +1,9 @@ package seedu.duke.apps.academicplanner.commands; -import seedu.duke.apps.ModuleInitializer; +import seedu.duke.apps.moduleloader.ModuleLoader; import seedu.duke.apps.academicplanner.commons.AddUtils; import seedu.duke.apps.academicplanner.commons.ModuleValidator; -import seedu.duke.exceptions.AcademicException; +import seedu.duke.apps.academicplanner.exceptions.AcademicException; import seedu.duke.globalcommons.Command; import seedu.duke.objects.Person; import java.util.Scanner; @@ -28,7 +28,7 @@ public class AddModuleCommand extends Command { private Scanner in; private String moduleCode; - public AddModuleCommand(ModuleInitializer allModules, Person currentPerson, Scanner in, String moduleCode) { + public AddModuleCommand(ModuleLoader allModules, Person currentPerson, Scanner in, String moduleCode) { this.addUtils = new AddUtils(allModules, currentPerson); this.moduleValidator = new ModuleValidator(allModules, currentPerson); this.in = in; diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/EditModuleCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/EditModuleCommand.java index 108b0246f2..5e6899aa7b 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/EditModuleCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/EditModuleCommand.java @@ -1,9 +1,9 @@ package seedu.duke.apps.academicplanner.commands; -import seedu.duke.apps.ModuleInitializer; +import seedu.duke.apps.moduleloader.ModuleLoader; import seedu.duke.apps.academicplanner.commons.EditUtils; import seedu.duke.apps.academicplanner.commons.ModuleValidator; -import seedu.duke.exceptions.AcademicException; +import seedu.duke.apps.academicplanner.exceptions.AcademicException; import seedu.duke.globalcommons.Command; import seedu.duke.objects.Person; import java.util.Scanner; @@ -26,7 +26,7 @@ public class EditModuleCommand extends Command { private Scanner in; private String moduleCode; - public EditModuleCommand(ModuleInitializer allModules, Person currentPerson, Scanner in, String moduleCode) { + public EditModuleCommand(ModuleLoader allModules, Person currentPerson, Scanner in, String moduleCode) { this.editUtils = new EditUtils(allModules, currentPerson); this.moduleValidator = new ModuleValidator(allModules, currentPerson); this.in = in; diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java index 7cf3bb42c3..2ce4e87a98 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java @@ -1,9 +1,9 @@ package seedu.duke.apps.academicplanner.commands; -import seedu.duke.apps.ModuleInitializer; +import seedu.duke.apps.moduleloader.ModuleLoader; import seedu.duke.apps.academicplanner.commons.ModuleValidator; import seedu.duke.apps.academicplanner.commons.RemoveUtils; -import seedu.duke.exceptions.AcademicException; +import seedu.duke.apps.academicplanner.exceptions.AcademicException; import seedu.duke.globalcommons.Command; import seedu.duke.objects.PartialModule; import seedu.duke.objects.Person; @@ -23,7 +23,7 @@ public class RemoveModuleCommand extends Command { private HashMap modulesAddedMap; private String moduleCode; - public RemoveModuleCommand(ModuleInitializer allModules, Person currentPerson, Scanner in, String moduleCode) { + public RemoveModuleCommand(ModuleLoader allModules, Person currentPerson, Scanner in, String moduleCode) { this.removeUtils = new RemoveUtils(currentPerson); this.moduleValidator = new ModuleValidator(allModules, currentPerson); this.modulesAddedMap = currentPerson.getModulesAddedMap(); diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java index 5e2ebde162..803e238aa6 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java @@ -1,6 +1,6 @@ package seedu.duke.apps.academicplanner.commons; -import seedu.duke.apps.ModuleInitializer; +import seedu.duke.apps.moduleloader.ModuleLoader; import seedu.duke.apps.capcalculator.commons.CalculatorUtils; import seedu.duke.objects.PartialModule; import seedu.duke.objects.Person; @@ -13,12 +13,12 @@ public class AddUtils { private static final int FROM_ADD = 1; - private final ModuleInitializer allModules; + private final ModuleLoader allModules; private final ArrayList modulesList; private final HashMap modulesAddedMap; private final CalculatorUtils calculatorUtils; - public AddUtils(ModuleInitializer allModules, Person currentPerson) { + public AddUtils(ModuleLoader allModules, Person currentPerson) { this.allModules = allModules; this.modulesList = currentPerson.getModulesList(); this.modulesAddedMap = currentPerson.getModulesAddedMap(); diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java index 6f4dcb4924..d9975e37f5 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java @@ -1,8 +1,8 @@ package seedu.duke.apps.academicplanner.commons; -import seedu.duke.apps.ModuleInitializer; +import seedu.duke.apps.moduleloader.ModuleLoader; import seedu.duke.apps.capcalculator.commons.CalculatorUtils; -import seedu.duke.exceptions.AcademicException; +import seedu.duke.apps.academicplanner.exceptions.AcademicException; import seedu.duke.objects.PartialModule; import seedu.duke.objects.Person; import java.util.ArrayList; @@ -19,7 +19,7 @@ public class EditUtils { private final ModuleValidator modChecker; private final CalculatorUtils calculatorUtils; - public EditUtils(ModuleInitializer allModules, Person currentPerson) { + public EditUtils(ModuleLoader allModules, Person currentPerson) { this.modulesList = currentPerson.getModulesList(); this.modulesAddedMap = currentPerson.getModulesAddedMap(); this.modChecker = new ModuleValidator(allModules, currentPerson); diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java b/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java index 6ab99691b5..b919829b7f 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java @@ -1,6 +1,6 @@ package seedu.duke.apps.academicplanner.commons; -import seedu.duke.apps.ModuleInitializer; +import seedu.duke.apps.moduleloader.ModuleLoader; import seedu.duke.objects.PartialModule; import seedu.duke.objects.Person; import java.util.ArrayList; @@ -10,11 +10,11 @@ public class ModuleValidator { private static final int STARTING_SEMESTER_INDEX = 1; private static final int FINAL_SEMESTER_INDEX = 10; - private final ModuleInitializer allModules; + private final ModuleLoader allModules; private final ArrayList modulesList; private final HashMap modulesAddedMap; - public ModuleValidator(ModuleInitializer allModules, Person currentPerson) { + public ModuleValidator(ModuleLoader allModules, Person currentPerson) { this.allModules = allModules; this.modulesList = currentPerson.getModulesList(); this.modulesAddedMap = currentPerson.getModulesAddedMap(); diff --git a/src/main/java/seedu/duke/exceptions/AcademicException.java b/src/main/java/seedu/duke/apps/academicplanner/exceptions/AcademicException.java similarity index 92% rename from src/main/java/seedu/duke/exceptions/AcademicException.java rename to src/main/java/seedu/duke/apps/academicplanner/exceptions/AcademicException.java index 2255307d9b..c01be6a731 100644 --- a/src/main/java/seedu/duke/exceptions/AcademicException.java +++ b/src/main/java/seedu/duke/apps/academicplanner/exceptions/AcademicException.java @@ -1,4 +1,4 @@ -package seedu.duke.exceptions; +package seedu.duke.apps.academicplanner.exceptions; /** * Signals that an invalid command has been given in the Academic Planner App. diff --git a/src/main/java/seedu/duke/apps/capcalculator/CapCalculator.java b/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorApp.java similarity index 95% rename from src/main/java/seedu/duke/apps/capcalculator/CapCalculator.java rename to src/main/java/seedu/duke/apps/capcalculator/CapCalculatorApp.java index 91644c6b4a..244317a7c2 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/CapCalculator.java +++ b/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorApp.java @@ -13,7 +13,7 @@ /** * Class representing the CAP Calculator app in PlanNUS. */ -public class CapCalculator extends App { +public class CapCalculatorApp extends App { private static final String AWAIT_COMMAND = "Type a command to continue..."; private static final String EXIT_MESSAGE = "Thank you for using Cap Calculator!"; @@ -27,7 +27,7 @@ public class CapCalculator extends App { private final Ui ui; private final DecimalFormat formatFinalCap = new DecimalFormat("#.##"); - public CapCalculator(Person currentPerson, Ui ui) { + public CapCalculatorApp(Person currentPerson, Ui ui) { this.currentPerson = currentPerson; this.ui = ui; } diff --git a/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java b/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java index 7e3020f21f..604e3d7bb6 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java @@ -27,23 +27,25 @@ public CalculatorUtils(Person currentPerson) { * @param currentModule A PartialModule object storing current module * @param caps An optional number of double storing old cap and new cap (If you send in old, must send in new also) */ - //TODO Look into throwing error and short circuiting this command public void updateCap(int type, PartialModule currentModule, double... caps) { // Caps is an array, 0 being oldCap, 1 being newCap if (type == FROM_ADD) { updateCapFromAdd(currentModule); + } else if (type == FROM_REMOVE) { //Decreasing total MC regardless of SU currentPerson.setCurrentMc(currentPerson.getCurrentMc() - currentModule.getModuleCredit()); + //Decreasing total MC after SU only if module is not SU if (currentModule.getCap() != -1.00) { editCapNonSuToSu(currentModule, currentModule.getCap()); } + } else if (type == FROM_EDIT) { if (isFromSuToNonSu(caps)) { //Case where previously was SU but new is not SU - editCapSuToNonSu(currentModule.getModuleCredit(), caps[1]); + editCapSuToNonSu(currentModule, caps[1]); } else if (isFromNonSuToSu(caps)) { //Case where previously was not SU but now is SU @@ -99,6 +101,8 @@ private void editCapNonSuToNonSu(PartialModule currentModule, double[] caps) { double oldMCxGrade = caps[0] * currentModule.getModuleCredit(); double newMCxGrade = caps[1] * currentModule.getModuleCredit(); double mcxGradeToSet = newMCxGrade - oldMCxGrade; + + //Updating total academic points to this point currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() + mcxGradeToSet); } @@ -110,9 +114,13 @@ private void editCapNonSuToNonSu(PartialModule currentModule, double[] caps) { * @param cap user's CAP */ private void editCapNonSuToSu(PartialModule currentModule, double cap) { + double mcxGradeToMinus = cap * currentModule.getModuleCredit(); + + //Updating total MCs currentPerson.setCurrentMcAfterSU(currentPerson.getCurrentMcAfterSU() - currentModule.getModuleCredit()); - double mcxGradeToMinus = cap * currentModule.getModuleCredit(); + + //Updated total Academic Points currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() - mcxGradeToMinus); } @@ -120,13 +128,17 @@ private void editCapNonSuToSu(PartialModule currentModule, double cap) { /** * Updates CAP when User edits module from a letter grade to a special grade. * - * @param moduleCredit module credit of edited module + * @param currentModule module that was edited * @param cap user's CAP */ - private void editCapSuToNonSu(Integer moduleCredit, double cap) { + private void editCapSuToNonSu(PartialModule currentModule, double cap) { + double newMCxGrade = cap * currentModule.getModuleCredit(); + + //Updating total MCs currentPerson.setCurrentMcAfterSU(currentPerson.getCurrentMcAfterSU() - + moduleCredit); - double newMCxGrade = cap * moduleCredit; + + currentModule.getModuleCredit()); + + //Updated total Academic Points currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() + newMCxGrade); } @@ -143,7 +155,7 @@ private void updateCapFromAdd(PartialModule currentModule) { //Incrementing total MC after SU only if module is not SU if (currentModule.getCap() != -1.00) { - editCapSuToNonSu(moduleCredit, currentModule.getCap()); + editCapSuToNonSu(currentModule, currentModule.getCap()); } } diff --git a/src/main/java/seedu/duke/exceptions/CapCalculatorException.java b/src/main/java/seedu/duke/apps/capcalculator/exceptions/CapCalculatorException.java similarity index 84% rename from src/main/java/seedu/duke/exceptions/CapCalculatorException.java rename to src/main/java/seedu/duke/apps/capcalculator/exceptions/CapCalculatorException.java index b6e14f9611..72e2183528 100644 --- a/src/main/java/seedu/duke/exceptions/CapCalculatorException.java +++ b/src/main/java/seedu/duke/apps/capcalculator/exceptions/CapCalculatorException.java @@ -1,4 +1,4 @@ -package seedu.duke.exceptions; +package seedu.duke.apps.capcalculator.exceptions; /** * Signals that an invalid command has been given in the CAP Calculator App. @@ -7,7 +7,7 @@ public class CapCalculatorException extends Exception { private String errorMessage; private static final String NEW_LINE = "\n"; - private static final String EXITING_CURRENT_COMMAND = "Exiting current command back to CapCalculator Main Menu."; + private static final String EXITING_CURRENT_COMMAND = "Exiting current command back to CapCalculatorApp Main Menu."; public CapCalculatorException(String errorMessage) { String stringToPrint = errorMessage + NEW_LINE + EXITING_CURRENT_COMMAND; diff --git a/src/main/java/seedu/duke/apps/moduleloader/ModuleLoader.java b/src/main/java/seedu/duke/apps/moduleloader/ModuleLoader.java new file mode 100644 index 0000000000..6814c25ea2 --- /dev/null +++ b/src/main/java/seedu/duke/apps/moduleloader/ModuleLoader.java @@ -0,0 +1,76 @@ +package seedu.duke.apps.moduleloader; + +import com.google.gson.Gson; +import seedu.duke.apps.moduleloader.exceptions.ModuleLoaderException; +import seedu.duke.objects.FullModule; +import java.io.InputStream; +import java.io.Reader; +import java.io.InputStreamReader; +import java.util.HashMap; +import java.util.Map; + +/** + * Class representing function to load all modules offered by NUS. + */ +public class ModuleLoader { + private static final int TOTAL_NUMBER_OF_MODULES = 12436; + public static final String NEW_LINE = "\n"; + public static final String MISSING_MODULE_DATA = "Data for Modules not found!"; + public static final String TERMINATION = "Terminating program..."; + public static final String CORRUPTED_MODULE_DATA = "Data for Modules corrupted!"; + + private Map moduleMap; + private FullModule[] moduleFullDetails; + + /** + * Default constructor for to load all modules from JSON file. + */ + public ModuleLoader() throws ModuleLoaderException { + try { + moduleMap = new HashMap<>(); + Gson gson = new Gson(); + + InputStream in = ModuleLoader.class.getResourceAsStream("/ModuleData.json"); + Reader jsonReader = new InputStreamReader(in); + moduleFullDetails = gson.fromJson(jsonReader, FullModule[].class); + + for (int i = 0; i < moduleFullDetails.length; i++) { + moduleMap.put(moduleFullDetails[i].getModuleCode(), i); + } + + if (moduleFullDetails.length != TOTAL_NUMBER_OF_MODULES) { + throw new ModuleLoaderException(CORRUPTED_MODULE_DATA + NEW_LINE + TERMINATION); + } + } catch (NullPointerException e) { + throw new ModuleLoaderException(MISSING_MODULE_DATA + NEW_LINE + TERMINATION); + } + } + + /** + * Constructor for checking condition where loading all module from JSON file fails. + * Used in development only. + * + * @param isProperCreation boolean indicating non-proper creation of module initializer + */ + public ModuleLoader(boolean isProperCreation) throws ModuleLoaderException { + throw new ModuleLoaderException(CORRUPTED_MODULE_DATA + NEW_LINE + TERMINATION); + } + + /** + * Getter for module map. + * + * @return Map + */ + public Map getModuleMap() { + return this.moduleMap; + } + + /** + * Getter for full module details. + * + * @return An Array of FullModule + */ + public FullModule[] getModuleFullDetails() { + return this.moduleFullDetails; + } +} diff --git a/src/main/java/seedu/duke/apps/moduleloader/exceptions/ModuleLoaderException.java b/src/main/java/seedu/duke/apps/moduleloader/exceptions/ModuleLoaderException.java new file mode 100644 index 0000000000..4e474ebd4d --- /dev/null +++ b/src/main/java/seedu/duke/apps/moduleloader/exceptions/ModuleLoaderException.java @@ -0,0 +1,18 @@ +package seedu.duke.apps.moduleloader.exceptions; + +public class ModuleLoaderException extends Exception { + private String errorMessage; + + public ModuleLoaderException() { + + } + + public ModuleLoaderException(String errorMessage) { + this.errorMessage = errorMessage; + } + + @Override + public String getMessage() { + return this.errorMessage; + } +} diff --git a/src/main/java/seedu/duke/exceptions/AcademicPlannerParserException.java b/src/main/java/seedu/duke/exceptions/AcademicPlannerParserException.java deleted file mode 100644 index 2117e0da72..0000000000 --- a/src/main/java/seedu/duke/exceptions/AcademicPlannerParserException.java +++ /dev/null @@ -1,18 +0,0 @@ -package seedu.duke.exceptions; - -/** - * Signals that an invalid command has been given in the Academic Planner Parser. - */ -public class AcademicPlannerParserException extends Exception { - - String errorMessage; - - public AcademicPlannerParserException(String errorMessage) { - this.errorMessage = errorMessage; - } - - @Override - public String getMessage() { - return this.errorMessage; - } -} diff --git a/src/main/java/seedu/duke/exceptions/InvalidCapException.java b/src/main/java/seedu/duke/exceptions/InvalidCapException.java index 284a821c0d..f1f6b74fcb 100644 --- a/src/main/java/seedu/duke/exceptions/InvalidCapException.java +++ b/src/main/java/seedu/duke/exceptions/InvalidCapException.java @@ -1,5 +1,7 @@ package seedu.duke.exceptions; +import seedu.duke.apps.capcalculator.exceptions.CapCalculatorException; + /** * Signals that the given CAP is not valid. */ diff --git a/src/main/java/seedu/duke/exceptions/InvalidCreditException.java b/src/main/java/seedu/duke/exceptions/InvalidCreditException.java index 6a2a265635..d953cc8b1c 100644 --- a/src/main/java/seedu/duke/exceptions/InvalidCreditException.java +++ b/src/main/java/seedu/duke/exceptions/InvalidCreditException.java @@ -1,5 +1,7 @@ package seedu.duke.exceptions; +import seedu.duke.apps.capcalculator.exceptions.CapCalculatorException; + /** * Signals that the given MC is not valid. */ diff --git a/src/main/java/seedu/duke/parser/AppParser.java b/src/main/java/seedu/duke/parser/AppParser.java index fa48851dd3..0adf8d904c 100644 --- a/src/main/java/seedu/duke/parser/AppParser.java +++ b/src/main/java/seedu/duke/parser/AppParser.java @@ -1,8 +1,8 @@ package seedu.duke.parser; import seedu.duke.apps.academicplanner.AcademicPlannerApp; -import seedu.duke.apps.capcalculator.CapCalculator; -import seedu.duke.apps.ModuleInitializer; +import seedu.duke.apps.capcalculator.CapCalculatorApp; +import seedu.duke.apps.moduleloader.ModuleLoader; import seedu.duke.exceptions.AppParserException; import seedu.duke.globalcommons.App; import seedu.duke.objects.Person; @@ -27,14 +27,14 @@ public class AppParser { * @return app to be run * @throws AppParserException thrown when an invalid command is give */ - public static App parse(String userInput, ModuleInitializer allModules, Person currentPerson, Ui ui) + public static App parse(String userInput, ModuleLoader allModules, Person currentPerson, Ui ui) throws AppParserException { userInput = userInput.trim().toLowerCase(); if (userInput.equals(ACADEMIC_PLAN_COMMAND)) { return new AcademicPlannerApp(allModules, currentPerson, ui); } else if (userInput.equals(CAP_CALCULATOR_COMMAND)) { - return new CapCalculator(currentPerson, ui); + return new CapCalculatorApp(currentPerson, ui); } else if (userInput.equals(EXIT_COMMAND)) { return new App(true); } else { diff --git a/src/test/java/seedu/duke/Duke.java b/src/test/java/seedu/duke/PlanNus.java similarity index 92% rename from src/test/java/seedu/duke/Duke.java rename to src/test/java/seedu/duke/PlanNus.java index 2b917a8154..b591ce5aff 100644 --- a/src/test/java/seedu/duke/Duke.java +++ b/src/test/java/seedu/duke/PlanNus.java @@ -4,7 +4,7 @@ import org.junit.jupiter.api.Test; -class Duke { +class PlanNus { @Test public void sampleTest() { assertTrue(true); diff --git a/src/test/java/seedu/duke/apps/ModuleInitializerTest.java b/src/test/java/seedu/duke/apps/ModuleLoaderTest.java similarity index 66% rename from src/test/java/seedu/duke/apps/ModuleInitializerTest.java rename to src/test/java/seedu/duke/apps/ModuleLoaderTest.java index ae52055459..94f6561332 100644 --- a/src/test/java/seedu/duke/apps/ModuleInitializerTest.java +++ b/src/test/java/seedu/duke/apps/ModuleLoaderTest.java @@ -2,21 +2,29 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import seedu.duke.apps.moduleloader.ModuleLoader; +import seedu.duke.apps.moduleloader.exceptions.ModuleLoaderException; import seedu.duke.objects.FullModule; import java.util.Map; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; -class ModuleInitializerTest { +class ModuleLoaderTest { private static final int TOTAL_NUMBER_OF_MODULES = 12436; private static final int INDEX_OF_CS1010 = 1786; - private ModuleInitializer allModules; + private ModuleLoader allModules; @BeforeEach public void setup() { - allModules = new ModuleInitializer(); + try { + allModules = new ModuleLoader(); + } catch (ModuleLoaderException e) { + System.out.println(e.getMessage()); + } } @Test @@ -30,8 +38,6 @@ void getModuleMap_loadAllModuleData_success() { void getModuleFullDetails_loadAllModuleData_success() { FullModule[] modules = allModules.getModuleFullDetails(); - assertEquals(allModules.getIsLoadingSuccessful(), true); - assertEquals(modules.length, TOTAL_NUMBER_OF_MODULES); assertEquals(modules[1786].toString(), "{\"additionalProperties\":{}," + "\"attributes\":[true,false,false,false,false,false,false,false,false]," @@ -43,8 +49,10 @@ void getModuleFullDetails_loadAllModuleData_success() { @Test void getModuleFullDetails_loadAllModuleData_fail() { - allModules = new ModuleInitializer(false); + Exception exception = assertThrows(ModuleLoaderException.class, () -> { + allModules = new ModuleLoader(false); + }); - assertEquals(allModules.getIsLoadingSuccessful(), false); + assertTrue(exception.getMessage().contains("Data for Modules corrupted!\nTerminating program...")); } } \ No newline at end of file diff --git a/src/test/java/seedu/duke/apps/academicplanner/commons/AddUtilsTest.java b/src/test/java/seedu/duke/apps/academicplanner/commons/AddUtilsTest.java index d72248cda2..6dc8efc706 100644 --- a/src/test/java/seedu/duke/apps/academicplanner/commons/AddUtilsTest.java +++ b/src/test/java/seedu/duke/apps/academicplanner/commons/AddUtilsTest.java @@ -2,7 +2,8 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import seedu.duke.apps.ModuleInitializer; +import seedu.duke.apps.moduleloader.ModuleLoader; +import seedu.duke.apps.moduleloader.exceptions.ModuleLoaderException; import seedu.duke.objects.PartialModule; import seedu.duke.objects.Person; import java.util.ArrayList; @@ -12,17 +13,21 @@ class AddUtilsTest { - ModuleInitializer allModules; + ModuleLoader allModules; Person currentPerson; AddUtils addUtils; ModuleValidator moduleValidator; @BeforeEach void setup() { - allModules = new ModuleInitializer(); - currentPerson = new Person("Bob"); - addUtils = new AddUtils(allModules,currentPerson); - moduleValidator = new ModuleValidator(allModules,currentPerson); + try { + allModules = new ModuleLoader(); + currentPerson = new Person("Bob"); + addUtils = new AddUtils(allModules,currentPerson); + moduleValidator = new ModuleValidator(allModules,currentPerson); + } catch (ModuleLoaderException e) { + System.out.println(e.getMessage()); + } } @Test diff --git a/src/test/java/seedu/duke/apps/capcalculator/CapCalculatorParserTest.java b/src/test/java/seedu/duke/apps/capcalculator/CapCalculatorAppParserTest.java similarity index 98% rename from src/test/java/seedu/duke/apps/capcalculator/CapCalculatorParserTest.java rename to src/test/java/seedu/duke/apps/capcalculator/CapCalculatorAppParserTest.java index 99ba156757..b52fd445ad 100644 --- a/src/test/java/seedu/duke/apps/capcalculator/CapCalculatorParserTest.java +++ b/src/test/java/seedu/duke/apps/capcalculator/CapCalculatorAppParserTest.java @@ -13,7 +13,7 @@ import static org.junit.jupiter.api.Assertions.fail; import static seedu.duke.apps.capcalculator.CapCalculatorParser.INVALID_COMMAND_MESSAGE; -class CapCalculatorParserTest { +class CapCalculatorAppParserTest { private Person currentPerson; private Ui ui; From ba66adeda33051bcba51c39d81388ab5874456aa Mon Sep 17 00:00:00 2001 From: Khenus Date: Mon, 12 Oct 2020 01:18:37 +0800 Subject: [PATCH 071/450] V0.8 Added exception for missing or corrupted data file --- src/main/java/seedu/duke/PlanNus.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/seedu/duke/PlanNus.java b/src/main/java/seedu/duke/PlanNus.java index aeb63c2df9..5761fb8bda 100644 --- a/src/main/java/seedu/duke/PlanNus.java +++ b/src/main/java/seedu/duke/PlanNus.java @@ -41,6 +41,7 @@ public PlanNus() { * Main entry function for PlanNUS. */ public void run() { + assert isStartupSuccessfully == true : "Startup is successful"; if (isStartupSuccessfully) { showWelcomeMessage(); boolean isExit = false; From e7be5ff725f75ae6c713da1b0808576592614262 Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Mon, 12 Oct 2020 08:48:52 +0800 Subject: [PATCH 072/450] Fix bug where adding additional spaces behind inputs in academic planner throws exception --- .../duke/apps/academicplanner/commands/AddModuleCommand.java | 4 ++-- .../duke/apps/academicplanner/commands/EditModuleCommand.java | 2 +- .../seedu/duke/apps/academicplanner/commons/EditUtils.java | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java index 90a8ec546b..3bb8cf80bc 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java @@ -59,7 +59,7 @@ public void execute() throws AcademicException { } promptUserToEnterSemester(); - String userInput = in.nextLine(); + String userInput = in.nextLine().trim(); int semesterValue; try { @@ -75,7 +75,7 @@ public void execute() throws AcademicException { } promptUserToEnterGrade(); - String gradeValue = in.nextLine(); + String gradeValue = in.nextLine().trim().toUpperCase(); if (!moduleValidator.isValidGrade(gradeValue)) { logger.log(Level.WARNING,"Grade entered is invalid."); diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/EditModuleCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/EditModuleCommand.java index 5e6899aa7b..6570ad87e5 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/EditModuleCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/EditModuleCommand.java @@ -42,7 +42,7 @@ public void execute() throws AcademicException { try { if (moduleValidator.isModTakenByUser(moduleCode)) { System.out.println(PROMPT_EDIT_CHOICES); - String choice = in.nextLine(); + String choice = in.nextLine().trim(); if (choice.equals(EDIT_SEMESTER)) { editUtils.editModuleSemester(in, moduleCode); diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java index d9975e37f5..3411dd7a17 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java @@ -48,7 +48,7 @@ public EditUtils(ModuleLoader allModules, Person currentPerson) { public void editModuleGrade(Scanner in, String moduleCode) throws AcademicException { System.out.println(PROMPT_NEW_GRADE); System.out.println(VALID_GRADES); - String gradeValue = in.nextLine().toUpperCase(); + String gradeValue = in.nextLine().trim().toUpperCase(); if (!modChecker.isValidGrade(gradeValue)) { throw new AcademicException(ERROR_INVALID_GRADE); @@ -98,7 +98,7 @@ private void updateCurrentModuleGrade(String gradeValue, PartialModule module) { public void editModuleSemester(Scanner in, String moduleCode) throws AcademicException { System.out.println(PROMPT_NEW_SEMESTER_VALUE); System.out.println(VALID_SEMESTERS); - String newValue = in.nextLine(); + String newValue = in.nextLine().trim(); if (!modChecker.isValidSemester(Integer.parseInt(newValue))) { throw new AcademicException(ERROR_INVALID_SEMESTER_INDEX); From f21b96fa374a7045b0d4761488bd7deea96cb714 Mon Sep 17 00:00:00 2001 From: vanessa-kang <49282734+vanessa-kang@users.noreply.github.com> Date: Mon, 12 Oct 2020 09:54:09 +0800 Subject: [PATCH 073/450] Pull updated code from org master (as of 12/10/2020 10am) --- .gitignore | 2 + build.gradle | 14 +- docs/AboutUs.md | 12 +- docs/DeveloperGuide.md | 168 ++++++++- docs/README.md | 8 +- docs/UserGuide.md | 226 ++++++++++- docs/_config.yml | 1 + docs/images/Main_Page_Features.png | Bin 0 -> 9625 bytes docs/images/acadplan_features.png | Bin 0 -> 9939 bytes docs/images/add_module.png | Bin 0 -> 25687 bytes docs/images/capcalc_current.png | Bin 0 -> 6041 bytes docs/images/capcalc_features.png | Bin 0 -> 14411 bytes docs/images/capcalc_set_target.png | Bin 0 -> 15085 bytes docs/images/edit_module.png | Bin 0 -> 8366 bytes docs/images/edit_module_grade.png | Bin 0 -> 3643 bytes docs/images/edit_module_semester.png | Bin 0 -> 6314 bytes docs/images/exit_PlanNUS.png | Bin 0 -> 4740 bytes docs/images/exit_acadplan.png | Bin 0 -> 14293 bytes docs/images/exit_capcalc.png | Bin 0 -> 12812 bytes docs/images/remove_module.png | Bin 0 -> 5134 bytes docs/team/Harry.md | 7 + docs/team/Khenus.md | 7 + docs/team/Lam.md | 7 + docs/team/Vanessa.md | 7 + docs/team/Zihao.md | 7 + docs/team/johndoe.md | 6 - src/main/java/META-INF/MANIFEST.MF | 3 + src/main/java/seedu/duke/Duke.java | 17 - src/main/java/seedu/duke/PlanNus.java | 96 +++++ .../java/seedu/duke/apps/AcademicPlanner.java | 354 ------------------ .../academicplanner/AcademicPlannerApp.java | 60 +++ .../AcademicPlannerParser.java | 67 ++++ .../commands/AddModuleCommand.java | 106 ++++++ .../commands/EditModuleCommand.java | 61 +++ .../commands/PrintCalenderCommand.java | 6 + .../commands/RemoveModuleCommand.java | 51 +++ .../academicplanner/commons/AddUtils.java | 58 +++ .../academicplanner/commons/EditUtils.java | 126 +++++++ .../commons/ModuleValidator.java | 113 ++++++ .../academicplanner/commons/RemoveUtils.java | 38 ++ .../exceptions/AcademicException.java | 21 ++ .../apps/capcalculator/CapCalculatorApp.java | 72 ++++ .../capcalculator/CapCalculatorParser.java | 45 +++ .../commands/CurrentCommand.java | 27 ++ .../commands/SetTargetCommand.java | 40 ++ .../commons/CalculatorUtils.java | 185 +++++++++ .../capcalculator/commons/SetTargetUtils.java | 106 ++++++ .../exceptions/CapCalculatorException.java | 21 ++ .../duke/apps/moduleloader/ModuleLoader.java | 76 ++++ .../exceptions/ModuleLoaderException.java | 18 + .../duke/exceptions/AppParserException.java | 17 + .../exceptions/CommandParserException.java | 17 + .../duke/exceptions/InvalidCapException.java | 13 + .../exceptions/InvalidCreditException.java | 13 + .../java/seedu/duke/globalcommons/App.java | 28 ++ .../seedu/duke/globalcommons/Command.java | 24 ++ .../duke/moduledata/ModuleInitializer.java | 33 -- .../FullModule.java} | 24 +- .../{Module.java => PartialModule.java} | 54 +-- src/main/java/seedu/duke/objects/Person.java | 57 ++- .../java/seedu/duke/parser/AppParser.java | 44 +++ src/main/java/seedu/duke/ui/Ui.java | 18 + .../duke/{DukeTest.java => PlanNus.java} | 2 +- .../seedu/duke/apps/ModuleLoaderTest.java | 58 +++ .../academicplanner/commons/AddUtilsTest.java | 84 +++++ .../CapCalculatorAppParserTest.java | 78 ++++ text-ui-test/EXPECTED.TXT | 49 ++- text-ui-test/input.txt | 11 +- 68 files changed, 2336 insertions(+), 527 deletions(-) create mode 100644 docs/_config.yml create mode 100644 docs/images/Main_Page_Features.png create mode 100644 docs/images/acadplan_features.png create mode 100644 docs/images/add_module.png create mode 100644 docs/images/capcalc_current.png create mode 100644 docs/images/capcalc_features.png create mode 100644 docs/images/capcalc_set_target.png create mode 100644 docs/images/edit_module.png create mode 100644 docs/images/edit_module_grade.png create mode 100644 docs/images/edit_module_semester.png create mode 100644 docs/images/exit_PlanNUS.png create mode 100644 docs/images/exit_acadplan.png create mode 100644 docs/images/exit_capcalc.png create mode 100644 docs/images/remove_module.png create mode 100644 docs/team/Harry.md create mode 100644 docs/team/Khenus.md create mode 100644 docs/team/Lam.md create mode 100644 docs/team/Vanessa.md create mode 100644 docs/team/Zihao.md delete mode 100644 docs/team/johndoe.md create mode 100644 src/main/java/META-INF/MANIFEST.MF delete mode 100644 src/main/java/seedu/duke/Duke.java create mode 100644 src/main/java/seedu/duke/PlanNus.java delete mode 100644 src/main/java/seedu/duke/apps/AcademicPlanner.java create mode 100644 src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java create mode 100644 src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java create mode 100644 src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java create mode 100644 src/main/java/seedu/duke/apps/academicplanner/commands/EditModuleCommand.java create mode 100644 src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java create mode 100644 src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java create mode 100644 src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java create mode 100644 src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java create mode 100644 src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java create mode 100644 src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java create mode 100644 src/main/java/seedu/duke/apps/academicplanner/exceptions/AcademicException.java create mode 100644 src/main/java/seedu/duke/apps/capcalculator/CapCalculatorApp.java create mode 100644 src/main/java/seedu/duke/apps/capcalculator/CapCalculatorParser.java create mode 100644 src/main/java/seedu/duke/apps/capcalculator/commands/CurrentCommand.java create mode 100644 src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java create mode 100644 src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java create mode 100644 src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java create mode 100644 src/main/java/seedu/duke/apps/capcalculator/exceptions/CapCalculatorException.java create mode 100644 src/main/java/seedu/duke/apps/moduleloader/ModuleLoader.java create mode 100644 src/main/java/seedu/duke/apps/moduleloader/exceptions/ModuleLoaderException.java create mode 100644 src/main/java/seedu/duke/exceptions/AppParserException.java create mode 100644 src/main/java/seedu/duke/exceptions/CommandParserException.java create mode 100644 src/main/java/seedu/duke/exceptions/InvalidCapException.java create mode 100644 src/main/java/seedu/duke/exceptions/InvalidCreditException.java create mode 100644 src/main/java/seedu/duke/globalcommons/App.java create mode 100644 src/main/java/seedu/duke/globalcommons/Command.java delete mode 100644 src/main/java/seedu/duke/moduledata/ModuleInitializer.java rename src/main/java/seedu/duke/{moduledata/ModuleDatum.java => objects/FullModule.java} (72%) rename src/main/java/seedu/duke/objects/{Module.java => PartialModule.java} (68%) create mode 100644 src/main/java/seedu/duke/parser/AppParser.java create mode 100644 src/main/java/seedu/duke/ui/Ui.java rename src/test/java/seedu/duke/{DukeTest.java => PlanNus.java} (91%) create mode 100644 src/test/java/seedu/duke/apps/ModuleLoaderTest.java create mode 100644 src/test/java/seedu/duke/apps/academicplanner/commons/AddUtilsTest.java create mode 100644 src/test/java/seedu/duke/apps/capcalculator/CapCalculatorAppParserTest.java diff --git a/.gitignore b/.gitignore index f69985ef1f..9a3f753456 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,5 @@ bin/ /text-ui-test/ACTUAL.txt text-ui-test/EXPECTED-UNIX.TXT +/text-ui-test/DIFF.TXT +DIFF.TXT diff --git a/build.gradle b/build.gradle index 30d5145f95..ec0fed9bc2 100644 --- a/build.gradle +++ b/build.gradle @@ -31,11 +31,11 @@ test { } application { - mainClassName = "seedu.duke.Duke" + mainClassName = "seedu.duke.PlanNus" } shadowJar { - archiveBaseName = "duke" + archiveBaseName = "PlanNus" archiveClassifier = null } @@ -43,6 +43,14 @@ checkstyle { toolVersion = '8.23' } -run{ +run { standardInput = System.in } + +jar { + manifest { + attributes( + 'Main-Class': 'seedu.duke.PlanNus' + ) + } +} diff --git a/docs/AboutUs.md b/docs/AboutUs.md index 69a5333e88..1b8577f47e 100644 --- a/docs/AboutUs.md +++ b/docs/AboutUs.md @@ -1,9 +1,9 @@ # About us -Display | Name | Role | Github Profile +Display | Name | Github Profile | Portfolio ---|:---:|:---:|:---: -![](https://avatars3.githubusercontent.com/u/60382285?s=400) | Jerrold Lam | Team Leader | [jerroldlam](https://github.com/jerroldlam "Github User Profile") -![](https://avatars3.githubusercontent.com/u/56764814?s=100) | Khenus Tan | Git and Integration Expert | [Khenus](https://github.com/Khenus "Github User Profile") -![](https://avatars3.githubusercontent.com/u/60414537?s=100) | Harry Lee | Deliverables Expert | [harryleecp](https://github.com/harryleecp "Github User Profile") -![](https://avatars3.githubusercontent.com/u/57383789?s=100) | Ju Zihao | Scheduler Expert | [JuZihao](https://github.com/JuZihao "Github User Profile") -![](https://avatars3.githubusercontent.com/u/49282734?s=400) | Vanessa Kang | Code Quality Expert | [Vanessa-Kang](https://github.com/vanessa-kang "Github User Profile") +![](https://avatars3.githubusercontent.com/u/60382285?s=400) | Jerrold Lam | [jerroldlam](https://github.com/jerroldlam "Github User Profile") | [Portfolio](team/Lam.md) +![](https://avatars3.githubusercontent.com/u/56764814?s=100) | Khenus Tan | [Khenus](https://github.com/Khenus "Github User Profile") | [Portfolio](team/Khenus.md) +![](https://avatars3.githubusercontent.com/u/60414537?s=100) | Harry Lee | [harryleecp](https://github.com/harryleecp "Github User Profile") | [Portfolio](team/Harry.md) +![](https://avatars3.githubusercontent.com/u/57383789?s=100) | Ju Zihao | [JuZihao](https://github.com/JuZihao "Github User Profile") | [Portfolio](team/Zihao.md) +![](https://avatars3.githubusercontent.com/u/49282734?s=400) | Vanessa Kang | [Vanessa-Kang](https://github.com/vanessa-kang "Github User Profile") | [Portfolio](team/Vanessa.md) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 9c4b078293..7b05b7dda3 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -1,36 +1,164 @@ # Developer Guide -## Design & implementation +{:toc} -{Describe the design and implementation of the product. Use UML diagrams and short code snippets where applicable.} +## Setting up PlanNUS +First and foremost, the following steps are assuming that you already have a [GitHub](github.com) account set up beforehand. Once this has been done, proceed to __fork__ this [repo](https://github.com/AY2021S1-CS2113T-F12-1/tp), and __clone__ the fork into your computer using [Sourcetree]() or any other _Git GUI_. -## Product scope -### Target user profile +The _IDE_ to be used should contain the latest version of _Java_ as this is the main programming language for this application. Thus you are highly recommended to use Intellij IDEA. -{Describe the target user profile} +The following are remaining steps to be taken to finish the set up: -### Value proposition +1. Make sure that the version is configured as __JDK 11__. +2. When prompted, __import__ the project as a __Gradle project__ (could take minutes to complete). +3. Enter commands to ensure that PlanNUS functions as expected. You may refer to the _User Guide_ for valid commands. -{Describe the value proposition: what problem does it solve?} -## User Stories -|Version| As a ... | I want to ... | So that I can ...| -|--------|----------|---------------|------------------| -|v1.0|fresh undergraduate|visualize the modules in the recommended schedule and course requirements|better plan out my academic journey for the next 4-5 years in NUS| -|v1.0|undergraduate with at least 1 semester of study completed|calculate my CAP easily|forecast my own expected graduation CAP and if they match my expected CAP| -|v1.0|undergraduate with at least 1 semester of study completed|print out a personalised list of modules taken so far and grades obtained|track my academic progression in NUS| -|v2.0|user|find a to-do item by name|locate a to-do without having to go through the entire list| +## Design -## Non-Functional Requirements +### Architecture -{Give non-functional requirements} +{Exact diagram and corresponding descriptions to be added} -## Glossary +### UI component -* *glossary item* - Definition +{Exact diagram and corresponding descriptions to be added} -## Instructions for manual testing +### Logic component -{Give instructions on how to do a manual product testing e.g., how to load sample data to be used for testing} +{Exact diagram and corresponding descriptions to be added} + +### Model component + +{Exact diagram and corresponding descriptions to be added} + +### Storage component + +{Exact diagram and corresponding descriptions to be added} + +### Common classes + +{Exact diagram and corresponding descriptions to be added} + + + +## Implementation + +### Academic Calendar Planner features (i.e. add, remove, edit and view) + +#### Proposed implementation + +{Exact diagram and corresponding descriptions to be added} + +#### Design consideration + +{Exact diagram and corresponding descriptions to be added} + +### CAP Calculator features (i.e. current and set target) + +#### Proposed implementation + +{Exact diagram and corresponding descriptions to be added} + +#### Design consideration + +{Exact diagram and corresponding descriptions to be added} + + + +## Documentation, logging, testing, configuration, dev-ops + +__Documentation guide__ + +__Testing guide__ + +__Logging guide__ + +__Configuration guide__ + +__DevOps guide__ + + + +## Appendix: Requirements + +### Product scope + +__Target user profile:__ + +* has adequate level of familiarization with CLI applications +* requires a clear outlook of academic journey with the modules offered by NUS +* wants to keep track of his or her results and set target grades for the upcoming semester(s) +* prefers using desktop or laptop instead of other electronic devices + +__Value proposition:__ +Provides NUS undergraduates with a platform to keep track of their academic progress and explore other possibilities with the plethora of modules available. + + + +### User stories + +| Version | As a ... | I want to ... | So that I can ... | +| ------- | --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| v1.0 | fresh undergraduate | visualize the modules in the recommended schedule and course requirements | better plan out my academic journey for the next 4-5 years in NUS | +| v1.0 | undergraduate with at least 1 semester of study completed | calculate my CAP easily | forecast my own expected graduation CAP and if they match my expected CAP | +| v1.0 | undergraduate with at least 1 semester of study completed | print out a personalized list of modules taken so far and grades obtained | track my academic progression in NUS | +| v2.0 | user | find a to-do item by name | locate a to-do without having to go through the entire list | + + + +### Use cases + +__Use case 1: Add a module__ + +__MSS__ + +1. User enters `acadplan` in the main menu of PlanNUS + +2. User enters the necessary command and module code + +3. PlanNUS prompts user to enter the remaining information + +4. PlanNUS adds the module + + Use case ends. + +__Extensions__ + +* 2a. The command entered is invalid. + + * 2a1. PlanNUS shows an error message. + + Use case ends. + +* 2b. Module code entered is invalid. + + * 2b1. PlanNUS shows an error message. + + Use case ends. + +* 3a. Invalid semester or grade is entered. + + * 3a1. PlanNUS shows an error message. + + Use case ends resumes at step 3. + + + +{More to be added} + +### Non-Functional Requirements + +{More to be added} + +### Glossary + +{More to be added} + + + +## Appendix: Instructions for manual testing + +{More to be added} \ No newline at end of file diff --git a/docs/README.md b/docs/README.md index 8ca5a98abd..501ba4738c 100644 --- a/docs/README.md +++ b/docs/README.md @@ -2,7 +2,7 @@ #### Foreword -plaNUS is a greenfield project which aims to solve the gap in undergraduate academic planning in NUS. +PlanNUS is a greenfield project which aims to solve the gap in undergraduate academic planning in NUS. With the `Academic Calendar Planner`,plaNUS will be able to assist undergraduate students in forecasting their academic journey for their 4 or 5 years in NUS. With the `CAP Calulator` , plaNUS will be able to tell you your current CAP and forecast future grades needed to achieve your target CAP. @@ -27,7 +27,7 @@ With the `CAP Calulator` , plaNUS will be able to tell you your current CAP and 2. Loading of Academic Calendar Planner from text file. Useful links: -* [User Guide](UserGuide.md) -* [Developer Guide](DeveloperGuide.md) -* [About Us](AboutUs.md) +* [User Guide](https://ay2021s1-cs2113t-f12-1.github.io/tp/UserGuide.html "User Guide") +* [Developer Guide](https://ay2021s1-cs2113t-f12-1.github.io/tp/DeveloperGuide.html "Developer Guide") +* [About Us](https://ay2021s1-cs2113t-f12-1.github.io/tp/AboutUs.html "About Us") * [Planning Document](https://docs.google.com/document/d/1ikOD_2NS2qUSGtQJpqbVWX7g5mAFV6_jxhiAlka_SSs/edit?usp=sharing "Collaborative Document") diff --git a/docs/UserGuide.md b/docs/UserGuide.md index abd9fbe891..f2105e5600 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -1,42 +1,234 @@ -# User Guide +# User Guide for PlanNus -## Introduction +PlanNUS is a __desktop application for planning academic journey__ with modules offered by National University of Singapore (NUS). The __Command Line Interface (CLI)__ will be required for the program to work. -{Give a product intro} -## Quick Start +* Table of Contents +{:toc} + -{Give steps to get started quickly} +## Quick Start 1. Ensure that you have Java 11 or above installed. -1. Down the latest version of `Duke` from [here](http://link.to/duke). +1. Download the latest version of `PlanNUS` from [here](https://github.com/AY2021S1-CS2113T-F12-1/tp/releases). +1. Double click on _PlanNUS.jar_ to start up the program. +1. If the previous step does not work, open up the command prompt. +1. Go to the directory where the jar file is saved at. +1. Enter the following command `java -jar PlanNUS.jar` ## Features -{Give detailed description of each feature} +PlanNUS has two separate commands at the main page where the users can either choose to have an outlook of their potential academic journey or calculate their CAP. For each of these commands, there are more specific functions for configuration of user's desired choices. + + + +### Academic Calendar Planner: `acadplan` +Directs user to the page where he/she can plan a personalized academic journey in NUS by using `add`, `remove` , `view` or `edit` features as shown below. + + + +Input format: `acadplan` + +#### Adding a module into the calendar: `add` + +Input format: `add ` + + +**Example of proper usage:** + +* `add CS2113T` +* `ADD cs2101` + +Upon entering the desired module, user will be prompted to enter the semester when this module had been or to be taken before keying in the grade as shown in the image below. + + + +__Caution:__ + +* Invalid module codes (i.e. Modules not offered by NUS) cannot be added into the calendar +* Duplicate module codes cannot be added into the calendar as well + +#### Removing an existing module in the calendar: `remove` + +Input format: `remove ` + +Example of usage: + +* `remove cs2113T` +* `REMOVE CS2101` + + + +__Caution:__ + +* Only modules that have been added into the calendar can be removed + +#### Editing an existing module in the calendar: `edit` + +Input format: `edit ` + +Example of usage: + +* `edit CS2113T` +* `EDIT cs2101` + + + +As shown in the image, user can choose to edit either the _Semester_ or _Grade_ of the selected module. (__Note:__ Enter either `1` or `2` instead of the component's name) + +Expected output when user wishes to change the _Semester_. + + + +Expected output when user wishes to change the _Grade_. + + + +__Caution:__ + +* Only modules that have been added into the calendar can be edited + +#### Printing the academic calendar: `view` + +Input format: `view` + +{Photo here} + + + +### Cap Calculator: `capcalc` + +Directs user to the page where he/she can view the `current` CAP or even `set target` CAP to be met in the upcoming semester(s). -### Adding a todo: `todo` -Adds a new item to the list of todo items. + -Format: `todo n/TODO_NAME d/DEADLINE` +Input format: `capcalc` -* The `DEADLINE` can be in a natural language format. -* The `TODO_NAME` cannot contain punctuation. +#### Printing current CAP and MCs taken: `current` -Example of usage: +The value of CAP depends entirely on the modules and with corresponding grades added by the user in Academic Calendar Planner. -`todo n/Write the rest of the User Guide d/next week` + + +Input format: `current` + +__Caution:__ + +* If there are no modules added, the current CAP and graded MCs are set to 0 + +#### Set target CAP: `set target` + +This is for the user to set a target CAP that he or she wishes to obtain for the next specified graded MCs. + + + +Input format: `set target` + +__Caution:__ + +* Maximum CAP is 5.0 + + + +### Exiting from a feature or PlanNUS: `exit` + +This command directs user back to the main page of PlanNUS after they are done using a feature or exits from the entire application itself. + +When user exits from the Academic Planner, expected output is as shown below. + + + +When user exits from the CAP calculator, expected output will be as follows: + + + +Last but not least, the expected output for exiting PlanNUS will be as such: + + + +Input format: `exit` -`todo n/Refactor the User Guide to remove passive voice d/13/04/2020` ## FAQ +Question Type|Question|Answer +:---:|---|--- +General | How do I check which modules are offered by NUS? | For more info on which modules are offered by NUS, visit [here](https://nusmods.com/modules?sem[0]=1&sem[1]=2&sem[2]=3&sem[3]=4 "NUSMODS"). +General | What is a valid semester index? | For the purpose of this planning software, we have come to a decision to limit the maximum number of semesters an undergraduate can take to 10, which is 5 academic years. The notation they are represented by is by an integer of value 1 to 10. For a fresh undergraduate, they will begin at semester index of 1. For a year 3 student who is currently in semester 1, the semester index will be 5. +General | What is a valid grade? | **Letter Grades**: A+, A, B+, B, B-, C+, C, D+, D, F , **Special Grades**: CS, CU, S, U, W, IC, IP, AUD, WU, EXE, **If you have yet to have a grade for the module**: NT + **Q**: How do I transfer my data to another computer? **A**: {your answer here} + + ## Command Summary -{Give a 'cheat sheet' of commands here} +Note that the following commands are case-insensitive. + +* Initiate the __Academic Calendar Planner__: `acadPlan` + +| __Action__ | Command | +| ------------------------------------------- | ---------------------- | +| Adding a module into the calendar | `add ` | +| Removing an existing module in the calendar | `remove ` | +| Editing an existing module in the calendar | `edit ` | +| Printing the academic calendar | `view` | + +* Initiate the __CAP calculator__: `capCalc` + +| __Action__ | __Command__ | +| ------------------------------------ | ------------- | +| Printing current CAP and MCs taken | `current` | +| Configure current CAP and graded MCs | `set current` | +| Set target CAP | `set target` | +| Make the module grade as S/U | `set SU` | + +* To exit to the main page: `exit` + + + +## Appendix + +### Naming convention for semester indexes + +For the purpose of this planning software, we have decided to limit the maximum number of semesters an undergraduate can take to 10, which is equivalent to 5 academic years. Each semester is indexed by an integer between 1 to 10. For a fresh undergraduate, they will begin at semester index of 1. For a year 3 student who is currently in semester 1, the semester index will be 5. Below is a table which illustrates the corresponding semester indexes for undergraduates. + +| Academic Year | Semester (as of Academic Year) | Semester Index | +| :-----------: | :----------------------------: | :------------: | +| 1 | 1 | 1 | +| 1 | 2 | 2 | +| 2 | 1 | 3 | +| 2 | 2 | 4 | +| 3 | 1 | 5 | +| 3 | 2 | 6 | +| 4 | 1 | 7 | +| 4 | 2 | 8 | +| 5 | 1 | 9 | +| 5 | 2 | 10 | + + + +### Grade values + +As per NUS Grade Policy, letter grades will have a corresponding Academic Point attached to them. Special cases such as Satisfactory/Unsatisfactory (SU) grades can be captured by our software as well. Below is a table of grades and their corresponding grade value. Do note that the grades of forecasted modules should be declared as NT, short for Not Taken. + +| Grade | Academic Points | +| :-------------------------: | :-------------: | +| A+ | 5.0 | +| A | 5.0 | +| A- | 4.5 | +| B+ | 4.0 | +| B | 3.5 | +| B- | 3.0 | +| C+ | 2.5 | +| C | 2.0 | +| D+ | 1.5 | +| D | 1.0 | +| F | 0.0 | +| Additional Grading Options* | - | + +*Additional Grading options include S,U,CS,CU,IC,IP,AUD,EXE,W,WU. They hold no Academic Point Value. + -* Add todo `todo n/TODO_NAME d/DEADLINE` diff --git a/docs/_config.yml b/docs/_config.yml new file mode 100644 index 0000000000..f980e760b6 --- /dev/null +++ b/docs/_config.yml @@ -0,0 +1 @@ +theme: jekyll-theme-slate diff --git a/docs/images/Main_Page_Features.png b/docs/images/Main_Page_Features.png new file mode 100644 index 0000000000000000000000000000000000000000..7cff769f4b23023260640f080e9feb07ea66c9ac GIT binary patch literal 9625 zcmbW7bx>T(qOS)D5L`kCI=BXh5ZpC*aCdjNfe_p>IKka5xI=IY5Zv9}Z5ZIO_daLe zbKbr8RK54dlCD*&T547Ix4vJ8DauQtArl}2001;;DKTXL0H*Hc-U12s<$MpkAA7mL zI4etv04hd__FoF{=E8Eq06-NO1#0-}rTp4KO4Attz;^lLfLSpEdH?`aOwwY)Djs^r z=_sEGq-XnA$0jk>3KRqA$Rw(_sfq|A$p{z*DD}w6CC+`NLn~xdzAEL=S_Hy#kc#2^ z@9%aWFY>dKuCZk8<(fRGC(x%F22YyHKNm8`2|V8dVf}?jb=ETdp2#3lq?kysm>^0_ zBzVJ60c<4ruPkD~*YL2y?{dKKu>Pd7!jL%*yucMDP9Y9$Q5L(?*c`#(A~cWsE7&vr zA^%@z_Z`xtO9!O`myf*S(_c`!MrKWCEo;mm(e8*&QfcT9?XqrD@i0&vu7grHLNu}( zV`WEi#Tzf2>2k?Y+;gR86Jl!wSQWI!$#3NJoFEkK_O;h?lHYEKKc^pfL;WcME)~?# z(~r1=5tvB%^1_fihXFVWU?#a-ywagSPRt4i|6+ugLRt=0$0rF^p zt|I5aYw3`7cc?Qdf@nmulgpk2C24u}%U^d=8%S~+Xj^&|r;bR6pLZM+ zzQXdqKA-*iAzv)EA4g!ohVZm-a7gYBnIX&EoA+&+b!^s4T~!yyZ%yjG818ec-*RMy zE~1(0#J~ZFn-P}wb|78wUG_r45Tp#oG?64F7@@`0n1sRkTr^}(*k!i#AMP>^#sDF$ za?V9JXf`b||4oZ}uy(2GQWKrnLMyb&&~9^$R%DV!__Qx=eeBYZ7=SHa<2ZQD?;NONw_k<*mde2u89rXf$?T0 z(>r#$|9t&g!(=}QRROFc0!#>Kkpe!%LXaq(f|QG+KQ)mfa@}HU?{5vmi|l{?E-({y zpY7L*u5trHlkH$R_F%MfsPu*lE*r6li2V@hi6c8_O6;>NjwZ_+aNcNNt&}p}>Rf;S zkZz47<*ojnKe!^pFqI3L;#-ADgGvd>MbG!M(fb7a=Z8eWGbJ^kaeG4c30GXj=Y<+* z1-SZSw-g(%q5@u~_7~N!fUpvA@V+(#eVvP;_wALJt}fN>E3B7(FZ;pYBG%*Ec_lr- z#|*1)9}gQ+dl?X(Odrxs9=U}Ye%q-VTmfGQos5?**ZFDo+|`9eG{VgLXCIlwD?a#j0Hcs}InWJG5P9bs zOR9DT)0yRBj}0N~n; zh0u5yINj46Dn;m#**SQt2Jnc{A)X`(D-3q za1W7B)JWJnGzyh}i*M?IIavD$_FpA2U7S zmD3rK1Dr>6VubE==@fx6Gb}N^9mH5mKm5&j_EOT9L$vMhuaWs`+*`Bcm_UFqSv@7P zq;v6aY(t$ti79n`xTSBPxjEjOfo?Y_V}dfwzXW$CB(L1b)WULE>~i(@+LJ)xp{kyA zV!&6RS6|%7V8LdocWjV_%ie+QYplm|f+bU^xA#?(z|1$IpWkbEn?yjB-EOd=&T@^R z2%{i<{Jl&&DNkj2P?&I~_z3Rnz}1AWS6JgWw}bPumAr@)oKnEj$d=XFSvW^+#8m^6 zsLd5I^1U=xWiQc6Pq#~2Eaz0KyIdk6{>b)C?GFdMbM9HLXldavy$rm19Zwt+#(M|E z_gndf9_8$GXcPUS53H>SwmHqT6fMd`chU8}j0NBz4XSTj#hj?QEzTeWx5sAjUT~0j z+0Z942<;xjlHXFEp~>wdVER7%0I0oEWq+zG4fM}3XBcJq)g%C`+7S`l!FRbcTO?7l z*e~0~tCs1LNUOIX!s1xV9mO|4&0f1E%=L@EXw-uQ;M#F{_Oa30(>r<-w;VWx-l=`=B$j~@($pP`eb|+b z?410{(ma)DGkC#cWp}x@%M5+m>`c-GEj;Ur3aU*Tb=eb0jO{u6GzLx<-@!QPf!_Df zI|7QPv}QntJe}?6o)y$hX^zV-M;b`-S(e-oHgVsno2+D7r4)r#OJ&*()QU zOF>A~6>KCpF4xMSyT`#A$dDw?EhRaU=E1(=*fuv2qXbw`0rAUh!-Re0a%id{NSQ`>zMd9iQT@|%F`FMAZ(XC6#p z19Y!Ik>#}!C)C;#IxPY#Z#TH{`~*)L1z<_b?e^I@^vM?|>KuYR+QSBlPdV!Op#jWq zge?y#P8c`|&jnTrIa&^{i{umP4_&*r$WY}QJ|wGm1nt#W{B9A*E|sTN!a@WjYYA@8 zJ>N%s8(;6{f7lvch*XRd{P4?`h)Db_V|OKryE_vqv4nK)40E^1%Gq&@k<0$5UBjG# z4$SMtLANfSuiwNF-`}fRZDU)~8kr4UW=^lylvu)ocz72HFSn57<@z)CHE-c<@zef} zg-g`GTsTSzpL>tKlDuSXIivN#XKza%=C-c3S_F`WqUhr@Ss{xofQbDQT8g&g=<;!uqR!PweM zkHU^2!=AxOOE5TDY_83MNtx=C2yhnFrhb?5qS|D~wAgC^$GD4krgK(z3XqD}_biZr z7;H-x^QfC-e8FhCM^fc!`OZ1nsxfyXzJWO;dC%XrQN6NIwq}tmm^)>*pu(ra8EyBM zX4TcZX0Kq|723#;%_Voa8@od(W^kxDZXgyVgdwP-^<-Q|x7Gs7j@;U>55)w%ptvZT zQnPE;9c}yrU-o^TeE#862yFy=BxOy&@Oz}ZA!@rGqk2iEz1+r;jWrF_#&qrabvw9e z!8&}|pFiZ1xP8ZPw>MVSDxj_pIPKMrqqt@UKYr(uw~M@Sz7+>xtD>Yv7TNFf2CkO9 z(f)nt>iSWgc!K)a2WjFk_#zMg8prpY`_08ZZ4W=4UT$k19R;z&=rxDBbQ~K<``kx6 z296RJE% z4}f@Ad!e!4qEn!gYIXIKd-O)yYjtvEQ`$8g|Z9t zJxHwTgL-U^cbTl~Z9Iu2T+Q}E0hG#~+>7S6X;Oal;af-YWFAb__~zU44Vt#nyhA%j zPam}UGeU|*Vo-FciHbchWAZVl`bBI;Uw!MXb$)dT+6{O5rjub($@i>&Fa!>6!(2eK z^orRmYOFlN3vYke*qV}5bP^6iRbBBbDYxDEFWq6@^>O zv5j{R>}TJoC#NAUi>(wSNy{)le4iHkyMN3pn>VCci9dC2e(4wblbD$h7m91y9l0IZ z-Z{gOyCdb$E)Kf=clon6wI%zJRxZnA*cwc3^`ASn_ckZAe)0r5QQ=dPj;XzaJY2(L zL`^wR<&0lLO|(ubOX_zh;!BSrn3|b}4~kD=2&A@;?}C-Iy?4qq(G_;eV?G|7;OfVR zg)E^Ie3*V!YDblU)qu-QXM!v@_NzJ5Y)`asKkSQF_~!|ThSc*pJtMq%ira+j0JqG3 ztxo3j4@{{RF7h$$b7zzTL9cS=CY(49T1PmB-X~){g>cEH0VPNMb>^iE0oeJ=d?eJ- zI=)o!&w-7a+Sg)OFSRS_QR2D=zvfjQ6q~EDnBkX|>swaldzk~AFxj>zpD^_OGKBLY zYue<(8S;sl3_)UR4=Ep>X>q^%wWbJI;gO$N)Q2%Y?+TiZ;Za!LQhT>cjJG+8@IEvt zIb=A`-=`!@5q+NVK@;$L0TxC!DU*wEWNyJs#dv}6ximbYh)D0O6v3oxXFlt<#gR@d z4v5KJNtzd4qI^TW;P5+SJbMiwZlA3SS99E@-F}v1of$O%WNp1_I8Y)7JPY?$Zk2cy zt32p2XKcBiLDlef>}BAt3o5fUl!gYB79g}BzFJ`SA&9ypg01>+)*mDJa8~_T&~AdI z`oZ_hfsgn#nDKP3;dbH#O|i9l^SWJu;^miTB}PGyAb6H%o-plJM|1LsOz+g#_Jd|a z+QaH3_`^4EoUknCKB;}Qww?KrT(MuaCF>PwlECL8%k{*{`Rl{I9i)eb3V&XDBWJxi zjjIzoW(-$%rN__mZnziXP9y$sMIkZU?WVcyn^5=5zk8}Quq>HQ%p7=TAs^>Mk>fzA zP;PP5$~$XrFk7juf^SPQg$jzG!IpK9h^wL|J&`^q&_$M~GUqvuTx9IKv=x^>ENYW7 z-J-PxiD4X+yv6Z-X7!Q?fg^eNF7GPvj;;Watk{mwohVR#%xHY=DMkF@i5dTX^TvU>;`A25J zlm@ziQUBH2*Zxp}#JB$@X#O+n{I6c;AFu6H9OkZN=;|u`n%fXgg;qmX=Z+_@K1{O;0H6K2eWd0DGv-?4!W1putoDe4Pl=xQ#!a!q& zc^^l9So|qNBQ+Rl(DdBqVQ3`MnYpp7epo zI(6?oNNg`L_iRqf!0!G1=2qhq<=*mlc4#uw5L=z^P}TD#9&v7Wi1*E4Qr&!%B&D)= zMOyj3>*fxB{Mgi%0P;}nS6k_&N*+dsQgUH{ERyRS!(V`; ze2mli?K%!?MnZvB8n>TqX-$ZYwOZEo$9JMiJYGlcm8cDB`d*){$D1l3CO0>550lOCsQ#y5$(^aUeNP+V z=tkZ2Ftxim(5EdhoF%ikY;GYluYY57|0Z~~!Q@>sgK}@BPNcwFBh`wSqmkuKkpWZO zBEkolP3=cj9VK>WBxC)eJRPHQ>C3!Y{Asepp}`PvMn%EJ{h))d;MU+*xApR=Dc!HpvgxUNJW{W^T7PWabVlpoe0?(f^#@_+jUGNB{^k_xj^#@w}} zo({j4KSDD&wd?uNjmaKAI)cRDDp-NCAHBB#n&+@lKNOPm@(M^}X3n%mVQ~y+f1#Kf z;$I*SDx>{@OQr2mIQvb(+)m;pcL@>WlIV`5@Ckborv_yIMLYarx9Sr%Xd+&6e$4l| z8rD6|8h(W3#{B-pBFHeh1*qZ!;w@1HkEMNm;aB@dZ(f=nIug1V-t6*2rv1so0l9`P zeVK_W8{Bn|0z-Q^-@}!hirbYrfJ*z3U(`n-%2szis#WM>&p5#mF9*vx9X0o7_ipW= zOd036D^BS)V@m(@MdYu{jkS-XZNN6Md!Md#w8__cUXJ$7zol?HoLC_mp{m?h=Lml^ zdO{LDwSQi49FSKI>}IjD9!nekbZOE&q7&u8oEKB_CkLf9@NDU^)D<&nsLI-e&P6ts z7kwi8Y~f`#^T;6ze@dB#b=;F57K{P zqJEjL+RKYdxj<;WCq-;d@$~{SK#b%5Gp+2fgPh2t1M@Y}orB$%jw!w)>M)qHCOp|c zIH)Rn%t~G}BIFgt5MoEKxaPXZQx#fh7ZD{0B7Bf$g&@7DJo0EeosAw**xj zi_FdtLTJ)E#h|I%jyq|^YY8Z|G8a?f62*Vop!`Ph-iBWrr=*J7t(aZ8+;WEOt@~Tm z;c!_YMtm^_U)fV4apBy4?JY0sksO@lKnkNP4d!mho4hEji6r%qdCVgR;{J(sGT#`P zUKPf&r$c>oSgXkFULZ^Nu;_7=oHZ?mB{k+Y8@eL)n_Xl32>tH?H%7vKUVJ^1?=O=(oW}?{vD_)fVsx&n*Rx4 z#WHQX`7Pl0zUF&^CH)!;pyDAO1#bNG_4_8jjGlLVaDd!Tw$h)(Dk4`!ZCDvk@4!_w z82r|`ww9-4PFu}RhH9!-jEC(kBO{;kcGe;~0>Ymd5!k#%!FLy?FY_HDpe|R+i(TJN z+@SpRXx$-ox-XPzJ!UcS{weoQup{(jb8{oO;1O(}Ryper-x+%8FZ+gC&dG`M>~)L~ zCJg5=(*r)=qR(f#f^2m-6@1;-dv!(kPT2L#iGCyN@=D z0sj)G3AC!4ZCR|cPJ5PnLv=^u@`vSmaM!JtY(XkhhjYuJi;E-QkRom6&hp*luD7`& z+TG4Fs-x1|mU&#+_=R}XXC&Xbe*2Md^f!}*G_WP82pS67acN-Ki2*HBZlWBEVVLv5 zLi5LbL0Dswm)33T$3028A5rIBX3bYR6o8e26-es29DTC@i=D60^>vrq%4-LZ?-`Pc z7am=R$+nx1TQs3MP0`^n|IEy~yn}RQfDEg4!e*shO`_#xua-+2mlZ7}N?Mm3#f7@p z4-y4LFYBh&({xsfPB~UOp^$v}myh3f;sfFN3AB)d82zaH+X0iwtASVl&1q$#2u)j0 z=||aJQ(ht`943mK+02&h;7kvDM~hK~G?j?+&PT-X5hg3y92JYQnVz~1<5Vm5&fBmVMM>ALO?yRc%t3_ zpfO&69??BU;D+iYgV;jOS9VM;tN$A6jXl7to_p3a6SIJi2e>Z6qt=1bsn@7zAJG~P z#xQ?_)R@FxL%P-a5Y$aaF}jEGhXYHsW2kr$U`ORwd@7wNSuO=Q{q zoy(tHG=DVeftv8MeV0T`yU^p^;-{7{`Cj z2nsn%O)x_7YODA*W=AXU_KdaEKUmk6yN`eFyl?FJ;PgF=WG>kI+G~iTh1lqOuBYt; zp$0STN#$Z@a0^=epYG}mN?QsRwR)tN<3-(0nv^{A=t=#uUYXmh)ns7wP)c?pO)0u? zkC`_cQwP0ulwWA9Ng6}xnVxMj?Y=(FTrgo*-d7I87C-gXn~0A=|G4XwQrb9W^TGxU zq{S92k$yMn*a@u?GTOkJ>VP4(ntGA+ zLN0dW``@yN?3*8Zr~7ALFb((nP|3nfr>n_yJu5|v4--h`PvfPt@=*+bRD{rXwF}P? zw4R~ai?^N5z!9mDc_A(jOki8SsJv5q4j6us+6^~l@J5(yS24q8`_LMwmU)P?C-zj- zhKPQ7{!_~ghz8ew&lgxfP&aJ z@SJYNg;uiugtdtDZC-434Jv&JwYLVl#laY#a4=xEPXVKP+s2yB1i3y{J;^;mgSUT;Y8i`O%I!Wu&%X14f@vx}YF znj?~dN=Mo5+U;Ex=w6n66f-E!?%&iA*!-z!Q^Rm6`1d^M)QMH=MH48YBb=bpvbDqg zKc;CC5&xQ|z0QkjXCu!L+q4>y1wdwI+PkAwQw7#~uT7WWrlB-8Ha(v&!5i)!Ldx{` z7~bz0TWRbWDh}lIMOkwqXJsu9bFa>S`=VCjrW7#^4OHkO3cP9bWwa)`rN$QCjf|Nf z^cty2l??m7sM4LuVEyj0Z*wI~f-Ymx%VZ@xIX7q~5A#`RvWt`_?gV6~D{5s6 zPv&VQPSL*HBmmbkI+sIlk@vDv!(OvgFE!Xqxu-odo&0x^R*?r58n3}Mf48Fp^etvP^h%l1{rKvI1_kQmzrC2;`rBkE2f{v!&*%-1ih#)=X+0S zM}@B`+4kpRUtf<}u=&Q6SGv1W|v)F)u0S-#F&8J#{Kmve-wAm_1pe z!O_@ZHZG7gQ&|8mLfp%mw3YBx<3M}g;_KkMqFu-L`GST#njg#~q0T=S=R&#XI@)2o zp*Q33WZT3lYNLd4+f{{il+>FfXi literal 0 HcmV?d00001 diff --git a/docs/images/acadplan_features.png b/docs/images/acadplan_features.png new file mode 100644 index 0000000000000000000000000000000000000000..d75b70873bf1cda4869ca220d8931e63b3d9bdc0 GIT binary patch literal 9939 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 literal 0 HcmV?d00001 diff --git a/docs/images/add_module.png b/docs/images/add_module.png new file mode 100644 index 0000000000000000000000000000000000000000..0a5fe85b23297b9771fd42502f06d6b088f66a1a GIT binary patch literal 25687 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 literal 0 HcmV?d00001 diff --git a/docs/images/capcalc_current.png b/docs/images/capcalc_current.png new file mode 100644 index 0000000000000000000000000000000000000000..ea2fd3b1af11fca495e44e1f38a37078d30a5739 GIT binary patch literal 6041 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 literal 0 HcmV?d00001 diff --git a/docs/images/capcalc_features.png b/docs/images/capcalc_features.png new file mode 100644 index 0000000000000000000000000000000000000000..a7267c6d9c70689a6a736a600c3321ee9bed0698 GIT binary patch literal 14411 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 literal 0 HcmV?d00001 diff --git a/docs/images/capcalc_set_target.png b/docs/images/capcalc_set_target.png new file mode 100644 index 0000000000000000000000000000000000000000..a21162a0347feee4486b89ffc92b0dc5a6724b05 GIT binary patch literal 15085 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 D4_l*& literal 0 HcmV?d00001 diff --git a/docs/images/edit_module.png b/docs/images/edit_module.png new file mode 100644 index 0000000000000000000000000000000000000000..330c6d0aab9963ca55b4a99b464c311fc44c7dca GIT binary patch literal 8366 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 eSZQ9mBHvaSWdFH0RD=5*PeS>C*gii1 literal 0 HcmV?d00001 diff --git a/docs/images/edit_module_grade.png b/docs/images/edit_module_grade.png new file mode 100644 index 0000000000000000000000000000000000000000..138af7f1d67e7fdab189fc9cbc56e606f53cf45f GIT binary patch literal 3643 zcmb7HXHXMrvkroQC{i>ay?O+K1_TtO1dz}a>0kg6Apz;ch=59ze&`7h6p6847pCJqd0PsHj z$C$=l#R5+{^&08vSOq$+X2e@s+!6ZPqnconY>D#p*|f1V84mOWXFvGayACQ)Jgc(W z_;XG&(7OMek~}0S=Y5PkI5j*)EINW$`m%x6_Tl`vW)$=EAP<*$#`yfryN#r%v8dVk zOgFAxi&uyA!7P9{tG11{@@vBD#{d{pAAoc!hY5aKkGYlOZ&nPDoAVR`x)9hLL2eiu zNu_2bc?{JTO__bVi1Y_wgu`27dZY3F>K4C!M~6#~oql{^rmIs}3s&g@>>(xEygbsL zzmK+b9ElJ;99)Kb1 zgi}ZaiR+MR>Rp@q4aX#|CM^eQV@k-cGC!<6-}cDvbkZGN60c>VqlqcG!8>t7b%z@u z%{fJqTr3M4S(V+XS|v`}*a0wBEbY&Ak&hF#a5Yt^hi5tqz6LmVkdi81x&Fu$IkfVa zAD2>7_;6|>@oL9jl!t90)_D2gP@6H;=q6P~NxLF`0g%+0iqOotmn&*kdgOpO5z}K!T)!R{}hC`+V!h2CRFY|!}$#$F|Q~I>-SMJEwqXF_&xG&Z%2DgA**@oUdgSHDn9rjg1d^)DYT|w z<+xOa-s&$8=sxM+cVu>D|2t}xjm#i$Wex!Q>Mj?!r{jL z4TwDo|A;BL(=>idB^41-#LkY$>eCVpxYoO6o9F$<&SdAVR|hfBf%FYDxmMv>LTF!$8mK6 zB*A1his`cSl%#r7U}aTkUD#b7+*4DRgGx)DoyGK$i2+5hMqMkAfuD|gr5tFdKO2w{ zNcznEK@LA(@nbspc|>R6(i@#M{JSnkuv%%5a`*#%>!u{(E_SjVmD7Oqr4pJ~5SQRV zt#FGCoYGOTg*zYY9gG+e-xgIgRSNgq{}9Sb+1(H5v1^y6Jwi$bx>g8XYtEL#8aN7F z`2GD?ELQTC$rC}19BgFlBPuTP+&TmgpI(-o|Fle_9Xu0SEcpCd{k4E|Lp7QKvt}Lr zn0s4b(bIAlJ|;eAf}b|<>yW7pl5dic^c6t~jk3*+`_JI}M=6224@-xaq4`_g=bB6G z;C*OZ&4@E16|!@vuxv{@g5YV`en?;z_wHbea@G zfEBwe!&CcWomaS%Ar$(4JewBm=HEe-{9PW}bzR&{0lsUPpLK40fy3Sr{MMrn_W@j9 z9pW9$6@E{sb)xClzsa${4sEDjOz+V4y;SLa*!~ z0!@y~88sU@-+8T*+ordgK%T1@{#sU0_4PJbiB>c)qYD;=hbw&O8keoZY@r;3h_vMF|_a3xfS9z}Qe8(N;} zs4;IiP~0^5VJdkQ#HlpoQT8RugGcwHL`N+4^?tn^5sf7{?DQ|Xfrn1>HP;SkQr6oG z9}7vvehuLA@hCYi_HNi;S#905>O>)MVVj);0L#2eqfvJfEDzE|ZC12_?0Nts-o0s( z0_g@-ME1dw_{#8VRKaTQSUB{JFPEt*WdGn!tY{RykJH-cOAO`JX>~Uc@_vfHZ@0 zw&KQoa+|Sywq<8V{ENqxr+(bIuvhFjcrXlry@Fj_y^*x!B)k>$-nVNnmVpe8Sy%dx z$Rsix4qe#&M!mSigv(Lu)MNn|Nh!iMxAV9@`7~tcSBR;KGTQ$FNS`^O!|>}w@4UTd zYf{JKM?H!dpyBm1t#X>Ac~RW<4z}~%(?Z`KtO_Y-n(W@Z#f%kO255(}zoG9&JdkZJ zCtqG@ig=KM9Q>vN$yO(hK*vT=7hN4Dg(S>u!msa)<>db+&#WYNuNW!*9?H9ab+#{3 zxsdq@Y%*QKikd?njr*C{uFr zpKQ$eX|3nBVN7p9uzK82-+9yUq9axRmA9d^^Q*se`%B=ZJBf%)xCfIs4@=wgjmhr) zi*%-4yeI~2#ktp+kZ7qtDj({eG= z>+|mtuj1U}nhj~&Z!fbHmY>H7Fu^=Su= zYSD)=2QmO)#eM#=fDLRtthl;wza98h6!kz)9{Ovu=k2qEtxC`Icl5+h^^>{L#D$}~ zG9`tcog(ak%@bY41K5Te20_td+tIn^ZtwPD$esF0A30>Z2av$$ywwxb4&0J;gye+a z(lLhwiEr_W-=Ebk-QV7+DgHf^+0YK}t7!p^k+&-=TZ!=`54;eYzVcK?=B6*X@k8{i zCJt4>2XTEiz{QW!-6~;G1sm^p6(7R;Q*ugf-fD@+ALq#K#VAsn#*a%02tJS7Y@CSSpM@~>=*YcDV=k$XU+@5 zFS%IlXdt6d0CuFLIKc+Mt<#{HS&_>Rs_=_mM@l};(a9FEiHKVRq5Hq|aKUX;)H>nyJCFX29m)Y zplcw|{camWSizyD4xlWVI{hVm)hTJufxnHctsU&xKiIoMl z4jfF|##~CzX1gCp#=k~EEk@{~Y>s89OS)<`Hziht^D+8xoaaMES!4E0Owd5U1o~TS za&Se=AE{-MKMXZO2o4I`=b%=kv%uQS|kAV;^2p8c z-6*zXTp-i$M8D?jhaINXR|1Hv2NvupKtMg@|2hrdvtAu>UCz^QGA?KoJ^AnfjG*`Q Jh`LUp{{l<88L9vP literal 0 HcmV?d00001 diff --git a/docs/images/edit_module_semester.png b/docs/images/edit_module_semester.png new file mode 100644 index 0000000000000000000000000000000000000000..b0706dde066e395cd159a479dab2740771792e45 GIT binary patch literal 6314 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 Ssw6xO(0cSlqfYJl+kXRP=sJ%8 literal 0 HcmV?d00001 diff --git a/docs/images/exit_PlanNUS.png b/docs/images/exit_PlanNUS.png new file mode 100644 index 0000000000000000000000000000000000000000..9de233a2ddd1da5b4fdce030b686a102b26b50d0 GIT binary patch literal 4740 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

bS}M@4Q6^2yb*u?qp(#kS14I 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 literal 0 HcmV?d00001 diff --git a/docs/images/remove_module.png b/docs/images/remove_module.png new file mode 100644 index 0000000000000000000000000000000000000000..2265218114e76f606f5f503e45e9db6333a4e684 GIT binary patch literal 5134 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 Ur6uR?dw2jfB@M+2d5e($0*m0@HUIzs literal 0 HcmV?d00001 diff --git a/docs/team/Harry.md b/docs/team/Harry.md new file mode 100644 index 0000000000..d078b1a4d4 --- /dev/null +++ b/docs/team/Harry.md @@ -0,0 +1,7 @@ +# Harry Lee - Project Portfolio Page + +## Overview + +### Summary of Contributions + +Edit, Remove Module in Academic Planner diff --git a/docs/team/Khenus.md b/docs/team/Khenus.md new file mode 100644 index 0000000000..3bf5f51791 --- /dev/null +++ b/docs/team/Khenus.md @@ -0,0 +1,7 @@ +# Khenus Tan - Project Portfolio Page + +## Overview + +### Summary of Contributions + +JSON object data from NUSMODs diff --git a/docs/team/Lam.md b/docs/team/Lam.md new file mode 100644 index 0000000000..73e4bf8e1b --- /dev/null +++ b/docs/team/Lam.md @@ -0,0 +1,7 @@ +# Jerrold Lam - Project Portfolio Page + +## Overview + +### Summary of Contributions + +Add Module in Academic Planner, module and person object diff --git a/docs/team/Vanessa.md b/docs/team/Vanessa.md new file mode 100644 index 0000000000..eec0b36ca4 --- /dev/null +++ b/docs/team/Vanessa.md @@ -0,0 +1,7 @@ +# Vanessa - Project Portfolio Page + +## Overview + +### Summary of Contributions + +Calendar Printer \ No newline at end of file diff --git a/docs/team/Zihao.md b/docs/team/Zihao.md new file mode 100644 index 0000000000..d718dc9c6d --- /dev/null +++ b/docs/team/Zihao.md @@ -0,0 +1,7 @@ +# Ju Zihao - Project Portfolio Page + +## Overview + +### Summary of Contributions + +Cap Calculator diff --git a/docs/team/johndoe.md b/docs/team/johndoe.md deleted file mode 100644 index ab75b391b8..0000000000 --- a/docs/team/johndoe.md +++ /dev/null @@ -1,6 +0,0 @@ -# John Doe - Project Portfolio Page - -## Overview - - -### Summary of Contributions diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF new file mode 100644 index 0000000000..593f8abf3a --- /dev/null +++ b/src/main/java/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Main-Class: seedu.duke.PlanNus + diff --git a/src/main/java/seedu/duke/Duke.java b/src/main/java/seedu/duke/Duke.java deleted file mode 100644 index a1623431d5..0000000000 --- a/src/main/java/seedu/duke/Duke.java +++ /dev/null @@ -1,17 +0,0 @@ -package seedu.duke; - -import seedu.duke.moduledata.ModuleDatum; -import seedu.duke.moduledata.ModuleInitializer; - -public class Duke { - /** - * Main entry-point for the java.duke.Duke application. - */ - public static void main(String[] args) { - ModuleInitializer allModules = new ModuleInitializer(); - Integer idx = allModules.getModuleMap().get("CS1010"); - ModuleDatum cs1010Data = allModules.getModuleFullDetails()[idx]; - - System.out.println(cs1010Data.toString()); - } -} diff --git a/src/main/java/seedu/duke/PlanNus.java b/src/main/java/seedu/duke/PlanNus.java new file mode 100644 index 0000000000..5761fb8bda --- /dev/null +++ b/src/main/java/seedu/duke/PlanNus.java @@ -0,0 +1,96 @@ +package seedu.duke; + +import seedu.duke.apps.moduleloader.ModuleLoader; +import seedu.duke.globalcommons.App; +import seedu.duke.objects.Person; +import seedu.duke.parser.AppParser; +import seedu.duke.ui.Ui; + +/** + * Class representing main function of PlanNUS. + */ +public class PlanNus { + private static final String WELCOME_MESSAGE = "Welcome to PlanNUS!"; + private static final String WELCOME_BACK_MESSAGE = "Welcome back to PlanNUS Main Menu!"; + private static final String EXIT_MESSAGE = "Thanks for using PlanNUS! We hope to see you again!"; + private static final String HELP_MESSAGE = "\tFor academic planner, type \n" + + "\tFor CAP calculator, type \n" + + "\tTo exit PlanNUS, type "; + + private Ui ui; + private ModuleLoader allModules; + private Person currentPerson; + private boolean isStartupSuccessfully; + + /** + * Default constructor for PlanNus. + */ + public PlanNus() { + try { + this.ui = new Ui(); + this.allModules = new ModuleLoader(); + this.currentPerson = new Person("Bob"); + this.isStartupSuccessfully = true; + } catch (Exception e) { + this.isStartupSuccessfully = false; + System.out.println(e.getMessage()); + } + } + + /** + * Main entry function for PlanNUS. + */ + public void run() { + assert isStartupSuccessfully == true : "Startup is successful"; + if (isStartupSuccessfully) { + showWelcomeMessage(); + boolean isExit = false; + + while (!isExit) { + try { + String userInput = ui.getScanner().nextLine(); + App selectedApp = AppParser.parse(userInput, allModules, currentPerson, ui); + selectedApp.run(); + isExit = selectedApp.getIsExit(); + if (!isExit) { + showWelcomeBackMessage(); + } + } catch (Exception e) { + System.out.println(e.getMessage()); + } + } + showExitMessage(); + } + } + + /** + * Prints exit message for user just before termination of program. + */ + private void showExitMessage() { + System.out.println(EXIT_MESSAGE); + } + + /** + * Prints welcome back message for user when user returns back to main menu. + */ + private void showWelcomeBackMessage() { + System.out.println(WELCOME_BACK_MESSAGE); + System.out.println(HELP_MESSAGE); + } + + /** + * Prints welcome message for user upon first entry into PlanNUS. + */ + private void showWelcomeMessage() { + System.out.println(WELCOME_MESSAGE); + System.out.println(HELP_MESSAGE); + } + + /** + * Main executable code. + * @param args arguments from command line + */ + public static void main(String[] args) { + new PlanNus().run(); + } +} diff --git a/src/main/java/seedu/duke/apps/AcademicPlanner.java b/src/main/java/seedu/duke/apps/AcademicPlanner.java deleted file mode 100644 index 5a76c5979c..0000000000 --- a/src/main/java/seedu/duke/apps/AcademicPlanner.java +++ /dev/null @@ -1,354 +0,0 @@ -package seedu.duke.apps; - -import seedu.duke.moduledata.ModuleInitializer; -import seedu.duke.objects.Module; -import seedu.duke.objects.Person; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Scanner; - -public class AcademicPlanner { - //CONSTANTS - private final int STARTING_SEMESTER_INDEX = 1; - private final int FINAL_SEMESTER_INDEX = 10; - private final String ERROR_INVALID_COMMAND = "INVALID COMMAND"; - private final String ERROR_INVALID_SEMESTER_INDEX = "INVALID SEMESTER INDEX"; - private final String ERROR_INVALID_GRADE = "INVALID GRADE VALUE"; - private final String ERROR_NOT_OFFERED = " IS NOT OFFERED BY NUS"; - private final String ERROR_DUPLICATE_MOD = "You already have this mod on your calendar!"; - private final String ERROR_NOT_ADDED = "You have not added this module into your list yet"; - private final String ERROR_EDIT_OPTION = "Number entered does not correspond to any feature"; - private final String WELCOME_MESSAGE = "\nWelcome to Academic Planner!"; - private final String ADD_COMMAND = "ADD"; - private final String EDIT_COMMAND = "EDIT"; - private final String REMOVE_COMMAND = "REMOVE"; - private final String VIEW_COMMAND = "VIEW"; - private final String EXIT_COMMAND = "EXIT"; - private final String COMMANDS_LIST = "Available commands are: \n" + - " add \n" + - " edit \n" + - " remove \n" + - " view\n" + - " exit\n" + - "Type a command to continue..."; - - private ModuleInitializer allModules; - private ArrayList modulesList; - private HashMap modulesAddedMap; - private Person currentPerson; - - public AcademicPlanner(ModuleInitializer allModules, Person currentPerson) { - this.allModules = allModules; - this.modulesList = currentPerson.getModulesList(); - this.modulesAddedMap = currentPerson.getModulesAddedMap(); - this.currentPerson = currentPerson; - } - - private void printCommandsList() { - System.out.println(COMMANDS_LIST); - } - - public void planner() { - System.out.println(WELCOME_MESSAGE); - printCommandsList(); - Scanner scanner = new Scanner(System.in); - String fullInput = scanner.nextLine().toUpperCase(); - String[] inputs = fullInput.split(" "); - - while (!inputs[0].equals(EXIT_COMMAND)) { - if (inputs[0].equals(ADD_COMMAND)) { - addModule(scanner, inputs[1]); - } else if (inputs[0].equals(EDIT_COMMAND)) { - editModule(scanner, inputs[1]); - } else if (inputs[0].equals(REMOVE_COMMAND)) { - removeModule(inputs[1]); - } else if (inputs[0].equals(VIEW_COMMAND)) { -// printCalendar(); - } else { - System.out.println(ERROR_INVALID_COMMAND); - } - printCommandsList(); - fullInput = scanner.nextLine().toUpperCase(); - inputs = fullInput.split(" "); - } - System.out.println("Thank you for using Academic Planner!"); - } - - /** - * Adds a module to the user's academic calendar if it exists in ModuleDatum, - * else does not add module into user's academic calendar. - * Validates user's input semester and grade. - * If either is invalid, does not add module into user's academic calendar. - */ - private void addModule(Scanner in, String moduleCode) { - try { - if (checkIfModOfferedByNUS(moduleCode)) { - if (checkIfModTaken(moduleCode)) { - System.out.println(ERROR_DUPLICATE_MOD); - } - - System.out.println("Semester you plan to take " + moduleCode.toUpperCase() + "?"); - String userInput = in.nextLine(); - int semesterValue = Integer.parseInt(userInput); - - if (!checkValidSemester(semesterValue)) { - System.out.println(ERROR_INVALID_SEMESTER_INDEX); - return; - } - - System.out.println("Grade received for " + moduleCode.toUpperCase() +"?"); - String gradeValue = in.nextLine(); - if (!checkValidGrade(gradeValue)) { - System.out.println(ERROR_INVALID_GRADE); - return; - } - - int moduleCredit = getModuleCreditForModule(moduleCode); - Module newModuleToAdd = new Module(moduleCode, semesterValue, gradeValue, moduleCredit); - modulesList.add(newModuleToAdd); - modulesAddedMap.put(moduleCode, newModuleToAdd); - - //Incrementing total MC regardless of SU - currentPerson.setCurrentMC(currentPerson.getCurrentMC() + moduleCredit); - - //Incrementing total MC after SU only if module is not SU - if (newModuleToAdd.getCAP() != -1.00) { - currentPerson.setCurrentMCAfterSU(currentPerson.getCurrentMCAfterSU() + moduleCredit); - double newMCxGrade = newModuleToAdd.getCAP() * moduleCredit; - currentPerson.setCurrentTotalMCxGrade(currentPerson.getCurrentTotalMCxGrade() + newMCxGrade); - } - System.out.println(newModuleToAdd.getModuleCode() - + " added into Semester " + semesterValue + "."); - } else { - System.out.println(moduleCode + ERROR_NOT_OFFERED); - } - } catch (Exception e) { - System.out.println(ERROR_INVALID_COMMAND); - } - } - - /** - * Allows user to edit the module entry of his academic calendar. - * Parameters allowed to change are semesterIndex or Grade. - */ - private void editModule(Scanner in, String moduleCode) { - try { - if (checkIfModTaken(moduleCode)) { - System.out.println("Enter the number corresponding to the feature you wish to edit:" + - "\n1) Semester\n2) Grade"); - String choice = in.nextLine(); - if (choice.equals("1")) { - System.out.println("Enter the new semester value: "); - String newValue = in.nextLine(); - if (!checkValidSemester(Integer.parseInt(newValue))) { - System.out.println(ERROR_INVALID_SEMESTER_INDEX); - return; - } - for (Module item : modulesList) { - if (item.getModuleCode().equals(moduleCode)) { - item.setSemesterIndex(Integer.parseInt(newValue)); - break; - } - } - modulesAddedMap.get(moduleCode).setSemesterIndex(Integer.parseInt(newValue)); - System.out.println("Semester for " + moduleCode + " successfully updated!"); - } else if (choice.equals("2")) { - System.out.println("Enter the new grade: "); - String gradeValue = in.nextLine().toUpperCase(); - if (!checkValidGrade(gradeValue)) { - System.out.println(ERROR_INVALID_GRADE); - return; - } - - double oldCap; - double newCap; - - System.out.println(moduleCode); - - for (Module item : modulesList) { - if (item.getModuleCode().equals(moduleCode)) { - oldCap = item.getCAP(); - item.setGrade(gradeValue); - newCap = item.getCAP(); - - if (oldCap == -1.00 && newCap != -1.00) { //Case where previously was SU but new is not SU - currentPerson.setCurrentMCAfterSU(currentPerson.getCurrentMCAfterSU() + item.getModuleCredit()); - double newMCxGrade = newCap * item.getModuleCredit(); - currentPerson.setCurrentTotalMCxGrade(currentPerson.getCurrentTotalMCxGrade() + newMCxGrade); - } else if (oldCap != -1.00 && newCap == -1.00) { //Case where previously was not SU but now is SU - currentPerson.setCurrentMCAfterSU(currentPerson.getCurrentMCAfterSU() - item.getModuleCredit()); - double MCxGradeToMinus = oldCap * item.getModuleCredit(); - currentPerson.setCurrentTotalMCxGrade(currentPerson.getCurrentTotalMCxGrade() - MCxGradeToMinus); - } else if (oldCap != newCap) { //Case where previously and new cap are not SU but not the same - double oldMCxGrade = oldCap * item.getModuleCredit(); - double newMCxGrade = newCap * item.getModuleCredit(); - double MCxGradeToSet = newMCxGrade - oldMCxGrade; - currentPerson.setCurrentTotalMCxGrade(currentPerson.getCurrentTotalMCxGrade() + MCxGradeToSet); - } - break; - } - } - modulesAddedMap.get(moduleCode).setGrade(gradeValue); - - - //Below output are for debugging purposes - System.out.println("Current total MC taken: " + currentPerson.getCurrentMC()); - System.out.println("Current total MC x Grade: " + currentPerson.getCurrentTotalMCxGrade()); - System.out.println("Current total MC after SU: " + currentPerson.getCurrentMCAfterSU()); - System.out.println("Current CAP: " + currentPerson.getCurrentTotalMCxGrade() / (double) currentPerson.getCurrentMCAfterSU()); - - - System.out.println("Grade for " + moduleCode + " successfully updated!"); - } else { - System.out.println(ERROR_EDIT_OPTION); - } - } else { - System.out.println(ERROR_NOT_ADDED); - } - } catch (Exception e) { - System.out.println(ERROR_INVALID_COMMAND); - } - } - - /** - * Removes moduleCode from user's academic calendar if it exists, - * else prompts user of error. - */ - private void removeModule(String moduleCode) { - try { - if (checkIfModTaken(moduleCode)) { - modulesAddedMap.remove(moduleCode); - for (Module item : modulesList) { - if (item.getModuleCode().equals(moduleCode)) { - System.out.println(item.getModuleCode() + " has been removed from the list"); - - //Decreasing total MC regardless of SU - currentPerson.setCurrentMC(currentPerson.getCurrentMC() - item.getModuleCredit()); - - //Decreasing total MC after SU only if module is not SU - if (item.getCAP() != -1.00) { - currentPerson.setCurrentMCAfterSU(currentPerson.getCurrentMCAfterSU() - item.getModuleCredit()); - double MCxGradeToMinus = item.getCAP() * item.getModuleCredit(); - currentPerson.setCurrentTotalMCxGrade(currentPerson.getCurrentTotalMCxGrade() - MCxGradeToMinus); - } - - modulesList.remove(item); - break; - } - } - - //Below output are for debugging purposes - System.out.println("Current total MC taken: " + currentPerson.getCurrentMC()); - System.out.println("Current total MC x Grade: " + currentPerson.getCurrentTotalMCxGrade()); - System.out.println("Current total MC after SU: " + currentPerson.getCurrentMCAfterSU()); - System.out.println("Current CAP: " + currentPerson.getCurrentTotalMCxGrade() / (double) currentPerson.getCurrentMCAfterSU()); - } else { - System.out.println(ERROR_NOT_ADDED); - } - } catch (Exception e) { - System.out.println(ERROR_INVALID_COMMAND); - } - } - - /** - * Returns true if module code is offered by NUS, - * else returns false. - * @param moduleCode input module code - * @return boolean of module code in ModuleDatum - */ - private boolean checkIfModOfferedByNUS(String moduleCode) { - return (allModules.getModuleMap().get(moduleCode) > -1); - } - - /** - * Returns tru if module is in the user's academic calendar - * else returns false. - * - * @param moduleCode moduleCode to check - * @return boolean - */ - private boolean checkIfModTaken(String moduleCode) { - return (modulesAddedMap.containsKey(moduleCode)); - } - - /** - * Returns true if semsesterIndex is a valid semesterIndex - * else returns false - * - * @param semesterIndex semesterIndex to check - * @return false - */ - private boolean checkValidSemester (int semesterIndex) { - return (semesterIndex >= STARTING_SEMESTER_INDEX && semesterIndex <= FINAL_SEMESTER_INDEX); - } - - /** - * Returns true if grade is a Grade option offered by NUS, - * else returns false. - * - * @param grade grade to check - * @return boolean - */ - private boolean checkValidGrade(String grade) { - switch (grade.toUpperCase()) { - case "A+": - //Fallthrough - case "A": - //Fallthrough - case "A-": - //Fallthrough - case "B+": - //Fallthrough - case "B": - //Fallthrough - case "B-": - //Fallthrough - case "C+": - //Fallthrough - case "C": - //Fallthrough - case "D+": - //Fallthrough - case "D": - //Fallthrough - case "F": - //Fallthrough - case "CS": //Completed Satisfactorily - //Fallthrough - case "CU": //Completed Unsatisfactorily - //Fallthrough - case "S": //Satisfactory - //Fallthrough - case "U": //Unsatisfactory - //Fallthrough - case "W": //Withdrawn - //Fallthrough - case "IC": //Incomplete - //Fallthrough - case "IP": //In progress - //Fallthrough - case "AUD": //Audit - //Fallthrough - case "WU": //Withdrawn from University - //Fallthrough - case "EXE" : //Exempted - //Fallthrough - case "NT": //Not taken - return true; - default: - return false; - } - } - - /** - * Function to return module credits for module code - * - * @param moduleCode string of module code - * @return int of module credit - */ - private int getModuleCreditForModule(String moduleCode) { - int mapIndex = allModules.getModuleMap().get(moduleCode); - return allModules.getModuleFullDetails()[mapIndex].getModuleCredit(); - } -} diff --git a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java new file mode 100644 index 0000000000..c9b7e791dd --- /dev/null +++ b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java @@ -0,0 +1,60 @@ +package seedu.duke.apps.academicplanner; + +import seedu.duke.apps.moduleloader.ModuleLoader; +import seedu.duke.globalcommons.App; +import seedu.duke.globalcommons.Command; +import seedu.duke.objects.Person; +import seedu.duke.ui.Ui; + +/** + * Class representing the Academic Planner Application. + */ +public class AcademicPlannerApp extends App { + private static final String WELCOME_MESSAGE = "\nWelcome to Academic Planner!"; + private static final String EXIT_MESSAGE = "Thank you for using Academic Planner!"; + private static final String COMMANDS_LIST = "Available commands are:\n" + + "\tadd \n" + + "\tedit \n" + + "\tremove \n" + + "\tview\n" + + "\texit\n" + + "Type a command to continue..."; + + private final ModuleLoader allModules; + private final Person currentPerson; + private Ui ui; + + public AcademicPlannerApp(ModuleLoader allModules, Person currentPerson, Ui ui) { + this.allModules = allModules; + this.currentPerson = currentPerson; + this.ui = ui; + } + + /** + * Main entry point for the Academic Planner Application. + */ + public void run() { + System.out.println(WELCOME_MESSAGE); + System.out.println(COMMANDS_LIST); + boolean isExit = false; + + while (!isExit) { + try { + String userInput = ui.getScanner().nextLine(); + Command commandInput = AcademicPlannerParser.parse(userInput, allModules, currentPerson, ui); + commandInput.execute(); + isExit = commandInput.getIsExit(); + } catch (Exception e) { + System.out.println(e.getMessage()); + } + } + showExitMessageAcademicPlanner(); + } + + /** + * Prints exit message for Academic Planner. + */ + private void showExitMessageAcademicPlanner() { + System.out.println(EXIT_MESSAGE); + } +} diff --git a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java new file mode 100644 index 0000000000..3b0201b441 --- /dev/null +++ b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java @@ -0,0 +1,67 @@ +package seedu.duke.apps.academicplanner; + +import seedu.duke.apps.moduleloader.ModuleLoader; +import seedu.duke.apps.academicplanner.commands.AddModuleCommand; +import seedu.duke.apps.academicplanner.commands.EditModuleCommand; +import seedu.duke.apps.academicplanner.commands.PrintCalenderCommand; +import seedu.duke.apps.academicplanner.commands.RemoveModuleCommand; +import seedu.duke.exceptions.CommandParserException; +import seedu.duke.globalcommons.Command; +import seedu.duke.objects.Person; +import seedu.duke.ui.Ui; +import java.util.Scanner; + +/** + * Class representing the parser for the academic parser. Used in the academic parser app. + */ +public class AcademicPlannerParser { + private static final int MODULE_CODE_INDEX = 1; + public static final String NEW_LINE = "\n"; + private static final String EXITING_CURRENT_COMMAND = "Exiting current command back to Academic Planner Main Menu."; + private static final String ERROR_INVALID_COMMAND = "INVALID COMMAND"; + private static final String ADD_COMMAND = "ADD"; + private static final String EDIT_COMMAND = "EDIT"; + private static final String REMOVE_COMMAND = "REMOVE"; + private static final String VIEW_COMMAND = "VIEW"; + private static final String EXIT_COMMAND = "EXIT"; + private static final String EXIT_MESSAGE = "Thank you for using Academic Planner!"; + private static final String COMMANDS_LIST = "Available commands are:\n" + + "\tadd \n" + + "\tedit \n" + + "\tremove \n" + + "\tview\n" + + "\texit\n" + + "Type a command to continue..."; + + /** + * Command to process the user inputs and to return the intended command with the correct parameters. + * + * @param userInput input of user + * @param allModules data of all modules offered by NUS + * @param currentPerson person using the app + * @param ui ui for output + * @return Command to be executed + * @throws CommandParserException to return with error message + */ + public static Command parse(String userInput, ModuleLoader allModules, Person currentPerson, Ui ui) + throws CommandParserException { + String[] inputs = userInput.toUpperCase().split(" "); + Scanner in = ui.getScanner(); + + if (inputs[0].equals(ADD_COMMAND)) { + return new AddModuleCommand(allModules, currentPerson, in, inputs[MODULE_CODE_INDEX]); + } else if (inputs[0].equals(EDIT_COMMAND)) { + return new EditModuleCommand(allModules, currentPerson, in, inputs[MODULE_CODE_INDEX]); + } else if (inputs[0].equals(REMOVE_COMMAND)) { + return new RemoveModuleCommand(allModules, currentPerson, in, inputs[MODULE_CODE_INDEX]); + } else if (inputs[0].equals(VIEW_COMMAND)) { + System.out.println("Sorry this function is not ready yet!"); + return new PrintCalenderCommand(); + //TODO Add in print calender + } else if (inputs[0].equals(EXIT_COMMAND)) { + return new Command(true); + } else { + throw new CommandParserException(ERROR_INVALID_COMMAND + NEW_LINE + EXITING_CURRENT_COMMAND); + } + } +} diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java new file mode 100644 index 0000000000..3bb8cf80bc --- /dev/null +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java @@ -0,0 +1,106 @@ +package seedu.duke.apps.academicplanner.commands; + +import seedu.duke.apps.moduleloader.ModuleLoader; +import seedu.duke.apps.academicplanner.commons.AddUtils; +import seedu.duke.apps.academicplanner.commons.ModuleValidator; +import seedu.duke.apps.academicplanner.exceptions.AcademicException; +import seedu.duke.globalcommons.Command; +import seedu.duke.objects.Person; +import java.util.Scanner; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * Class representing an add module command from the academic planner. + */ +public class AddModuleCommand extends Command { + private static final String ERROR_INVALID_COMMAND = "INVALID COMMAND"; + private static final String ERROR_INVALID_SEMESTER_INDEX = "INVALID SEMESTER INDEX"; + private static final String ERROR_INVALID_GRADE = "INVALID GRADE VALUE"; + private static final String ERROR_NOT_OFFERED = " IS NOT OFFERED BY NUS"; + private static final String ERROR_DUPLICATE_MOD = "You already have this mod on your calendar!"; + private static final String VALID_GRADES = "Valid grades are:\n" + + "\tLetter Grades: A+, A, A-, B+, B, B-, C+, C, D+, D, F\n" + + "\tSpecial Grades: CS, CU, S, U, W, IC, IP, AUD, WU, EXE\n" + + "\tIf you have yet to have a grade for the module: NT"; + private static final String VALID_SEMESTERS = "Valid semesters are integers from 1 to 10, inclusive"; + + private static final Logger logger = Logger.getLogger("AddModuleCommand.java"); + private AddUtils addUtils; + private ModuleValidator moduleValidator; + private Scanner in; + private String moduleCode; + + public AddModuleCommand(ModuleLoader allModules, Person currentPerson, Scanner in, String moduleCode) { + this.addUtils = new AddUtils(allModules, currentPerson); + this.moduleValidator = new ModuleValidator(allModules, currentPerson); + this.in = in; + this.moduleCode = moduleCode; + } + + /** + * Adds a module to the user's academic calendar if it exists in FullModule, + * else does not add module into user's academic calendar. + * Validates user's input semester and grade. + * If either is invalid, does not add module into user's academic calendar. + */ + @Override + public void execute() throws AcademicException { + logger.setLevel(Level.WARNING); + logger.log(Level.INFO,"Executing add command."); + if (!moduleValidator.isModOfferedByNus(moduleCode)) { + logger.log(Level.WARNING,"Module entered not offered by NUS."); + throw new AcademicException(moduleCode + ERROR_NOT_OFFERED); + } + + if (moduleValidator.isModTakenByUser(moduleCode)) { + logger.log(Level.WARNING,"Module entered is duplicated."); + throw new AcademicException(ERROR_DUPLICATE_MOD); + } + + promptUserToEnterSemester(); + String userInput = in.nextLine().trim(); + + int semesterValue; + try { + semesterValue = Integer.parseInt(userInput); + } catch (Exception e) { + logger.log(Level.WARNING,"Semester entered is not an integer."); + throw new AcademicException(ERROR_INVALID_COMMAND); + } + + if (!moduleValidator.isValidSemester(semesterValue)) { + logger.log(Level.WARNING,"Semester entered is invalid."); + throw new AcademicException(ERROR_INVALID_SEMESTER_INDEX); + } + + promptUserToEnterGrade(); + String gradeValue = in.nextLine().trim().toUpperCase(); + + if (!moduleValidator.isValidGrade(gradeValue)) { + logger.log(Level.WARNING,"Grade entered is invalid."); + throw new AcademicException(ERROR_INVALID_GRADE); + } + int moduleCredit = addUtils.getModuleCreditForModule(moduleCode); + assert semesterValue > 0; + assert moduleCredit >= 0; + addUtils.addModuleToUser(moduleCode, semesterValue, gradeValue, moduleCredit); + logger.log(Level.INFO,"Finish executing add command."); + } + + /** + * Prints prompt and help messages for user to enter module's grade. + */ + private void promptUserToEnterGrade() { + System.out.println("Grade received for " + moduleCode.toUpperCase() + "?"); + System.out.println(VALID_GRADES); + } + + /** + * Prints prompt and help messages for user to enter module's semester taken. + */ + private void promptUserToEnterSemester() { + System.out.println("Semester you plan to take " + moduleCode.toUpperCase() + "?"); + System.out.println(VALID_SEMESTERS); + } +} diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/EditModuleCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/EditModuleCommand.java new file mode 100644 index 0000000000..6570ad87e5 --- /dev/null +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/EditModuleCommand.java @@ -0,0 +1,61 @@ +package seedu.duke.apps.academicplanner.commands; + +import seedu.duke.apps.moduleloader.ModuleLoader; +import seedu.duke.apps.academicplanner.commons.EditUtils; +import seedu.duke.apps.academicplanner.commons.ModuleValidator; +import seedu.duke.apps.academicplanner.exceptions.AcademicException; +import seedu.duke.globalcommons.Command; +import seedu.duke.objects.Person; +import java.util.Scanner; + +/** + * Class representing an edit module command from the academic planner. + */ +public class EditModuleCommand extends Command { + private static final String EDIT_SEMESTER = "1"; + private static final String EDIT_GRADE = "2"; + private static final String ERROR_INVALID_COMMAND = "INVALID COMMAND"; + private static final String ERROR_NOT_ADDED = "You have not added this module into your list yet"; + private static final String ERROR_EDIT_OPTION = "Number entered does not correspond to any feature"; + public static final String PROMPT_EDIT_CHOICES = "Enter the number corresponding to the feature you wish to edit:\n" + + "\t1) Semester\n" + + "\t2) Grade"; + + private EditUtils editUtils; + private ModuleValidator moduleValidator; + private Scanner in; + private String moduleCode; + + public EditModuleCommand(ModuleLoader allModules, Person currentPerson, Scanner in, String moduleCode) { + this.editUtils = new EditUtils(allModules, currentPerson); + this.moduleValidator = new ModuleValidator(allModules, currentPerson); + this.in = in; + this.moduleCode = moduleCode; + } + + /** + * Allows user to edit the module entry of his academic calendar. + * Parameters allowed to change are semesterIndex or Grade. + */ + @Override + public void execute() throws AcademicException { + try { + if (moduleValidator.isModTakenByUser(moduleCode)) { + System.out.println(PROMPT_EDIT_CHOICES); + String choice = in.nextLine().trim(); + + if (choice.equals(EDIT_SEMESTER)) { + editUtils.editModuleSemester(in, moduleCode); + } else if (choice.equals(EDIT_GRADE)) { + editUtils.editModuleGrade(in, moduleCode); + } else { + throw new AcademicException(ERROR_EDIT_OPTION); + } + } else { + throw new AcademicException(ERROR_NOT_ADDED); + } + } catch (Exception e) { + throw new AcademicException(ERROR_INVALID_COMMAND); + } + } +} diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java new file mode 100644 index 0000000000..4868a52ca3 --- /dev/null +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java @@ -0,0 +1,6 @@ +package seedu.duke.apps.academicplanner.commands; + +import seedu.duke.globalcommons.Command; + +public class PrintCalenderCommand extends Command { +} diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java new file mode 100644 index 0000000000..2ce4e87a98 --- /dev/null +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java @@ -0,0 +1,51 @@ +package seedu.duke.apps.academicplanner.commands; + +import seedu.duke.apps.moduleloader.ModuleLoader; +import seedu.duke.apps.academicplanner.commons.ModuleValidator; +import seedu.duke.apps.academicplanner.commons.RemoveUtils; +import seedu.duke.apps.academicplanner.exceptions.AcademicException; +import seedu.duke.globalcommons.Command; +import seedu.duke.objects.PartialModule; +import seedu.duke.objects.Person; +import java.util.HashMap; +import java.util.Scanner; + +/** + * Class representing an remove module command from the academic planner. + */ +public class RemoveModuleCommand extends Command { + private static final String EXITING_CURRENT_COMMAND = "Exiting current command back to Academic Planner Main Menu."; + private static final String ERROR_INVALID_COMMAND = "INVALID COMMAND"; + private static final String ERROR_NOT_ADDED = "You have not added this module into your list yet"; + + private RemoveUtils removeUtils; + private ModuleValidator moduleValidator; + private HashMap modulesAddedMap; + private String moduleCode; + + public RemoveModuleCommand(ModuleLoader allModules, Person currentPerson, Scanner in, String moduleCode) { + this.removeUtils = new RemoveUtils(currentPerson); + this.moduleValidator = new ModuleValidator(allModules, currentPerson); + this.modulesAddedMap = currentPerson.getModulesAddedMap(); + this.moduleCode = moduleCode; + } + + /** + * Removes moduleCode from user's academic calendar if it exists, + * else prompts user of error. + */ + @Override + public void execute() { + try { + if (moduleValidator.isModTakenByUser(moduleCode)) { + modulesAddedMap.remove(moduleCode); + removeUtils.removeModuleFromUserModuleList(moduleCode); + } else { + throw new AcademicException(ERROR_NOT_ADDED); + } + } catch (Exception e) { + System.out.println(ERROR_INVALID_COMMAND); + System.out.println(EXITING_CURRENT_COMMAND); + } + } +} diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java new file mode 100644 index 0000000000..522e1f823f --- /dev/null +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java @@ -0,0 +1,58 @@ +package seedu.duke.apps.academicplanner.commons; + +import seedu.duke.apps.moduleloader.ModuleLoader; +import seedu.duke.apps.capcalculator.commons.CalculatorUtils; +import seedu.duke.objects.PartialModule; +import seedu.duke.objects.Person; +import java.util.ArrayList; +import java.util.HashMap; + +/** + * Class representing add module utilities from the add module command. + */ +public class AddUtils { + private static final int FROM_ADD = 1; + + private final ModuleLoader allModules; + private final ArrayList modulesList; + private final HashMap modulesAddedMap; + private final CalculatorUtils calculatorUtils; + + public AddUtils(ModuleLoader allModules, Person currentPerson) { + this.allModules = allModules; + this.modulesList = currentPerson.getModulesList(); + this.modulesAddedMap = currentPerson.getModulesAddedMap(); + this.calculatorUtils = new CalculatorUtils(currentPerson); + } + + /** + * Creates a new instance of a module of the parameters and adds it into the + * hashmap and array list of user modules. + * + * @param moduleCode module to be added + * @param semesterValue semester that module is taken in + * @param gradeValue grade achieved for module + * @param moduleCredit module's credit weightage + */ + public void addModuleToUser(String moduleCode, int semesterValue, String gradeValue, int moduleCredit) { + PartialModule newModuleToAdd = new PartialModule(moduleCode, semesterValue, gradeValue, moduleCredit); + modulesList.add(newModuleToAdd); + modulesAddedMap.put(moduleCode, newModuleToAdd); + calculatorUtils.updateCap(FROM_ADD, newModuleToAdd); + System.out.println(newModuleToAdd.getModuleCode() + + " added into Semester " + semesterValue + "."); + } + + /** + * Function to return module credits for module code. + * + * @param moduleCode string of module code + * @return int of module credit + */ + public int getModuleCreditForModule(String moduleCode) { + int mapIndex = allModules.getModuleMap().get(moduleCode); + int moduleCredit = allModules.getModuleFullDetails()[mapIndex].getModuleCredit(); + assert moduleCredit >= 0; + return moduleCredit; + } +} diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java new file mode 100644 index 0000000000..3411dd7a17 --- /dev/null +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java @@ -0,0 +1,126 @@ +package seedu.duke.apps.academicplanner.commons; + +import seedu.duke.apps.moduleloader.ModuleLoader; +import seedu.duke.apps.capcalculator.commons.CalculatorUtils; +import seedu.duke.apps.academicplanner.exceptions.AcademicException; +import seedu.duke.objects.PartialModule; +import seedu.duke.objects.Person; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Scanner; + +/** + * Class representing edit module utilities from the edit module command. + */ +public class EditUtils { + + private final ArrayList modulesList; + private final HashMap modulesAddedMap; + private final ModuleValidator modChecker; + private final CalculatorUtils calculatorUtils; + + public EditUtils(ModuleLoader allModules, Person currentPerson) { + this.modulesList = currentPerson.getModulesList(); + this.modulesAddedMap = currentPerson.getModulesAddedMap(); + this.modChecker = new ModuleValidator(allModules, currentPerson); + this.calculatorUtils = new CalculatorUtils(currentPerson); + } + + private static final int FROM_EDIT = 2; + private static final String PROMPT_NEW_SEMESTER_VALUE = "Enter the new semester value: "; + private static final String PROMPT_NEW_GRADE = "Enter the new grade: "; + private static final String ERROR_INVALID_SEMESTER_INDEX = "INVALID SEMESTER INDEX"; + private static final String ERROR_INVALID_GRADE = "INVALID GRADE VALUE"; + private static final String VALID_GRADES = "Valid grades are:\n" + + "\tLetter Grades: A+, A, A-, B+, B, B-, C+, C, D+, D, F\n" + + "\tSpecial Grades: CS, CU, S, U, W, IC, IP, AUD, WU, EXE\n" + + "\tIf you have yet to have a grade for the module: NT"; + private static final String VALID_SEMESTERS = "Valid semesters are integers from 1 to 10, inclusive"; + + /** + * Changes the current grade of module to the input of the user. + * PartialModule must exist in user's list and hashmap + * + * @param in scanner + * @param moduleCode code of module to edit the grade + * @throws AcademicException invalid grade + */ + public void editModuleGrade(Scanner in, String moduleCode) throws AcademicException { + System.out.println(PROMPT_NEW_GRADE); + System.out.println(VALID_GRADES); + String gradeValue = in.nextLine().trim().toUpperCase(); + + if (!modChecker.isValidGrade(gradeValue)) { + throw new AcademicException(ERROR_INVALID_GRADE); + } + + System.out.println(moduleCode); + updateModuleGrade(moduleCode, gradeValue); + System.out.println("Grade for " + moduleCode + " successfully updated!"); + } + + /** + * Updates user's module with new grade and updates user's Cap. + * + * @param moduleCode module to edit + * @param gradeValue grade to edit to + */ + public void updateModuleGrade(String moduleCode, String gradeValue) { + for (PartialModule module : modulesList) { + if (module.getModuleCode().equals(moduleCode)) { + updateCurrentModuleGrade(gradeValue, module); + break; + } + } + modulesAddedMap.get(moduleCode).setGrade(gradeValue); + } + + /** + * Updates module to reflect the new grade. + * @param gradeValue new grade value to reflect + * @param module module to edit + */ + private void updateCurrentModuleGrade(String gradeValue, PartialModule module) { + double oldCap = module.getCap(); + module.setGrade(gradeValue); + double newCap = module.getCap(); + calculatorUtils.updateCap(FROM_EDIT, module, oldCap, newCap); + } + + /** + * Edits module semester taken when module is in user's list. + * PartialModule must exist in user's module list and hashmap. + * + * @param in scanner + * @param moduleCode module to edit + * @throws AcademicException invalid semester index + */ + public void editModuleSemester(Scanner in, String moduleCode) throws AcademicException { + System.out.println(PROMPT_NEW_SEMESTER_VALUE); + System.out.println(VALID_SEMESTERS); + String newValue = in.nextLine().trim(); + + if (!modChecker.isValidSemester(Integer.parseInt(newValue))) { + throw new AcademicException(ERROR_INVALID_SEMESTER_INDEX); + } + + updateModuleSemester(moduleCode, newValue); + modulesAddedMap.get(moduleCode).setSemesterIndex(Integer.parseInt(newValue)); + System.out.println("Semester for " + moduleCode + " successfully updated!"); + } + + /** + * Finds the module and updates the semester taken. + * + * @param moduleCode module to edit + * @param newValue new semester index + */ + public void updateModuleSemester(String moduleCode, String newValue) { + for (PartialModule item : modulesList) { + if (item.getModuleCode().equals(moduleCode)) { + item.setSemesterIndex(Integer.parseInt(newValue)); + break; + } + } + } +} diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java b/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java new file mode 100644 index 0000000000..b919829b7f --- /dev/null +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java @@ -0,0 +1,113 @@ +package seedu.duke.apps.academicplanner.commons; + +import seedu.duke.apps.moduleloader.ModuleLoader; +import seedu.duke.objects.PartialModule; +import seedu.duke.objects.Person; +import java.util.ArrayList; +import java.util.HashMap; + +public class ModuleValidator { + private static final int STARTING_SEMESTER_INDEX = 1; + private static final int FINAL_SEMESTER_INDEX = 10; + + private final ModuleLoader allModules; + private final ArrayList modulesList; + private final HashMap modulesAddedMap; + + public ModuleValidator(ModuleLoader allModules, Person currentPerson) { + this.allModules = allModules; + this.modulesList = currentPerson.getModulesList(); + this.modulesAddedMap = currentPerson.getModulesAddedMap(); + } + + /** + * Returns true if module code is offered by NUS, + * else returns false. + * @param moduleCode input module code + * @return boolean of module code in FullModule + */ + public boolean isModOfferedByNus(String moduleCode) { + boolean isOffered = allModules.getModuleMap().get(moduleCode) != null; + return (isOffered); + } + + /** + * Returns true if module is in the user's academic calendar, + * else returns false. + * + * @param moduleCode moduleCode to check + * @return boolean + */ + public boolean isModTakenByUser(String moduleCode) { + return (modulesAddedMap.containsKey(moduleCode)); + } + + /** + * Returns true if semsesterIndex is a valid semesterIndex, + * else returns false. + * + * @param semesterIndex semesterIndex to check + * @return false + */ + public boolean isValidSemester(int semesterIndex) { + return (semesterIndex >= STARTING_SEMESTER_INDEX && semesterIndex <= FINAL_SEMESTER_INDEX); + } + + /** + * Returns true if grade is a Grade option offered by NUS, + * else returns false. + * + * @param grade grade to check + * @return boolean + */ + public boolean isValidGrade(String grade) { + switch (grade.toUpperCase()) { + case "A+": + //Fallthrough + case "A": + //Fallthrough + case "A-": + //Fallthrough + case "B+": + //Fallthrough + case "B": + //Fallthrough + case "B-": + //Fallthrough + case "C+": + //Fallthrough + case "C": + //Fallthrough + case "D+": + //Fallthrough + case "D": + //Fallthrough + case "F": + //Fallthrough + case "CS": //Completed Satisfactorily + //Fallthrough + case "CU": //Completed Unsatisfactorily + //Fallthrough + case "S": //Satisfactory + //Fallthrough + case "U": //Unsatisfactory + //Fallthrough + case "W": //Withdrawn + //Fallthrough + case "IC": //Incomplete + //Fallthrough + case "IP": //In progress + //Fallthrough + case "AUD": //Audit + //Fallthrough + case "WU": //Withdrawn from University + //Fallthrough + case "EXE" : //Exempted + //Fallthrough + case "NT": //Not taken + return true; + default: + return false; + } + } +} diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java new file mode 100644 index 0000000000..3a958ad41c --- /dev/null +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java @@ -0,0 +1,38 @@ +package seedu.duke.apps.academicplanner.commons; + +import seedu.duke.apps.capcalculator.commons.CalculatorUtils; +import seedu.duke.objects.PartialModule; +import seedu.duke.objects.Person; +import java.util.ArrayList; + +/** + * Class representing remove module utilities from the remove module command. + */ +public class RemoveUtils { + private static final int FROM_REMOVE = 3; + + private final ArrayList modulesList; + private final CalculatorUtils calculatorUtils; + + public RemoveUtils(Person currentPerson) { + this.modulesList = currentPerson.getModulesList(); + this.calculatorUtils = new CalculatorUtils(currentPerson); + } + + /** + * Removes module from user's module list. + * PartialModule must exist in user's module list. + * + * @param moduleCode module to remove. + */ + public void removeModuleFromUserModuleList(String moduleCode) { + for (PartialModule item : modulesList) { + if (item.getModuleCode().equals(moduleCode)) { + System.out.println(item.getModuleCode() + " has been removed from the list"); + calculatorUtils.updateCap(FROM_REMOVE, item); + modulesList.remove(item); + return; + } + } + } +} diff --git a/src/main/java/seedu/duke/apps/academicplanner/exceptions/AcademicException.java b/src/main/java/seedu/duke/apps/academicplanner/exceptions/AcademicException.java new file mode 100644 index 0000000000..c01be6a731 --- /dev/null +++ b/src/main/java/seedu/duke/apps/academicplanner/exceptions/AcademicException.java @@ -0,0 +1,21 @@ +package seedu.duke.apps.academicplanner.exceptions; + +/** + * Signals that an invalid command has been given in the Academic Planner App. + */ +public class AcademicException extends Exception { + private String errorMessage; + + private static final String NEW_LINE = "\n"; + private static final String EXITING_CURRENT_COMMAND = "Exiting current command back to Academic Planner Main Menu."; + + public AcademicException(String errorMessage) { + String stringToPrint = errorMessage + NEW_LINE + EXITING_CURRENT_COMMAND; + this.errorMessage = stringToPrint; + } + + @Override + public String getMessage() { + return this.errorMessage; + } +} diff --git a/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorApp.java b/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorApp.java new file mode 100644 index 0000000000..244317a7c2 --- /dev/null +++ b/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorApp.java @@ -0,0 +1,72 @@ +package seedu.duke.apps.capcalculator; + +import seedu.duke.globalcommons.App; +import seedu.duke.globalcommons.Command; +import seedu.duke.objects.Person; +import seedu.duke.ui.Ui; +import java.math.RoundingMode; +import java.text.DecimalFormat; +import static seedu.duke.apps.capcalculator.CapCalculatorParser.ERROR_INVALID_COMMAND; +import static seedu.duke.apps.capcalculator.CapCalculatorParser.NEW_LINE; +import static seedu.duke.apps.capcalculator.CapCalculatorParser.EXITING_CURRENT_COMMAND; + +/** + * Class representing the CAP Calculator app in PlanNUS. + */ +public class CapCalculatorApp extends App { + + private static final String AWAIT_COMMAND = "Type a command to continue..."; + private static final String EXIT_MESSAGE = "Thank you for using Cap Calculator!"; + private static final String WELCOME_MESSAGE = "Welcome to CAP Calculator! Commands available are:\n" + + "\tcurrent\n" + + "\tset target\n" + + "\tTo exit CAP Calculator, use command: \"exit\"\n\n" + + "\tInitializing your CAP..."; + + private final Person currentPerson; + private final Ui ui; + private final DecimalFormat formatFinalCap = new DecimalFormat("#.##"); + + public CapCalculatorApp(Person currentPerson, Ui ui) { + this.currentPerson = currentPerson; + this.ui = ui; + } + + /** + * Main function for CAP Calculator. + */ + public void run() { + showWelcomeMessage(); + boolean isExit = false; + formatFinalCap.setRoundingMode(RoundingMode.UP); + + while (!isExit) { + try { + String userInput = ui.getScanner().nextLine(); + Command commandInput = CapCalculatorParser.parse(userInput, currentPerson, ui); + commandInput.execute(); + isExit = commandInput.getIsExit(); + } catch (NumberFormatException e) { + System.out.println(ERROR_INVALID_COMMAND + NEW_LINE + EXITING_CURRENT_COMMAND); + } catch (Exception e) { + System.out.println(e.getMessage()); + } + } + showExitMessage(); + } + + /** + * Prints out exit message when user enters CAP Calculator. + */ + private void showExitMessage() { + System.out.println(EXIT_MESSAGE); + } + + /** + * Prints out welcome message when user enters CAP Calculator. + */ + private void showWelcomeMessage() { + System.out.println(WELCOME_MESSAGE); + System.out.println(AWAIT_COMMAND); + } +} diff --git a/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorParser.java b/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorParser.java new file mode 100644 index 0000000000..329a39a883 --- /dev/null +++ b/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorParser.java @@ -0,0 +1,45 @@ +package seedu.duke.apps.capcalculator; + +import seedu.duke.apps.capcalculator.commands.CurrentCommand; +import seedu.duke.apps.capcalculator.commands.SetTargetCommand; +import seedu.duke.exceptions.CommandParserException; +import seedu.duke.globalcommons.Command; +import seedu.duke.objects.Person; +import seedu.duke.ui.Ui; + +/** + * Class representing the parser used in the CAP Calculator app. + */ +public class CapCalculatorParser { + + public static final String NEW_LINE = "\n"; + public static final String EXITING_CURRENT_COMMAND = "Exiting current command back to Cap Calculator Main Menu."; + public static final String ERROR_INVALID_COMMAND = "INVALID COMMAND"; + public static final String INVALID_COMMAND_MESSAGE = "OOPS!!! I'm sorry, but I don't know what that means :-("; + private static final String CURRENT_COMMAND = "current"; + private static final String SET_TARGET_COMMAND = "set target"; + private static final String EXIT_COMMAND = "exit"; + + /** + * Processes user input command and returns command to be executed. + * + * @param userInput user input + * @param currentPerson user of PlanNUS + * @param ui ui + * @return Command to be executed + * @throws CommandParserException thrown when an invalid command is entered + */ + public static Command parse(String userInput, Person currentPerson, Ui ui) throws CommandParserException { + userInput = userInput.trim().toLowerCase(); + + if (userInput.equals(CURRENT_COMMAND)) { + return new CurrentCommand(currentPerson); + } else if (userInput.equals(SET_TARGET_COMMAND)) { + return new SetTargetCommand(currentPerson, ui); + } else if (userInput.equals(EXIT_COMMAND)) { + return new Command(true); + } else { + throw new CommandParserException(INVALID_COMMAND_MESSAGE); + } + } +} diff --git a/src/main/java/seedu/duke/apps/capcalculator/commands/CurrentCommand.java b/src/main/java/seedu/duke/apps/capcalculator/commands/CurrentCommand.java new file mode 100644 index 0000000000..ee578390a0 --- /dev/null +++ b/src/main/java/seedu/duke/apps/capcalculator/commands/CurrentCommand.java @@ -0,0 +1,27 @@ +package seedu.duke.apps.capcalculator.commands; + +import seedu.duke.globalcommons.Command; +import seedu.duke.objects.Person; +import static seedu.duke.apps.capcalculator.commons.CalculatorUtils.formatCapToString; + +/** + * Class representing the Current CAP command for CAP Calculator. + */ +public class CurrentCommand extends Command { + + private Person currentPerson; + + public CurrentCommand(Person currentPerson) { + this.currentPerson = currentPerson; + } + + /** + * Prints out user's current cap obtained from his/her academic calendar. + */ + @Override + public void execute() { + double currentCap = currentPerson.getCurrentTotalMcxGrade() / (double) currentPerson.getCurrentMcAfterSU(); + System.out.println("Your current now CAP is: " + formatCapToString(currentCap)); + System.out.println("Number of graded MCs taken is: " + currentPerson.getCurrentMcAfterSU()); + } +} diff --git a/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java b/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java new file mode 100644 index 0000000000..8c45f34e65 --- /dev/null +++ b/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java @@ -0,0 +1,40 @@ +package seedu.duke.apps.capcalculator.commands; + +import seedu.duke.exceptions.InvalidCapException; +import seedu.duke.exceptions.InvalidCreditException; +import seedu.duke.globalcommons.Command; +import seedu.duke.objects.Person; +import seedu.duke.ui.Ui; +import seedu.duke.apps.capcalculator.commons.SetTargetUtils; + +/** + * Class representing the Set target CAP command for CAP Calculator. + */ +public class SetTargetCommand extends Command { + + private Person currentPerson; + private Ui ui; + private SetTargetUtils setTargetUtils; + + public SetTargetCommand(Person currentPerson, Ui ui) { + this.currentPerson = currentPerson; + this.ui = ui; + this.setTargetUtils = new SetTargetUtils(currentPerson, ui); + } + + /** + * Function to calculate CAP needed to obtain target grades. + */ + @Override + public void execute() { + try { + double targetCap = setTargetUtils.getTargetCap(); + int targetMCs = setTargetUtils.getTargetGradedMC(); + setTargetUtils.showResultsToUser(targetCap, targetMCs); + } catch (InvalidCapException e) { + System.out.println(e.getMessage()); + } catch (InvalidCreditException e) { + System.out.println(e.getMessage()); + } + } +} diff --git a/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java b/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java new file mode 100644 index 0000000000..604e3d7bb6 --- /dev/null +++ b/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java @@ -0,0 +1,185 @@ +package seedu.duke.apps.capcalculator.commons; + +import seedu.duke.objects.PartialModule; +import seedu.duke.objects.Person; +import java.text.DecimalFormat; + +/** + * Class representing common functions for the CAP Calculator. + */ +public class CalculatorUtils { + private static final int FROM_ADD = 1; + private static final int FROM_EDIT = 2; + private static final int FROM_REMOVE = 3; + private static final DecimalFormat formatFinalCap = new DecimalFormat("#.##"); + protected static final double MAXIMUM_CAP = 5.00; + + private final Person currentPerson; + + public CalculatorUtils(Person currentPerson) { + this.currentPerson = currentPerson; + } + + /** + * Update Cap after every change in current module list. + * + * @param type An int storing the type of function calling update cap + * @param currentModule A PartialModule object storing current module + * @param caps An optional number of double storing old cap and new cap (If you send in old, must send in new also) + */ + public void updateCap(int type, PartialModule currentModule, double... caps) { + // Caps is an array, 0 being oldCap, 1 being newCap + if (type == FROM_ADD) { + updateCapFromAdd(currentModule); + + } else if (type == FROM_REMOVE) { + //Decreasing total MC regardless of SU + currentPerson.setCurrentMc(currentPerson.getCurrentMc() + - currentModule.getModuleCredit()); + + //Decreasing total MC after SU only if module is not SU + if (currentModule.getCap() != -1.00) { + editCapNonSuToSu(currentModule, currentModule.getCap()); + } + + } else if (type == FROM_EDIT) { + if (isFromSuToNonSu(caps)) { + //Case where previously was SU but new is not SU + editCapSuToNonSu(currentModule, caps[1]); + + } else if (isFromNonSuToSu(caps)) { + //Case where previously was not SU but now is SU + editCapNonSuToSu(currentModule, caps[0]); + + } else if (isFromNonSuToNonSu(caps)) { + //Case where previously and new cap are not SU but not the same + editCapNonSuToNonSu(currentModule, caps); + } + } + } + + /** + * Returns true if edited module was from a special grade to special grade, + * else returns false. + * + * @param caps Academic points of original and edited module + * @return boolean + */ + private boolean isFromNonSuToNonSu(double[] caps) { + return caps[0] != caps[1]; + } + + /** + * Returns true if edited module was from a special grade to letter grade, + * else returns false. + * + * @param caps Academic points of original and edited module + * @return boolean + */ + private boolean isFromNonSuToSu(double[] caps) { + return caps[0] != -1.00 && caps[1] == -1.00; + } + + /** + * Returns true if edited module was from a special grade to letter grade, + * else returns false. + * + * @param caps Academic points of original and edited module + * @return boolean + */ + private boolean isFromSuToNonSu(double[] caps) { + return caps[0] == -1.00 && caps[1] != -1.00; + } + + /** + * Updates CAP when User edits module from a special grade to a special grade. + * + * @param currentModule module that was edited + * @param caps array of previous and new cap + */ + private void editCapNonSuToNonSu(PartialModule currentModule, double[] caps) { + double oldMCxGrade = caps[0] * currentModule.getModuleCredit(); + double newMCxGrade = caps[1] * currentModule.getModuleCredit(); + double mcxGradeToSet = newMCxGrade - oldMCxGrade; + + //Updating total academic points to this point + currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() + + mcxGradeToSet); + } + + /** + * Updates CAP when User edits module from a special grade to a letter grade. + * + * @param currentModule module that was edited + * @param cap user's CAP + */ + private void editCapNonSuToSu(PartialModule currentModule, double cap) { + double mcxGradeToMinus = cap * currentModule.getModuleCredit(); + + //Updating total MCs + currentPerson.setCurrentMcAfterSU(currentPerson.getCurrentMcAfterSU() + - currentModule.getModuleCredit()); + + //Updated total Academic Points + currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() + - mcxGradeToMinus); + } + + /** + * Updates CAP when User edits module from a letter grade to a special grade. + * + * @param currentModule module that was edited + * @param cap user's CAP + */ + private void editCapSuToNonSu(PartialModule currentModule, double cap) { + double newMCxGrade = cap * currentModule.getModuleCredit(); + + //Updating total MCs + currentPerson.setCurrentMcAfterSU(currentPerson.getCurrentMcAfterSU() + + currentModule.getModuleCredit()); + + //Updated total Academic Points + currentPerson.setCurrentTotalMcxGrade(currentPerson.getCurrentTotalMcxGrade() + + newMCxGrade); + } + + /** + * Updates CAP when User adds in a new module. + * + * @param currentModule module that is newly added + */ + private void updateCapFromAdd(PartialModule currentModule) { + //Incrementing total MC regardless of SU + int moduleCredit = currentModule.getModuleCredit(); + currentPerson.setCurrentMc(currentPerson.getCurrentMc() + moduleCredit); + + //Incrementing total MC after SU only if module is not SU + if (currentModule.getCap() != -1.00) { + editCapSuToNonSu(currentModule, currentModule.getCap()); + } + } + + /** + * Returns CAP score as a string. + * + * @param academicPoint academic point to parse + * @return string of academic point + */ + public static String formatCapToString(double academicPoint) { + if (isNaN(academicPoint)) { + return "0"; + } + return formatFinalCap.format(academicPoint); + } + + /** + * Returns true if CAP is NaN + * else returns false. + * + * @param academicPoint academic point to check + * @return boolean + */ + public static boolean isNaN(double academicPoint) { + return (academicPoint != academicPoint); + } +} diff --git a/src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java b/src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java new file mode 100644 index 0000000000..0935b9af25 --- /dev/null +++ b/src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java @@ -0,0 +1,106 @@ +package seedu.duke.apps.capcalculator.commons; + +import seedu.duke.exceptions.InvalidCapException; +import seedu.duke.exceptions.InvalidCreditException; +import seedu.duke.objects.Person; +import seedu.duke.ui.Ui; +import static seedu.duke.apps.capcalculator.commons.CalculatorUtils.MAXIMUM_CAP; +import static seedu.duke.apps.capcalculator.commons.CalculatorUtils.formatCapToString; + +/** + * Class representing the common Set Target functions in CAP Calculator. + */ +public class SetTargetUtils { + private static final String INVALID_CAP_MESSAGE = "Your target CAP cannot be greater than the maximum CAP of 5!"; + private static final String INVALID_MC_MESSAGE = "Your target MC cannot be 0!"; + + private Person currentPerson; + private Ui ui; + + public SetTargetUtils(Person currentPerson, Ui ui) { + this.currentPerson = currentPerson; + this.ui = ui; + } + + /** + * Obtain the target CAP from the user. + */ + public double getTargetCap() throws InvalidCapException { + System.out.println("What is your target CAP?"); + double targetCap = Double.parseDouble(ui.getScanner().nextLine()); + checkValidCap(targetCap); + return targetCap; + } + + /** + * Obtain the target MCs from the user. + */ + public int getTargetGradedMC() throws InvalidCreditException { + System.out.println("How many graded MCs you are taking to achieve the target CAP?"); + int targetGradedMC = Integer.parseInt(ui.getScanner().nextLine()); + checkValidCredits(targetGradedMC); + return targetGradedMC; + } + + /** + * Checks if the target Cap given by the user is valid. + * + * @param cap Cap to be checked + * @throws InvalidCapException if the Cap given is greater than 5.00 or less than 0 + */ + private void checkValidCap(double cap) throws InvalidCapException { + if (cap > MAXIMUM_CAP || cap <= 0) { + throw new InvalidCapException(INVALID_CAP_MESSAGE); + } + } + + /** + * Checks if the target Cap given by the user is valid. + * + * @param credits Module credits to be checked + * @throws InvalidCreditException if the module credit given less than 0 + */ + private void checkValidCredits(int credits) throws InvalidCreditException { + if (credits <= 0) { + throw new InvalidCreditException(INVALID_MC_MESSAGE); + } + } + + /** + * Calculate what should be the user's minimum CAP in order to achieve user's target CAP and display to user. + */ + public void showResultsToUser(double targetCap,int targetGradedMC) { + int totalMcToTarget = currentPerson.getCurrentMcAfterSU() + targetGradedMC; + double targetCapxTargetMC = (double) totalMcToTarget * targetCap; + double neededCap = (targetCapxTargetMC - currentPerson.getCurrentTotalMcxGrade()) / (double) targetGradedMC; + + if (neededCap <= 5) { + printTargetResultPossible(targetCap, targetGradedMC, neededCap); + } else { + printTargetResultImpossible(targetCap, targetGradedMC); + } + } + + /** + * Prints out message for user when the target result cannot be achieved. + * + * @param targetCap user's targeted CAP. + * @param targetGradedMC user's targeted MC. + */ + private void printTargetResultImpossible(double targetCap, int targetGradedMC) { + System.out.println("OOPS!! Looks like you are not able to achieve your target CAP of " + targetCap + + " with you target MCs of " + targetGradedMC + "."); + } + + /** + * Prints out message for user when the target result can be achieved. + * + * @param targetCap user's targeted CAP. + * @param targetGradedMC user's targeted MC. + * @param neededCap user's future CAP needed to reach targeted CAP + */ + private void printTargetResultPossible(double targetCap, int targetGradedMC, double neededCap) { + System.out.println("You should achieve a minimum CAP of " + formatCapToString(neededCap) + " for your next " + + targetGradedMC + " MCs to achieve your target CAP of " + targetCap + "."); + } +} diff --git a/src/main/java/seedu/duke/apps/capcalculator/exceptions/CapCalculatorException.java b/src/main/java/seedu/duke/apps/capcalculator/exceptions/CapCalculatorException.java new file mode 100644 index 0000000000..72e2183528 --- /dev/null +++ b/src/main/java/seedu/duke/apps/capcalculator/exceptions/CapCalculatorException.java @@ -0,0 +1,21 @@ +package seedu.duke.apps.capcalculator.exceptions; + +/** + * Signals that an invalid command has been given in the CAP Calculator App. + */ +public class CapCalculatorException extends Exception { + private String errorMessage; + + private static final String NEW_LINE = "\n"; + private static final String EXITING_CURRENT_COMMAND = "Exiting current command back to CapCalculatorApp Main Menu."; + + public CapCalculatorException(String errorMessage) { + String stringToPrint = errorMessage + NEW_LINE + EXITING_CURRENT_COMMAND; + this.errorMessage = stringToPrint; + } + + @Override + public String getMessage() { + return this.errorMessage; + } +} diff --git a/src/main/java/seedu/duke/apps/moduleloader/ModuleLoader.java b/src/main/java/seedu/duke/apps/moduleloader/ModuleLoader.java new file mode 100644 index 0000000000..6814c25ea2 --- /dev/null +++ b/src/main/java/seedu/duke/apps/moduleloader/ModuleLoader.java @@ -0,0 +1,76 @@ +package seedu.duke.apps.moduleloader; + +import com.google.gson.Gson; +import seedu.duke.apps.moduleloader.exceptions.ModuleLoaderException; +import seedu.duke.objects.FullModule; +import java.io.InputStream; +import java.io.Reader; +import java.io.InputStreamReader; +import java.util.HashMap; +import java.util.Map; + +/** + * Class representing function to load all modules offered by NUS. + */ +public class ModuleLoader { + private static final int TOTAL_NUMBER_OF_MODULES = 12436; + public static final String NEW_LINE = "\n"; + public static final String MISSING_MODULE_DATA = "Data for Modules not found!"; + public static final String TERMINATION = "Terminating program..."; + public static final String CORRUPTED_MODULE_DATA = "Data for Modules corrupted!"; + + private Map moduleMap; + private FullModule[] moduleFullDetails; + + /** + * Default constructor for to load all modules from JSON file. + */ + public ModuleLoader() throws ModuleLoaderException { + try { + moduleMap = new HashMap<>(); + Gson gson = new Gson(); + + InputStream in = ModuleLoader.class.getResourceAsStream("/ModuleData.json"); + Reader jsonReader = new InputStreamReader(in); + moduleFullDetails = gson.fromJson(jsonReader, FullModule[].class); + + for (int i = 0; i < moduleFullDetails.length; i++) { + moduleMap.put(moduleFullDetails[i].getModuleCode(), i); + } + + if (moduleFullDetails.length != TOTAL_NUMBER_OF_MODULES) { + throw new ModuleLoaderException(CORRUPTED_MODULE_DATA + NEW_LINE + TERMINATION); + } + } catch (NullPointerException e) { + throw new ModuleLoaderException(MISSING_MODULE_DATA + NEW_LINE + TERMINATION); + } + } + + /** + * Constructor for checking condition where loading all module from JSON file fails. + * Used in development only. + * + * @param isProperCreation boolean indicating non-proper creation of module initializer + */ + public ModuleLoader(boolean isProperCreation) throws ModuleLoaderException { + throw new ModuleLoaderException(CORRUPTED_MODULE_DATA + NEW_LINE + TERMINATION); + } + + /** + * Getter for module map. + * + * @return Map + */ + public Map getModuleMap() { + return this.moduleMap; + } + + /** + * Getter for full module details. + * + * @return An Array of FullModule + */ + public FullModule[] getModuleFullDetails() { + return this.moduleFullDetails; + } +} diff --git a/src/main/java/seedu/duke/apps/moduleloader/exceptions/ModuleLoaderException.java b/src/main/java/seedu/duke/apps/moduleloader/exceptions/ModuleLoaderException.java new file mode 100644 index 0000000000..4e474ebd4d --- /dev/null +++ b/src/main/java/seedu/duke/apps/moduleloader/exceptions/ModuleLoaderException.java @@ -0,0 +1,18 @@ +package seedu.duke.apps.moduleloader.exceptions; + +public class ModuleLoaderException extends Exception { + private String errorMessage; + + public ModuleLoaderException() { + + } + + public ModuleLoaderException(String errorMessage) { + this.errorMessage = errorMessage; + } + + @Override + public String getMessage() { + return this.errorMessage; + } +} diff --git a/src/main/java/seedu/duke/exceptions/AppParserException.java b/src/main/java/seedu/duke/exceptions/AppParserException.java new file mode 100644 index 0000000000..bdc56f5cfc --- /dev/null +++ b/src/main/java/seedu/duke/exceptions/AppParserException.java @@ -0,0 +1,17 @@ +package seedu.duke.exceptions; + +/** + * Signals that an invalid command has been given in the App parser. + */ +public class AppParserException extends Exception { + String errorMessage; + + public AppParserException(String errorMessage) { + this.errorMessage = errorMessage; + } + + @Override + public String getMessage() { + return this.errorMessage; + } +} diff --git a/src/main/java/seedu/duke/exceptions/CommandParserException.java b/src/main/java/seedu/duke/exceptions/CommandParserException.java new file mode 100644 index 0000000000..dcbd223b39 --- /dev/null +++ b/src/main/java/seedu/duke/exceptions/CommandParserException.java @@ -0,0 +1,17 @@ +package seedu.duke.exceptions; + +/** + * Signals that an invalid command has been given in the main command parser. + */ +public class CommandParserException extends Exception { + String errorMessage; + + public CommandParserException(String errorMessage) { + this.errorMessage = errorMessage; + } + + @Override + public String getMessage() { + return this.errorMessage; + } +} diff --git a/src/main/java/seedu/duke/exceptions/InvalidCapException.java b/src/main/java/seedu/duke/exceptions/InvalidCapException.java new file mode 100644 index 0000000000..f1f6b74fcb --- /dev/null +++ b/src/main/java/seedu/duke/exceptions/InvalidCapException.java @@ -0,0 +1,13 @@ +package seedu.duke.exceptions; + +import seedu.duke.apps.capcalculator.exceptions.CapCalculatorException; + +/** + * Signals that the given CAP is not valid. + */ +public class InvalidCapException extends CapCalculatorException { + + public InvalidCapException(String errorMessage) { + super(errorMessage); + } +} diff --git a/src/main/java/seedu/duke/exceptions/InvalidCreditException.java b/src/main/java/seedu/duke/exceptions/InvalidCreditException.java new file mode 100644 index 0000000000..d953cc8b1c --- /dev/null +++ b/src/main/java/seedu/duke/exceptions/InvalidCreditException.java @@ -0,0 +1,13 @@ +package seedu.duke.exceptions; + +import seedu.duke.apps.capcalculator.exceptions.CapCalculatorException; + +/** + * Signals that the given MC is not valid. + */ +public class InvalidCreditException extends CapCalculatorException { + + public InvalidCreditException(String errorMessage) { + super(errorMessage); + } +} diff --git a/src/main/java/seedu/duke/globalcommons/App.java b/src/main/java/seedu/duke/globalcommons/App.java new file mode 100644 index 0000000000..5cdb9eec86 --- /dev/null +++ b/src/main/java/seedu/duke/globalcommons/App.java @@ -0,0 +1,28 @@ +package seedu.duke.globalcommons; + +/** + * Class representing an application in PlanNUS. + */ +public class App { + private boolean isExit = false; + + public App() { + + } + + public App(boolean isExitCommand) { + this.isExit = isExitCommand; + } + + public boolean isExit() { + return this.isExit; + } + + public void run() { + + } + + public boolean getIsExit() { + return this.isExit; + } +} diff --git a/src/main/java/seedu/duke/globalcommons/Command.java b/src/main/java/seedu/duke/globalcommons/Command.java new file mode 100644 index 0000000000..b1146f8dd4 --- /dev/null +++ b/src/main/java/seedu/duke/globalcommons/Command.java @@ -0,0 +1,24 @@ +package seedu.duke.globalcommons; + +/** + * Class representing a command in PlanNUS. + */ +public class Command { + private boolean isExit; + + public Command() { + this.isExit = false; + } + + public Command(boolean isExit) { + this.isExit = isExit; + } + + public void execute() throws Exception { + + } + + public boolean getIsExit() { + return this.isExit; + } +} diff --git a/src/main/java/seedu/duke/moduledata/ModuleInitializer.java b/src/main/java/seedu/duke/moduledata/ModuleInitializer.java deleted file mode 100644 index 54820ab0d7..0000000000 --- a/src/main/java/seedu/duke/moduledata/ModuleInitializer.java +++ /dev/null @@ -1,33 +0,0 @@ -package seedu.duke.moduledata; - -import com.google.gson.Gson; - -import java.io.InputStream; -import java.io.Reader; -import java.io.InputStreamReader; -import java.util.HashMap; -import java.util.Map; - -public class ModuleInitializer { - private Map moduleMap = new HashMap<>(); - private ModuleDatum[] moduleFullDetails; - - public ModuleInitializer() { - Gson gson = new Gson(); - - InputStream in = ModuleInitializer.class.getResourceAsStream("/moduleData.json"); - Reader jsonReader = new InputStreamReader(in); - moduleFullDetails = gson.fromJson(jsonReader, ModuleDatum[].class); - - for (int i = 0; i < moduleFullDetails.length; i++) { - moduleMap.put(moduleFullDetails[i].getModuleCode(), i); - } - } - - public Map getModuleMap() { - return this.moduleMap; - } - public ModuleDatum[] getModuleFullDetails() { - return this.moduleFullDetails; - } -} diff --git a/src/main/java/seedu/duke/moduledata/ModuleDatum.java b/src/main/java/seedu/duke/objects/FullModule.java similarity index 72% rename from src/main/java/seedu/duke/moduledata/ModuleDatum.java rename to src/main/java/seedu/duke/objects/FullModule.java index 26dd4be256..c7ba248c30 100644 --- a/src/main/java/seedu/duke/moduledata/ModuleDatum.java +++ b/src/main/java/seedu/duke/objects/FullModule.java @@ -1,4 +1,4 @@ -package seedu.duke.moduledata; +package seedu.duke.objects; import java.util.ArrayList; import java.util.HashMap; @@ -8,6 +8,8 @@ import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.ToStringBuilder; +import static org.apache.commons.lang3.builder.ToStringStyle.JSON_STYLE; + // "moduleCode", // "title", // "moduleCredit", @@ -29,7 +31,13 @@ // "prerequisite", // "corequisite" -public class ModuleDatum { + +/** + * A class created to store the full data of each mod after JSON conversion. + * + * @author Khenus Tan + */ +public class FullModule { private String moduleCode; private String title; private Integer moduleCredit; @@ -84,7 +92,7 @@ public String getCorequisite() { @Override public String toString() { - return ToStringBuilder.reflectionToString(this); + return ToStringBuilder.reflectionToString(this, JSON_STYLE); } @Override @@ -92,10 +100,14 @@ public boolean equals(Object other) { if (other == this) { return true; } - if ((other instanceof ModuleDatum) == false) { + if ((other instanceof FullModule) == false) { return false; } - ModuleDatum rhs = ((ModuleDatum) other); - return new EqualsBuilder().append(moduleCode, rhs.moduleCode).append(title, rhs.title).append(moduleCredit, rhs.moduleCredit).append(department, rhs.department).append(faculty, rhs.faculty).append(semester, rhs.semester).append(preclusion, rhs.preclusion).append(attributes, rhs.attributes).append(prerequisite, rhs.prerequisite).append(corequisite, rhs.corequisite).append(additionalProperties, rhs.additionalProperties).isEquals(); + FullModule rhs = ((FullModule) other); + return new EqualsBuilder().append(moduleCode, rhs.moduleCode).append(title, rhs.title) + .append(moduleCredit, rhs.moduleCredit).append(department, rhs.department) + .append(faculty, rhs.faculty).append(semester, rhs.semester).append(preclusion, rhs.preclusion) + .append(attributes, rhs.attributes).append(prerequisite, rhs.prerequisite) + .append(corequisite, rhs.corequisite).append(additionalProperties, rhs.additionalProperties).isEquals(); } } diff --git a/src/main/java/seedu/duke/objects/Module.java b/src/main/java/seedu/duke/objects/PartialModule.java similarity index 68% rename from src/main/java/seedu/duke/objects/Module.java rename to src/main/java/seedu/duke/objects/PartialModule.java index d1fbb82121..29bd46c978 100644 --- a/src/main/java/seedu/duke/objects/Module.java +++ b/src/main/java/seedu/duke/objects/PartialModule.java @@ -2,19 +2,23 @@ import org.apache.commons.lang3.builder.ToStringBuilder; -public class Module implements Comparable{ +/** + * Class representing module object to be stored in the Person object. + * It is a truncated version of FullModule with only relevant fields. + */ +public class PartialModule implements Comparable { private String moduleCode; private int semesterIndex; // 1 to 8 private String grade; private int moduleCredit; - private double CAP; + private double cap; - public Module (String moduleCode, int semesterIndex, String grade, int moduleCredit) { + public PartialModule(String moduleCode, int semesterIndex, String grade, int moduleCredit) { setModuleCode(moduleCode); setSemesterIndex(semesterIndex); setGrade(grade); setModuleCredit(moduleCredit); - setCAP(grade); + setCap(grade); } public String getModuleCode() { @@ -47,41 +51,47 @@ public void setSemesterIndex(int semesterIndex) { public void setGrade(String grade) { this.grade = grade; - setCAP(grade); + setCap(grade); } - public void setCAP(String grade) { + /** + * Returns Academic points associated with letter grades. + * If grade is a special grading option, returns -1.00. + * + * @param grade user grade to check + */ + public void setCap(String grade) { switch (grade.toUpperCase()) { case "A+": case "A": - this.CAP = 5.00; + this.cap = 5.00; break; case "A-": - this.CAP = 4.50; + this.cap = 4.50; break; case "B+": - this.CAP = 4.00; + this.cap = 4.00; break; case "B": - this.CAP = 3.50; + this.cap = 3.50; break; case "B-": - this.CAP = 3.00; + this.cap = 3.00; break; case "C+": - this.CAP = 2.50; + this.cap = 2.50; break; case "C": - this.CAP = 2.00; + this.cap = 2.00; break; case "D+": - this.CAP = 1.50; + this.cap = 1.50; break; case "D": - this.CAP = 1.00; + this.cap = 1.00; break; case "F": - this.CAP = 0.00; + this.cap = 0.00; break; case "CS": //Completed Satisfactorily //Fallthrough @@ -104,21 +114,21 @@ public void setCAP(String grade) { case "EXE": //Exempted //Fallthrough case "NT": //Not taken - this.CAP = -1.00; + this.cap = -1.00; break; default: - this.CAP = 0.00; + this.cap = 0.00; break; } } - public double getCAP() { - return CAP; + public double getCap() { + return cap; } @Override - public int compareTo(Module module) { - return (Double.compare(this.getCAP(), module.getCAP())); + public int compareTo(PartialModule module) { + return (Double.compare(this.getCap(), module.getCap())); } @Override diff --git a/src/main/java/seedu/duke/objects/Person.java b/src/main/java/seedu/duke/objects/Person.java index aa0ec64be4..8ea4b4dac8 100644 --- a/src/main/java/seedu/duke/objects/Person.java +++ b/src/main/java/seedu/duke/objects/Person.java @@ -3,23 +3,22 @@ import java.util.ArrayList; import java.util.HashMap; +/** + * Class representing the user for PlanNUS. + */ public class Person { - //General Variables - private String personName; - - //Variables needed for CAP Calculation - private double currentTotalMCxGrade; - private int currentMC; - private int currentMCAfterSU; - //Variables needed for Academic Planner - private ArrayList modulesList; - private HashMap modulesAddedMap; + private String personName; + private double currentTotalMcxGrade; + private int currentMc; + private int currentMcAfterSU; + private ArrayList modulesList; + private HashMap modulesAddedMap; public Person(String personName) { - this.currentTotalMCxGrade = 0.0; - this.currentMC = 0; - this.currentMCAfterSU = 0; + this.currentTotalMcxGrade = 0.0; + this.currentMc = 0; + this.currentMcAfterSU = 0; this.personName = personName; this.modulesList = new ArrayList<>(); this.modulesAddedMap = new HashMap<>(); @@ -29,43 +28,43 @@ public String getPersonName() { return personName; } - public double getCurrentTotalMCxGrade() { - return currentTotalMCxGrade; + public double getCurrentTotalMcxGrade() { + return currentTotalMcxGrade; } - public void setCurrentTotalMCxGrade(double currentTotalMCxGrade) { - this.currentTotalMCxGrade = currentTotalMCxGrade; + public void setCurrentTotalMcxGrade(double currentTotalMcxGrade) { + this.currentTotalMcxGrade = currentTotalMcxGrade; } - public int getCurrentMC() { - return currentMC; + public int getCurrentMc() { + return currentMc; } - public void setCurrentMC(int currentMC) { - this.currentMC = currentMC; + public void setCurrentMc(int currentMc) { + this.currentMc = currentMc; } - public int getCurrentMCAfterSU() { - return currentMCAfterSU; + public int getCurrentMcAfterSU() { + return currentMcAfterSU; } - public void setCurrentMCAfterSU(int currentMCAfterSU) { - this.currentMCAfterSU = currentMCAfterSU; + public void setCurrentMcAfterSU(int currentMcAfterSU) { + this.currentMcAfterSU = currentMcAfterSU; } - public ArrayList getModulesList() { + public ArrayList getModulesList() { return modulesList; } - public void setModulesList(ArrayList modulesList) { + public void setModulesList(ArrayList modulesList) { this.modulesList = modulesList; } - public HashMap getModulesAddedMap() { + public HashMap getModulesAddedMap() { return modulesAddedMap; } - public void setModulesAddedMap(HashMap modulesAddedMap) { + public void setModulesAddedMap(HashMap modulesAddedMap) { this.modulesAddedMap = modulesAddedMap; } } diff --git a/src/main/java/seedu/duke/parser/AppParser.java b/src/main/java/seedu/duke/parser/AppParser.java new file mode 100644 index 0000000000..0adf8d904c --- /dev/null +++ b/src/main/java/seedu/duke/parser/AppParser.java @@ -0,0 +1,44 @@ +package seedu.duke.parser; + +import seedu.duke.apps.academicplanner.AcademicPlannerApp; +import seedu.duke.apps.capcalculator.CapCalculatorApp; +import seedu.duke.apps.moduleloader.ModuleLoader; +import seedu.duke.exceptions.AppParserException; +import seedu.duke.globalcommons.App; +import seedu.duke.objects.Person; +import seedu.duke.ui.Ui; + +/** + * Class representing the parser for applications used in the main PlanNUS page. + */ +public class AppParser { + private static final String ACADEMIC_PLAN_COMMAND = "acadplan"; + private static final String CAP_CALCULATOR_COMMAND = "capcalc"; + private static final String EXIT_COMMAND = "exit"; + private static final String INVALID_COMMAND_MESSAGE = "OOPS!!! I'm sorry, but I don't know what that means :-("; + + /** + * Processes user input command and returns app to be run. + * + * @param userInput user input + * @param allModules variable containing all modules offered by NUS + * @param currentPerson user of PlanNUS + * @param ui Ui + * @return app to be run + * @throws AppParserException thrown when an invalid command is give + */ + public static App parse(String userInput, ModuleLoader allModules, Person currentPerson, Ui ui) + throws AppParserException { + userInput = userInput.trim().toLowerCase(); + + if (userInput.equals(ACADEMIC_PLAN_COMMAND)) { + return new AcademicPlannerApp(allModules, currentPerson, ui); + } else if (userInput.equals(CAP_CALCULATOR_COMMAND)) { + return new CapCalculatorApp(currentPerson, ui); + } else if (userInput.equals(EXIT_COMMAND)) { + return new App(true); + } else { + throw new AppParserException(INVALID_COMMAND_MESSAGE); + } + } +} diff --git a/src/main/java/seedu/duke/ui/Ui.java b/src/main/java/seedu/duke/ui/Ui.java new file mode 100644 index 0000000000..8bbd702983 --- /dev/null +++ b/src/main/java/seedu/duke/ui/Ui.java @@ -0,0 +1,18 @@ +package seedu.duke.ui; + +import java.util.Scanner; + +/** + * Class representing the ui for PlanNUS. + */ +public class Ui { + private Scanner scanner; + + public Ui() { + this.scanner = new Scanner(System.in); + } + + public Scanner getScanner() { + return this.scanner; + } +} diff --git a/src/test/java/seedu/duke/DukeTest.java b/src/test/java/seedu/duke/PlanNus.java similarity index 91% rename from src/test/java/seedu/duke/DukeTest.java rename to src/test/java/seedu/duke/PlanNus.java index 2dda5fd651..b591ce5aff 100644 --- a/src/test/java/seedu/duke/DukeTest.java +++ b/src/test/java/seedu/duke/PlanNus.java @@ -4,7 +4,7 @@ import org.junit.jupiter.api.Test; -class DukeTest { +class PlanNus { @Test public void sampleTest() { assertTrue(true); diff --git a/src/test/java/seedu/duke/apps/ModuleLoaderTest.java b/src/test/java/seedu/duke/apps/ModuleLoaderTest.java new file mode 100644 index 0000000000..94f6561332 --- /dev/null +++ b/src/test/java/seedu/duke/apps/ModuleLoaderTest.java @@ -0,0 +1,58 @@ +package seedu.duke.apps; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import seedu.duke.apps.moduleloader.ModuleLoader; +import seedu.duke.apps.moduleloader.exceptions.ModuleLoaderException; +import seedu.duke.objects.FullModule; + +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class ModuleLoaderTest { + private static final int TOTAL_NUMBER_OF_MODULES = 12436; + private static final int INDEX_OF_CS1010 = 1786; + + private ModuleLoader allModules; + + @BeforeEach + public void setup() { + try { + allModules = new ModuleLoader(); + } catch (ModuleLoaderException e) { + System.out.println(e.getMessage()); + } + } + + @Test + void getModuleMap_loadAllModuleData_success() { + Map moduleMap = allModules.getModuleMap(); + + assertEquals(moduleMap.get("CS1010"), INDEX_OF_CS1010); + } + + @Test + void getModuleFullDetails_loadAllModuleData_success() { + FullModule[] modules = allModules.getModuleFullDetails(); + + assertEquals(modules.length, TOTAL_NUMBER_OF_MODULES); + assertEquals(modules[1786].toString(), "{\"additionalProperties\":{}," + + "\"attributes\":[true,false,false,false,false,false,false,false,false]," + + "\"corequisite\":\"\",\"department\":\"Computer Science\",\"faculty\":\"Computing\"," + + "\"moduleCode\":\"CS1010\",\"moduleCredit\":4," + + "\"preclusion\":\"CS1010E, CS1010J, CS1010S, CS1010X, CS1010XCP, CS1101S\"," + + "\"prerequisite\":\"\",\"semester\":[1,2],\"title\":\"Programming Methodology\"}"); + } + + @Test + void getModuleFullDetails_loadAllModuleData_fail() { + Exception exception = assertThrows(ModuleLoaderException.class, () -> { + allModules = new ModuleLoader(false); + }); + + assertTrue(exception.getMessage().contains("Data for Modules corrupted!\nTerminating program...")); + } +} \ No newline at end of file diff --git a/src/test/java/seedu/duke/apps/academicplanner/commons/AddUtilsTest.java b/src/test/java/seedu/duke/apps/academicplanner/commons/AddUtilsTest.java new file mode 100644 index 0000000000..6dc8efc706 --- /dev/null +++ b/src/test/java/seedu/duke/apps/academicplanner/commons/AddUtilsTest.java @@ -0,0 +1,84 @@ +package seedu.duke.apps.academicplanner.commons; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import seedu.duke.apps.moduleloader.ModuleLoader; +import seedu.duke.apps.moduleloader.exceptions.ModuleLoaderException; +import seedu.duke.objects.PartialModule; +import seedu.duke.objects.Person; +import java.util.ArrayList; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.assertFalse; + +class AddUtilsTest { + + ModuleLoader allModules; + Person currentPerson; + AddUtils addUtils; + ModuleValidator moduleValidator; + + @BeforeEach + void setup() { + try { + allModules = new ModuleLoader(); + currentPerson = new Person("Bob"); + addUtils = new AddUtils(allModules,currentPerson); + moduleValidator = new ModuleValidator(allModules,currentPerson); + } catch (ModuleLoaderException e) { + System.out.println(e.getMessage()); + } + } + + @Test + void addModuleToUser_emptyList_success() { + setup(); + + ArrayList modulesList = currentPerson.getModulesList(); + assertEquals(modulesList.size(),0); + addUtils.addModuleToUser("CS1010",1,"A+",4); + assertEquals(modulesList.size(),1); + + for (PartialModule m : modulesList) { + if (m.getModuleCode().equalsIgnoreCase("CS1010")) { + assertEquals(m.getModuleCode(),"CS1010"); + assertEquals(m.getSemesterIndex(),1); + assertEquals(m.getGrade(),"A+"); + assertEquals(m.getModuleCredit(),4); + } + } + assertTrue(moduleValidator.isModTakenByUser("CS1010")); + assertFalse(moduleValidator.isModTakenByUser("CS2113")); + } + + @Test + void addModuleToUser_nonEmptyList_success() { + setup(); + + ArrayList modulesList = currentPerson.getModulesList(); + assertEquals(modulesList.size(),0); + + addUtils.addModuleToUser("CS1010",1,"A+",4); + assertEquals(modulesList.size(),1); + + addUtils.addModuleToUser("CS1231",1,"B-",4); + assertEquals(modulesList.size(),2); + + for (PartialModule m : modulesList) { + if (m.getModuleCode().equalsIgnoreCase("CS1010")) { + assertEquals(m.getModuleCode(),"CS1010"); + assertEquals(m.getSemesterIndex(),1); + assertEquals(m.getGrade(),"A+"); + assertEquals(m.getModuleCredit(),4); + } else { + assertEquals(m.getModuleCode(),"CS1231"); + assertEquals(m.getSemesterIndex(),1); + assertEquals(m.getGrade(),"B-"); + assertEquals(m.getModuleCredit(),4); + } + } + assertTrue(moduleValidator.isModTakenByUser("CS1010")); + assertTrue(moduleValidator.isModTakenByUser("CS1231")); + assertFalse(moduleValidator.isModTakenByUser("CS2113")); + } +} diff --git a/src/test/java/seedu/duke/apps/capcalculator/CapCalculatorAppParserTest.java b/src/test/java/seedu/duke/apps/capcalculator/CapCalculatorAppParserTest.java new file mode 100644 index 0000000000..b52fd445ad --- /dev/null +++ b/src/test/java/seedu/duke/apps/capcalculator/CapCalculatorAppParserTest.java @@ -0,0 +1,78 @@ +package seedu.duke.apps.capcalculator; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import seedu.duke.apps.capcalculator.commands.CurrentCommand; +import seedu.duke.apps.capcalculator.commands.SetTargetCommand; +import seedu.duke.globalcommons.Command; +import seedu.duke.objects.Person; +import seedu.duke.ui.Ui; + +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.fail; +import static seedu.duke.apps.capcalculator.CapCalculatorParser.INVALID_COMMAND_MESSAGE; + +class CapCalculatorAppParserTest { + + private Person currentPerson; + private Ui ui; + + @BeforeEach + public void setup() { + currentPerson = new Person("Bob"); + ui = new Ui(); + } + + @Test + void parse_emptyInput_exceptionThrown() { + try { + final String emptyInput = ""; + CapCalculatorParser.parse(emptyInput, currentPerson, ui); + } catch (Exception e) { + assertEquals(INVALID_COMMAND_MESSAGE, e.getMessage()); + } + } + + @Test + void parse_unknownInput_exceptionThrown() { + try { + final String unknownInput = "unknown command word"; + CapCalculatorParser.parse(unknownInput, currentPerson, ui); + } catch (Exception e) { + assertEquals(INVALID_COMMAND_MESSAGE, e.getMessage()); + } + } + + /** + * Tests for commands. ======================================================================= + */ + + @Test + public void parse_currentCommand_parsedCorrectly() { + final String input = "current"; + parseAndAssertCommandType(input, CurrentCommand.class, currentPerson, ui); + } + + @Test + public void parse_setTargetCommand_parsedCorrectly() { + final String input = "set target"; + parseAndAssertCommandType(input, SetTargetCommand.class, currentPerson, ui); + } + + /** + * Parses input and asserts the class/type of the returned command object. + * + * @param input to be parsed + * @param expectedCommandClass expected class of returned command + */ + private void parseAndAssertCommandType(String input, Class expectedCommandClass, + Person currentPerson, Ui ui) { + try { + final Command result = CapCalculatorParser.parse(input, currentPerson, ui); + assertTrue(result.getClass().isAssignableFrom(expectedCommandClass)); + } catch (Exception e) { + fail(); + } + } +} \ No newline at end of file diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 892cb6cae7..572b7398a4 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -1,9 +1,42 @@ -Hello from - ____ _ -| _ \ _ _| | _____ -| | | | | | | |/ / _ \ -| |_| | |_| | < __/ -|____/ \__,_|_|\_\___| +Welcome to PlanNUS! + For academic planner, type + For CAP calculator, type + To exit PlanNUS, type -What is your name? -Hello James Gosling +Welcome to Academic Planner! +Available commands are: + add + edit + remove + view + exit +Type a command to continue... +Semester you plan to take CS1010? +Valid semesters are integers from 1 to 10, inclusive +Grade received for CS1010? +Valid grades are: + Letter Grades: A+, A, A-, B+, B, B-, C+, C, D+, D, F + Special Grades: CS, CU, S, U, W, IC, IP, AUD, WU, EXE + If you have yet to have a grade for the module: NT +CS1010 added into Semester 2. +Thank you for using Academic Planner! +Welcome back to PlanNUS Main Menu! + For academic planner, type + For CAP calculator, type + To exit PlanNUS, type +Welcome to CAP Calculator! Commands available are: + current + set target + To exit CAP Calculator, use command: "exit" + + Initializing your CAP... +Type a command to continue... +Your current now CAP is: 5 +Number of graded MCs taken is: 4 +Thank you for using Cap Calculator! +Welcome back to PlanNUS Main Menu! + For academic planner, type + For CAP calculator, type + To exit PlanNUS, type +OOPS!!! I'm sorry, but I don't know what that means :-( +Thanks for using PlanNUS! We hope to see you again! diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt index f6ec2e9f95..d0bf77927f 100644 --- a/text-ui-test/input.txt +++ b/text-ui-test/input.txt @@ -1 +1,10 @@ -James Gosling \ No newline at end of file +acadplan +add CS1010 +2 +A +exit +capcalc +current +exit +hi +exit \ No newline at end of file From fafa299a1d2558f8b84254b09b2e2f00f97ca3eb Mon Sep 17 00:00:00 2001 From: JuZihao <57383789+JuZihao@users.noreply.github.com> Date: Mon, 12 Oct 2020 10:51:22 +0800 Subject: [PATCH 074/450] Added assertion for set target --- .../duke/apps/capcalculator/commands/SetTargetCommand.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java b/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java index 8c45f34e65..2feb22faab 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java @@ -11,6 +11,7 @@ * Class representing the Set target CAP command for CAP Calculator. */ public class SetTargetCommand extends Command { + private final double MAXIMUM_CAP = 5.00; private Person currentPerson; private Ui ui; @@ -30,6 +31,8 @@ public void execute() { try { double targetCap = setTargetUtils.getTargetCap(); int targetMCs = setTargetUtils.getTargetGradedMC(); + assert targetCap <= MAXIMUM_CAP; + assert targetMCs > 0; setTargetUtils.showResultsToUser(targetCap, targetMCs); } catch (InvalidCapException e) { System.out.println(e.getMessage()); From 47d4588d5dc2b05c3b519b274fb986c43272f248 Mon Sep 17 00:00:00 2001 From: harryleecp Date: Mon, 12 Oct 2020 11:15:30 +0800 Subject: [PATCH 075/450] Added JUnit tests for EditUtil and RemoveUtil --- .../commons/EditUtilsTest.java | 76 +++++++++++++++++++ .../commons/RemoveUtilsTest.java | 48 ++++++++++++ 2 files changed, 124 insertions(+) create mode 100644 src/test/java/seedu/duke/apps/academicplanner/commons/EditUtilsTest.java create mode 100644 src/test/java/seedu/duke/apps/academicplanner/commons/RemoveUtilsTest.java diff --git a/src/test/java/seedu/duke/apps/academicplanner/commons/EditUtilsTest.java b/src/test/java/seedu/duke/apps/academicplanner/commons/EditUtilsTest.java new file mode 100644 index 0000000000..584ac30da8 --- /dev/null +++ b/src/test/java/seedu/duke/apps/academicplanner/commons/EditUtilsTest.java @@ -0,0 +1,76 @@ +package seedu.duke.apps.academicplanner.commons; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import seedu.duke.apps.moduleloader.ModuleLoader; +import seedu.duke.apps.moduleloader.exceptions.ModuleLoaderException; +import seedu.duke.objects.PartialModule; +import seedu.duke.objects.Person; + +import java.util.ArrayList; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class EditUtilsTest { + + ModuleLoader allModules; + ModuleValidator moduleValidator; + Person currentPerson; + AddUtils addUtils; + EditUtils editUtils; + ArrayList modulesList; + + @BeforeEach + void setup() { + try { + allModules = new ModuleLoader(); + currentPerson = new Person("Bob"); + addUtils = new AddUtils(allModules,currentPerson); + moduleValidator = new ModuleValidator(allModules,currentPerson); + editUtils = new EditUtils(allModules, currentPerson); + + modulesList = currentPerson.getModulesList(); + assertEquals(modulesList.size(),0); + + addUtils.addModuleToUser("CS1010",1,"A+",4); + assertEquals(modulesList.size(),1); + } catch (ModuleLoaderException e) { + System.out.println(e.getMessage()); + } + } + + @Test + void updateModuleGrade_nonEmptyList_success() { + setup(); + + editUtils.updateModuleGrade("CS1010", "A-"); + assertEquals(modulesList.size(), 1); + for (PartialModule m : modulesList) { + if (m.getModuleCode().equalsIgnoreCase("CS1010")) { + assertEquals(m.getModuleCode(), "CS1010"); + assertTrue(moduleValidator.isValidGrade(m.getGrade())); + assertEquals(m.getGrade(), "A-"); + assertEquals(m.getSemesterIndex(), 1); + assertEquals(m.getModuleCredit(), 4); + } + } + } + + @Test + void updateModuleSemester_nonEmptyList_success() { + setup(); + + editUtils.updateModuleSemester("CS1010", "3"); + assertEquals(modulesList.size(), 1); + for (PartialModule m : modulesList) { + if (m.getModuleCode().equalsIgnoreCase("CS1010")) { + assertEquals(m.getModuleCode(), "CS1010"); + assertEquals(m.getGrade(), "A+"); + assertTrue(moduleValidator.isValidSemester(m.getSemesterIndex())); + assertEquals(m.getSemesterIndex(), 3); + assertEquals(m.getModuleCredit(), 4); + } + } + } +} \ No newline at end of file diff --git a/src/test/java/seedu/duke/apps/academicplanner/commons/RemoveUtilsTest.java b/src/test/java/seedu/duke/apps/academicplanner/commons/RemoveUtilsTest.java new file mode 100644 index 0000000000..5e4f4174cf --- /dev/null +++ b/src/test/java/seedu/duke/apps/academicplanner/commons/RemoveUtilsTest.java @@ -0,0 +1,48 @@ +package seedu.duke.apps.academicplanner.commons; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import seedu.duke.apps.moduleloader.ModuleLoader; +import seedu.duke.apps.moduleloader.exceptions.ModuleLoaderException; +import seedu.duke.objects.PartialModule; +import seedu.duke.objects.Person; + +import java.util.ArrayList; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; + +class RemoveUtilsTest { + + ModuleLoader allModules; + Person currentPerson; + ModuleValidator moduleValidator; + AddUtils addUtils; + RemoveUtils removeUtils; + + @BeforeEach + void setup() { + try { + allModules = new ModuleLoader(); + currentPerson = new Person("Bob"); + addUtils = new AddUtils(allModules,currentPerson); + moduleValidator = new ModuleValidator(allModules,currentPerson); + removeUtils = new RemoveUtils(currentPerson); + } catch (ModuleLoaderException e) { + System.out.println(e.getMessage()); + } + } + + @Test + void removeModuleFromUserModuleList_nonEmptyList_success() { + setup(); + + ArrayList modulesList = currentPerson.getModulesList(); + assertEquals(modulesList.size(),0); + addUtils.addModuleToUser("CS1010",1,"A+",4); + assertEquals(modulesList.size(),1); + removeUtils.removeModuleFromUserModuleList("CS1010"); + assertEquals(modulesList.size(), 0); + assertFalse(moduleValidator.isModTakenByUser("CS1010")); + } +} \ No newline at end of file From 5ce185fa47f19ba821b5b2ba83df4404befa00d0 Mon Sep 17 00:00:00 2001 From: JuZihao <57383789+JuZihao@users.noreply.github.com> Date: Mon, 12 Oct 2020 11:33:59 +0800 Subject: [PATCH 076/450] Added assertions and logging to set target command. --- .../apps/capcalculator/commands/SetTargetCommand.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java b/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java index 2feb22faab..06ef899fe6 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java @@ -7,12 +7,16 @@ import seedu.duke.ui.Ui; import seedu.duke.apps.capcalculator.commons.SetTargetUtils; +import java.util.logging.Level; +import java.util.logging.Logger; + /** * Class representing the Set target CAP command for CAP Calculator. */ public class SetTargetCommand extends Command { private final double MAXIMUM_CAP = 5.00; + private static final Logger logger = Logger.getLogger("SetTargetCommand.java"); private Person currentPerson; private Ui ui; private SetTargetUtils setTargetUtils; @@ -29,14 +33,18 @@ public SetTargetCommand(Person currentPerson, Ui ui) { @Override public void execute() { try { + logger.log(Level.INFO,"Executing set target command."); double targetCap = setTargetUtils.getTargetCap(); int targetMCs = setTargetUtils.getTargetGradedMC(); assert targetCap <= MAXIMUM_CAP; assert targetMCs > 0; setTargetUtils.showResultsToUser(targetCap, targetMCs); + logger.log(Level.INFO,"Finish executing set target command."); } catch (InvalidCapException e) { + logger.log(Level.WARNING,"Cap entered is more than 5.00."); System.out.println(e.getMessage()); } catch (InvalidCreditException e) { + logger.log(Level.WARNING,"MC entered is less than 0."); System.out.println(e.getMessage()); } } From d7bb4b97203eaeb45b73dd905689106f103b3e2a Mon Sep 17 00:00:00 2001 From: JuZihao <57383789+JuZihao@users.noreply.github.com> Date: Mon, 12 Oct 2020 11:37:36 +0800 Subject: [PATCH 077/450] Minor adjustment to pass the gradle tests --- .../duke/apps/capcalculator/commands/SetTargetCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java b/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java index 06ef899fe6..566a881bb8 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java @@ -14,7 +14,7 @@ * Class representing the Set target CAP command for CAP Calculator. */ public class SetTargetCommand extends Command { - private final double MAXIMUM_CAP = 5.00; + private static final double MAXIMUM_CAP = 5.00; private static final Logger logger = Logger.getLogger("SetTargetCommand.java"); private Person currentPerson; From 5f1ade55032599a753082501032ccde2dde40400 Mon Sep 17 00:00:00 2001 From: JuZihao <57383789+JuZihao@users.noreply.github.com> Date: Mon, 12 Oct 2020 11:49:21 +0800 Subject: [PATCH 078/450] Update UserGuide.md Added more cautions to set target. --- docs/UserGuide.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index f2105e5600..05cd5a8af6 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -126,7 +126,8 @@ Input format: `set target` __Caution:__ -* Maximum CAP is 5.0 +* Maximum CAP should be smaller or equals to 5.00. +* Minimum MC should be greater than 0. From 7b293238073c755cf1c9b7c21fc855d2662a2cb9 Mon Sep 17 00:00:00 2001 From: harryleecp Date: Mon, 12 Oct 2020 12:02:11 +0800 Subject: [PATCH 079/450] Amended the errors in the JUnit test for RemoveUtil --- .../duke/apps/academicplanner/commons/RemoveUtilsTest.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/test/java/seedu/duke/apps/academicplanner/commons/RemoveUtilsTest.java b/src/test/java/seedu/duke/apps/academicplanner/commons/RemoveUtilsTest.java index 5e4f4174cf..ea02bf1cd3 100644 --- a/src/test/java/seedu/duke/apps/academicplanner/commons/RemoveUtilsTest.java +++ b/src/test/java/seedu/duke/apps/academicplanner/commons/RemoveUtilsTest.java @@ -10,7 +10,6 @@ import java.util.ArrayList; import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; class RemoveUtilsTest { @@ -43,6 +42,5 @@ void removeModuleFromUserModuleList_nonEmptyList_success() { assertEquals(modulesList.size(),1); removeUtils.removeModuleFromUserModuleList("CS1010"); assertEquals(modulesList.size(), 0); - assertFalse(moduleValidator.isModTakenByUser("CS1010")); } } \ No newline at end of file From 55e5a214267befcdd8e6741041b6ad2d8bcf71d8 Mon Sep 17 00:00:00 2001 From: JuZihao <57383789+JuZihao@users.noreply.github.com> Date: Mon, 12 Oct 2020 13:49:39 +0800 Subject: [PATCH 080/450] Minor debugging --- src/main/java/seedu/duke/objects/PartialModule.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/java/seedu/duke/objects/PartialModule.java b/src/main/java/seedu/duke/objects/PartialModule.java index 29bd46c978..c32c86c813 100644 --- a/src/main/java/seedu/duke/objects/PartialModule.java +++ b/src/main/java/seedu/duke/objects/PartialModule.java @@ -100,13 +100,14 @@ public void setCap(String grade) { case "S": //Satisfactory //Fallthrough case "U": //Unsatisfactory - //Fallthrough + //Fallthrough + case "IP": //In progress + this.cap = -1.00; + break; case "W": //Withdrawn //Fallthrough case "IC": //Incomplete //Fallthrough - case "IP": //In progress - //Fallthrough case "AUD": //Audit //Fallthrough case "WU": //Withdrawn from University @@ -114,7 +115,7 @@ public void setCap(String grade) { case "EXE": //Exempted //Fallthrough case "NT": //Not taken - this.cap = -1.00; + this.cap = -2.00; break; default: this.cap = 0.00; From cb545183086ce5fd5e2af585053f7e7b7a0e5243 Mon Sep 17 00:00:00 2001 From: harryleecp Date: Mon, 12 Oct 2020 14:05:02 +0800 Subject: [PATCH 081/450] Added new line at the bottom of test files --- .../seedu/duke/apps/academicplanner/commons/EditUtilsTest.java | 2 +- .../duke/apps/academicplanner/commons/RemoveUtilsTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/seedu/duke/apps/academicplanner/commons/EditUtilsTest.java b/src/test/java/seedu/duke/apps/academicplanner/commons/EditUtilsTest.java index 584ac30da8..0a2e70a8e8 100644 --- a/src/test/java/seedu/duke/apps/academicplanner/commons/EditUtilsTest.java +++ b/src/test/java/seedu/duke/apps/academicplanner/commons/EditUtilsTest.java @@ -73,4 +73,4 @@ void updateModuleSemester_nonEmptyList_success() { } } } -} \ No newline at end of file +} diff --git a/src/test/java/seedu/duke/apps/academicplanner/commons/RemoveUtilsTest.java b/src/test/java/seedu/duke/apps/academicplanner/commons/RemoveUtilsTest.java index ea02bf1cd3..711ecc81cd 100644 --- a/src/test/java/seedu/duke/apps/academicplanner/commons/RemoveUtilsTest.java +++ b/src/test/java/seedu/duke/apps/academicplanner/commons/RemoveUtilsTest.java @@ -43,4 +43,4 @@ void removeModuleFromUserModuleList_nonEmptyList_success() { removeUtils.removeModuleFromUserModuleList("CS1010"); assertEquals(modulesList.size(), 0); } -} \ No newline at end of file +} From e66612f6574f28109cb4f9bdcee73893da40ed39 Mon Sep 17 00:00:00 2001 From: harryleecp Date: Mon, 12 Oct 2020 14:50:30 +0800 Subject: [PATCH 082/450] Added some assertions to EditUtils and RemoveUtils --- .../java/seedu/duke/apps/academicplanner/commons/EditUtils.java | 1 + .../seedu/duke/apps/academicplanner/commons/RemoveUtils.java | 2 ++ 2 files changed, 3 insertions(+) diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java index d9975e37f5..b6fb86de7a 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java @@ -119,6 +119,7 @@ public void updateModuleSemester(String moduleCode, String newValue) { for (PartialModule item : modulesList) { if (item.getModuleCode().equals(moduleCode)) { item.setSemesterIndex(Integer.parseInt(newValue)); + assert item.getSemesterIndex() == Integer.parseInt(newValue); break; } } diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java index 3a958ad41c..bd16e6f27b 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java @@ -26,11 +26,13 @@ public RemoveUtils(Person currentPerson) { * @param moduleCode module to remove. */ public void removeModuleFromUserModuleList(String moduleCode) { + int totalNumberOfModules = modulesList.size(); for (PartialModule item : modulesList) { if (item.getModuleCode().equals(moduleCode)) { System.out.println(item.getModuleCode() + " has been removed from the list"); calculatorUtils.updateCap(FROM_REMOVE, item); modulesList.remove(item); + assert modulesList.size() == totalNumberOfModules - 1; return; } } From ea0117609e6634c84e3e52e8565e5c843362ed5d Mon Sep 17 00:00:00 2001 From: vanessa-kang <49282734+vanessa-kang@users.noreply.github.com> Date: Mon, 12 Oct 2020 17:16:01 +0800 Subject: [PATCH 083/450] Implemented print academic calendar feature --- .../AcademicPlannerParser.java | 4 +- .../commands/PrintCalenderCommand.java | 52 +++++++++++++++++++ 2 files changed, 53 insertions(+), 3 deletions(-) diff --git a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java index 3b0201b441..a52b35aceb 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java +++ b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java @@ -55,9 +55,7 @@ public static Command parse(String userInput, ModuleLoader allModules, Person cu } else if (inputs[0].equals(REMOVE_COMMAND)) { return new RemoveModuleCommand(allModules, currentPerson, in, inputs[MODULE_CODE_INDEX]); } else if (inputs[0].equals(VIEW_COMMAND)) { - System.out.println("Sorry this function is not ready yet!"); - return new PrintCalenderCommand(); - //TODO Add in print calender + return new PrintCalenderCommand(currentPerson); } else if (inputs[0].equals(EXIT_COMMAND)) { return new Command(true); } else { diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java index 4868a52ca3..0a73400663 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java @@ -1,6 +1,58 @@ package seedu.duke.apps.academicplanner.commands; import seedu.duke.globalcommons.Command; +import seedu.duke.objects.PartialModule; +import seedu.duke.objects.Person; + +import java.util.ArrayList; +import java.util.Comparator; public class PrintCalenderCommand extends Command { + + private static final String EMPTY_MODULE_LIST = "Your academic calendar is currently empty!"; + private static final String INDENT = " "; + + private final ArrayList modulesList; + + public PrintCalenderCommand(Person currentPerson) { + this.modulesList = currentPerson.getModulesList(); + } + + @Override + public void execute() { + + if (modulesList.size() != 0) { + ArrayList sortedBySem = new ArrayList<>(modulesList); + sortedBySem.sort(Comparator.comparing(PartialModule::getSemesterIndex)); + + int currSem = 0; + int newSem; + + for (PartialModule item : sortedBySem) { + newSem = item.getSemesterIndex(); + if (newSem != (currSem)) { + currSem = newSem; + System.out.println(INDENT + "SEMESTER " + currSem); + } + int spacing = 8 + (8 - item.getModuleCode().length()); + System.out.println(item.getModuleCode() + + printSpace(spacing) + + item.getGrade()); + } + } else { + System.out.println(EMPTY_MODULE_LIST); + } + } + + /** + * HELPER FUNCTION: Prints num spaces + */ + private String printSpace(int num) { + String space = ""; + for (int i = 0; i < num; i++) { + space += " "; + } + return space; + } + } From 0235f35ecf257797846497dc3bb522e0f72e6e8f Mon Sep 17 00:00:00 2001 From: JuZihao <57383789+JuZihao@users.noreply.github.com> Date: Mon, 12 Oct 2020 20:46:49 +0800 Subject: [PATCH 084/450] minor debugging --- .../apps/capcalculator/commons/CalculatorUtils.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java b/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java index 604e3d7bb6..12a932e848 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java @@ -150,12 +150,14 @@ private void editCapSuToNonSu(PartialModule currentModule, double cap) { */ private void updateCapFromAdd(PartialModule currentModule) { //Incrementing total MC regardless of SU - int moduleCredit = currentModule.getModuleCredit(); - currentPerson.setCurrentMc(currentPerson.getCurrentMc() + moduleCredit); + if (currentModule.getCap() != -2.00) { + int moduleCredit = currentModule.getModuleCredit(); + currentPerson.setCurrentMc(currentPerson.getCurrentMc() + moduleCredit); - //Incrementing total MC after SU only if module is not SU - if (currentModule.getCap() != -1.00) { - editCapSuToNonSu(currentModule, currentModule.getCap()); + //Incrementing total MC after SU only if module is not SU + if (currentModule.getCap() != -1.00) { + editCapSuToNonSu(currentModule, currentModule.getCap()); + } } } From bf32dd0587b4fe08f6ea8c7bc632955595afbbba Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Mon, 12 Oct 2020 23:19:47 +0800 Subject: [PATCH 085/450] Edit JavaDoc comments for print command --- .../academicplanner/commands/PrintCalenderCommand.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java index dd13a2aa24..6bf3834de8 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java @@ -3,10 +3,12 @@ import seedu.duke.globalcommons.Command; import seedu.duke.objects.PartialModule; import seedu.duke.objects.Person; - import java.util.ArrayList; import java.util.Comparator; +/** + * Class representing a print module command from the academic planner. + */ public class PrintCalenderCommand extends Command { private static final String EMPTY_MODULE_LIST = "Your academic calendar is currently empty!"; @@ -45,7 +47,9 @@ public void execute() { } /** - * HELPER FUNCTION: Prints num spaces + * Prints num spaces for indentation. + * @param num int of spaces to print + * @return string of spaces */ private String printSpace(int num) { String space = ""; From 2ffe6d3ff542b44c4570bbe071072bbddd4ab549 Mon Sep 17 00:00:00 2001 From: JuZihao <57383789+JuZihao@users.noreply.github.com> Date: Tue, 13 Oct 2020 20:38:10 +0800 Subject: [PATCH 086/450] Fixed a bug when logging are showing to users --- .../seedu/duke/apps/capcalculator/commands/SetTargetCommand.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java b/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java index 566a881bb8..46c2753476 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java @@ -33,6 +33,7 @@ public SetTargetCommand(Person currentPerson, Ui ui) { @Override public void execute() { try { + logger.setLevel(Level.WARNING); logger.log(Level.INFO,"Executing set target command."); double targetCap = setTargetUtils.getTargetCap(); int targetMCs = setTargetUtils.getTargetGradedMC(); From a615fb7265e9aa5e7a44792f49043c647046d9b8 Mon Sep 17 00:00:00 2001 From: Khenus Date: Wed, 14 Oct 2020 00:23:09 +0800 Subject: [PATCH 087/450] V0.8 Added logging into module loader --- .../java/seedu/duke/apps/moduleloader/ModuleLoader.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/seedu/duke/apps/moduleloader/ModuleLoader.java b/src/main/java/seedu/duke/apps/moduleloader/ModuleLoader.java index 6814c25ea2..f103147980 100644 --- a/src/main/java/seedu/duke/apps/moduleloader/ModuleLoader.java +++ b/src/main/java/seedu/duke/apps/moduleloader/ModuleLoader.java @@ -8,6 +8,8 @@ import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; /** * Class representing function to load all modules offered by NUS. @@ -21,6 +23,7 @@ public class ModuleLoader { private Map moduleMap; private FullModule[] moduleFullDetails; + private static Logger logger = Logger.getLogger("ModuleLoader.java"); /** * Default constructor for to load all modules from JSON file. @@ -41,7 +44,11 @@ public ModuleLoader() throws ModuleLoaderException { if (moduleFullDetails.length != TOTAL_NUMBER_OF_MODULES) { throw new ModuleLoaderException(CORRUPTED_MODULE_DATA + NEW_LINE + TERMINATION); } + + logger.setLevel(Level.WARNING); + logger.log(Level.INFO, "All Module successfully loaded"); } catch (NullPointerException e) { + logger.log(Level.WARNING, "Error while loading all modules: " + e.getMessage()); throw new ModuleLoaderException(MISSING_MODULE_DATA + NEW_LINE + TERMINATION); } } From dafeb6c27033d86da7c80766248f57f0dde8000b Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Wed, 14 Oct 2020 11:12:31 +0800 Subject: [PATCH 088/450] Add function to print specific semesters in VIEW command in ACADPLAN Add academic planner sorter Refactor out common view command methods into PrintUtils --- docs/UserGuide.md | 4 +- .../AcademicPlannerParser.java | 2 +- .../commands/AddModuleCommand.java | 2 +- .../commands/PrintCalenderCommand.java | 74 +++++++++--------- .../commons/AcademicCalendarSorter.java | 37 +++++++++ .../commons/ModuleValidator.java | 2 +- .../academicplanner/commons/PrintUtils.java | 76 +++++++++++++++++++ .../java/seedu/duke/globalcommons/App.java | 2 +- .../seedu/duke/globalcommons/Command.java | 2 +- text-ui-test/EXPECTED.TXT | 2 +- 10 files changed, 161 insertions(+), 42 deletions(-) create mode 100644 src/main/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorter.java create mode 100644 src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 05cd5a8af6..869ffc24f1 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -14,7 +14,7 @@ PlanNUS is a __desktop application for planning academic journey__ with modules 1. Double click on _PlanNUS.jar_ to start up the program. 1. If the previous step does not work, open up the command prompt. 1. Go to the directory where the jar file is saved at. -1. Enter the following command `java -jar PlanNUS.jar` +1. Enter the following command `java -jar PlanNus.jar` ## Features @@ -155,7 +155,7 @@ Input format: `exit` Question Type|Question|Answer :---:|---|--- General | How do I check which modules are offered by NUS? | For more info on which modules are offered by NUS, visit [here](https://nusmods.com/modules?sem[0]=1&sem[1]=2&sem[2]=3&sem[3]=4 "NUSMODS"). -General | What is a valid semester index? | For the purpose of this planning software, we have come to a decision to limit the maximum number of semesters an undergraduate can take to 10, which is 5 academic years. The notation they are represented by is by an integer of value 1 to 10. For a fresh undergraduate, they will begin at semester index of 1. For a year 3 student who is currently in semester 1, the semester index will be 5. +General | What is a valid semester index? | For the purpose of this planning software, we have come to a decision to limit the maximum number of semesters an undergraduate can take to 10, which is 5 academic years. The notation they are represented by is by an integer of value 1 to 10. For a fresh undergraduate, they will begin at semester index of 1. For a year 3 student who is currently in semester 1, the semester index will be 5. Please refer to the appendix for more information. General | What is a valid grade? | **Letter Grades**: A+, A, B+, B, B-, C+, C, D+, D, F , **Special Grades**: CS, CU, S, U, W, IC, IP, AUD, WU, EXE, **If you have yet to have a grade for the module**: NT **Q**: How do I transfer my data to another computer? diff --git a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java index a52b35aceb..225d5d37ed 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java +++ b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java @@ -55,7 +55,7 @@ public static Command parse(String userInput, ModuleLoader allModules, Person cu } else if (inputs[0].equals(REMOVE_COMMAND)) { return new RemoveModuleCommand(allModules, currentPerson, in, inputs[MODULE_CODE_INDEX]); } else if (inputs[0].equals(VIEW_COMMAND)) { - return new PrintCalenderCommand(currentPerson); + return new PrintCalenderCommand(currentPerson, in); } else if (inputs[0].equals(EXIT_COMMAND)) { return new Command(true); } else { diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java index 3bb8cf80bc..7ac867c78b 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java @@ -23,7 +23,7 @@ public class AddModuleCommand extends Command { + "\tLetter Grades: A+, A, A-, B+, B, B-, C+, C, D+, D, F\n" + "\tSpecial Grades: CS, CU, S, U, W, IC, IP, AUD, WU, EXE\n" + "\tIf you have yet to have a grade for the module: NT"; - private static final String VALID_SEMESTERS = "Valid semesters are integers from 1 to 10, inclusive"; + private static final String VALID_SEMESTERS = "\tValid semesters are integers from 1 to 10, inclusive"; private static final Logger logger = Logger.getLogger("AddModuleCommand.java"); private AddUtils addUtils; diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java index 6bf3834de8..38f814edda 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java @@ -1,61 +1,67 @@ package seedu.duke.apps.academicplanner.commands; +import seedu.duke.apps.academicplanner.commons.AcademicCalendarSorter; +import seedu.duke.apps.academicplanner.commons.ModuleValidator; +import seedu.duke.apps.academicplanner.commons.PrintUtils; +import seedu.duke.apps.academicplanner.exceptions.AcademicException; import seedu.duke.globalcommons.Command; import seedu.duke.objects.PartialModule; import seedu.duke.objects.Person; import java.util.ArrayList; import java.util.Comparator; +import java.util.Scanner; /** * Class representing a print module command from the academic planner. */ public class PrintCalenderCommand extends Command { - + private static final String FULL_PRINT_COMMAND = "Full"; private static final String EMPTY_MODULE_LIST = "Your academic calendar is currently empty!"; - private static final String INDENT = " "; + private static final String ERROR_INVALID_COMMAND = "Invalid command entered"; + private static final String ERROR_INVALID_SEMESTER = "Invalid semester entered."; + private static final String PROMPT_USER = "Printing command received.\n" + + "\tTo print the whole Academic Calendar, type \n" + + "\tTo print the desired semester only, type a number from 1 to 10, inclusive."; + private PrintUtils printUtils = new PrintUtils(); private final ArrayList modulesList; + private Scanner in; + AcademicCalendarSorter sorter; + - public PrintCalenderCommand(Person currentPerson) { + public PrintCalenderCommand(Person currentPerson, Scanner in) { this.modulesList = currentPerson.getModulesList(); + sorter = new AcademicCalendarSorter(modulesList); + this.in = in; } + /** + * Execution of print command where user will be prompted of choice for full calendar or semester. + */ @Override - public void execute() { - - if (modulesList.size() != 0) { - ArrayList sortedBySem = new ArrayList<>(modulesList); - sortedBySem.sort(Comparator.comparing(PartialModule::getSemesterIndex)); - - int currSem = 0; - int newSem; - - for (PartialModule item : sortedBySem) { - newSem = item.getSemesterIndex(); - if (newSem != (currSem)) { - currSem = newSem; - System.out.println(INDENT + "SEMESTER " + currSem); + public void execute() throws AcademicException { + if (modulesList.size() > 0) { + System.out.println(PROMPT_USER); + String userInput = in.nextLine().trim(); + if (userInput.equalsIgnoreCase(FULL_PRINT_COMMAND)) { + ArrayList sortedBySem = new ArrayList<>(modulesList); + sortedBySem.sort(Comparator.comparing(PartialModule::getSemesterIndex)); + printUtils.printFullCalendar(sortedBySem); + } else { + try { + int selectedSemester = Integer.parseInt(userInput); + if (ModuleValidator.isValidSemester(selectedSemester)) { + ArrayList sortedList = sorter.sortBySemester(selectedSemester); + printUtils.printBySemester(sortedList, selectedSemester); + } else { + throw new AcademicException(ERROR_INVALID_SEMESTER); + } + } catch (NumberFormatException e) { + throw new AcademicException(ERROR_INVALID_COMMAND); } - int spacing = 8 + (8 - item.getModuleCode().length()); - System.out.println(item.getModuleCode() - + printSpace(spacing) - + item.getGrade()); } } else { System.out.println(EMPTY_MODULE_LIST); } } - - /** - * Prints num spaces for indentation. - * @param num int of spaces to print - * @return string of spaces - */ - private String printSpace(int num) { - String space = ""; - for (int i = 0; i < num; i++) { - space += " "; - } - return space; - } } diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorter.java b/src/main/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorter.java new file mode 100644 index 0000000000..89f86702ae --- /dev/null +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorter.java @@ -0,0 +1,37 @@ +package seedu.duke.apps.academicplanner.commons; + +import seedu.duke.objects.PartialModule; +import java.util.ArrayList; + +/** + * Class representing sorter for academic calendar. + */ +public class AcademicCalendarSorter { + private ArrayList userModuleList; + + public AcademicCalendarSorter(ArrayList moduleList) { + userModuleList = moduleList; + } + + /** + * Sorts module list by semester index and return module list of chosen semester. + * + * @param semesterIndex semesterIndex to search for + * @return module list of the chosen semester + */ + public ArrayList sortBySemester(int semesterIndex) { + + if (userModuleList.size() < 1) { + System.out.println("Your academic calendar is empty."); + } + + ArrayList sortedList = new ArrayList<>(); + + for (PartialModule m : userModuleList) { + if (m.getSemesterIndex() == semesterIndex) { + sortedList.add(m); + } + } + return sortedList; + } +} diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java b/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java index b919829b7f..61ec03c5dc 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java @@ -49,7 +49,7 @@ public boolean isModTakenByUser(String moduleCode) { * @param semesterIndex semesterIndex to check * @return false */ - public boolean isValidSemester(int semesterIndex) { + public static boolean isValidSemester(int semesterIndex) { return (semesterIndex >= STARTING_SEMESTER_INDEX && semesterIndex <= FINAL_SEMESTER_INDEX); } diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java new file mode 100644 index 0000000000..0a7f42e867 --- /dev/null +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java @@ -0,0 +1,76 @@ +package seedu.duke.apps.academicplanner.commons; + +import seedu.duke.objects.PartialModule; +import java.util.ArrayList; + +/** + * Class representing the common print methods. + */ +public class PrintUtils { + + private static final String INDENT = " "; + + public PrintUtils() { + //Constructor is intentionally left blank + } + + /** + * Prints out the sorted list of modules. + * + * @param sortedList list to be printed + * @param selectedSemester semester chosen. + */ + public void printBySemester(ArrayList sortedList, int selectedSemester) { + if (sortedList.size() < 1) { + System.out.println("You have no modules added in the semester you requested!"); + } + + System.out.println(INDENT + "SEMESTER " + selectedSemester); + for (PartialModule item : sortedList) { + printCalendarLine(item); + } + } + + /** + * Prints a single entry of item. + * + * @param item module details to be printed + */ + private void printCalendarLine(PartialModule item) { + int spacing = 8 + (8 - item.getModuleCode().length()); + System.out.println(item.getModuleCode() + + printSpace(spacing) + + item.getGrade()); + } + + /** + * Prints out contents of the Array list of partial modules in an intuitive format. + * + * @param sortedBySem arraylist of modules + */ + public void printFullCalendar(ArrayList sortedBySem) { + int newSem; + int currentSem = 0; + for (PartialModule item : sortedBySem) { + newSem = item.getSemesterIndex(); + if (newSem != currentSem) { + currentSem = newSem; + System.out.println(INDENT + "SEMESTER " + currentSem); + } + printCalendarLine(item); + } + } + + /** + * Prints num spaces for indentation. + * @param num int of spaces to print + * @return string of spaces + */ + private String printSpace(int num) { + String space = ""; + for (int i = 0; i < num; i++) { + space += " "; + } + return space; + } +} diff --git a/src/main/java/seedu/duke/globalcommons/App.java b/src/main/java/seedu/duke/globalcommons/App.java index 5cdb9eec86..7d27bafb1e 100644 --- a/src/main/java/seedu/duke/globalcommons/App.java +++ b/src/main/java/seedu/duke/globalcommons/App.java @@ -19,7 +19,7 @@ public boolean isExit() { } public void run() { - + //Method is intentionally left blank } public boolean getIsExit() { diff --git a/src/main/java/seedu/duke/globalcommons/Command.java b/src/main/java/seedu/duke/globalcommons/Command.java index b1146f8dd4..d2ebc7c6b8 100644 --- a/src/main/java/seedu/duke/globalcommons/Command.java +++ b/src/main/java/seedu/duke/globalcommons/Command.java @@ -15,7 +15,7 @@ public Command(boolean isExit) { } public void execute() throws Exception { - + //Method is intentionally left blank } public boolean getIsExit() { diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 572b7398a4..fd8a002862 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -12,7 +12,7 @@ Available commands are: exit Type a command to continue... Semester you plan to take CS1010? -Valid semesters are integers from 1 to 10, inclusive + Valid semesters are integers from 1 to 10, inclusive Grade received for CS1010? Valid grades are: Letter Grades: A+, A, A-, B+, B, B-, C+, C, D+, D, F From f0fe30aafb8233600af6874c01a397b386b0f134 Mon Sep 17 00:00:00 2001 From: harryleecp Date: Wed, 14 Oct 2020 16:48:22 +0800 Subject: [PATCH 089/450] Added a new storage package and class. Also amended PlanNUS class (to be refactored again) --- src/main/java/seedu/duke/PlanNus.java | 16 ++++ src/main/java/seedu/duke/storage/Storage.java | 89 +++++++++++++++++++ 2 files changed, 105 insertions(+) create mode 100644 src/main/java/seedu/duke/storage/Storage.java diff --git a/src/main/java/seedu/duke/PlanNus.java b/src/main/java/seedu/duke/PlanNus.java index 5761fb8bda..ba03ab2c5e 100644 --- a/src/main/java/seedu/duke/PlanNus.java +++ b/src/main/java/seedu/duke/PlanNus.java @@ -4,8 +4,12 @@ import seedu.duke.globalcommons.App; import seedu.duke.objects.Person; import seedu.duke.parser.AppParser; +import seedu.duke.storage.Storage; import seedu.duke.ui.Ui; +import java.io.FileNotFoundException; +import java.io.IOException; + /** * Class representing main function of PlanNUS. */ @@ -41,11 +45,18 @@ public PlanNus() { * Main entry function for PlanNUS. */ public void run() { + Storage textFile = new Storage(); assert isStartupSuccessfully == true : "Startup is successful"; if (isStartupSuccessfully) { showWelcomeMessage(); boolean isExit = false; + try { + textFile.loadTextFile(currentPerson); + } catch (FileNotFoundException e) { + System.out.println("File PlanNUS.txt not found"); + } + while (!isExit) { try { String userInput = ui.getScanner().nextLine(); @@ -59,6 +70,11 @@ public void run() { System.out.println(e.getMessage()); } } + try { + textFile.saveTextFile(currentPerson); + } catch (IOException e) { + System.out.println("There is a problem saving PlanNUS.txt"); + } showExitMessage(); } } diff --git a/src/main/java/seedu/duke/storage/Storage.java b/src/main/java/seedu/duke/storage/Storage.java new file mode 100644 index 0000000000..a24181a728 --- /dev/null +++ b/src/main/java/seedu/duke/storage/Storage.java @@ -0,0 +1,89 @@ +package seedu.duke.storage; + +import seedu.duke.apps.academicplanner.commons.AddUtils; +import seedu.duke.apps.moduleloader.ModuleLoader; +import seedu.duke.objects.PartialModule; +import seedu.duke.objects.Person; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Scanner; + +public class Storage { + private ModuleLoader allModules; + private AddUtils addUtils; + + private static final String FILE_NAME = "PlanNUS.txt"; + private static final String INDENT = " "; + private static final String NEWLINE = "\n"; + + private static final int SEMESTER_WORD_POSITION = 1; + private static final int SEMESTER_INDEX_POSITION = 2; + private static final int MODULE_CODE_POSITION = 0; + private static final int MODULE_GRADE_POSITION = 1; + private static final int MODULE_CREDIT_POSITION = 2; + + + public void loadTextFile(Person currentPerson) throws FileNotFoundException { + File f = new File("PlanNUS.txt"); + Scanner in = new Scanner(f); + addUtils = new AddUtils(allModules, currentPerson); + int currSem = 0; + + while (in.hasNextLine()) { + String line = in.nextLine(); + String[] lineItems = line.split("\\s+"); + + if (lineItems[SEMESTER_WORD_POSITION].equals("SEMESTER")) { + currSem = Integer.parseInt(lineItems[SEMESTER_INDEX_POSITION]); + } else { + String currentModuleCode = lineItems[MODULE_CODE_POSITION]; + String currentModuleGrade = lineItems[MODULE_GRADE_POSITION]; + int currentModuleCredit = Integer.parseInt(lineItems[MODULE_CREDIT_POSITION]); + + addUtils.addModuleToUser(currentModuleCode, currSem, currentModuleGrade, currentModuleCredit); +// PartialModule currentModule = new PartialModule(currentModuleCode, currSem, currentModuleGrade, currentModuleCredit); +// modulesList.add(currentModule); + } + } + } + + public void saveTextFile(Person currentPerson) throws IOException { + FileWriter fw = new FileWriter(FILE_NAME); + ArrayList sortedBySem = currentPerson.getModulesList(); + sortedBySem.sort(Comparator.comparing(PartialModule::getSemesterIndex)); + + int currSem = 0; + int newSem; + String textToSave = ""; + + for (PartialModule item : sortedBySem) { + newSem = item.getSemesterIndex(); + if (newSem != currSem) { + currSem = newSem; + textToSave += INDENT + "SEMESTER " + currSem + NEWLINE; + } + int spacingCodeAndGrade = 8 + (8 - item.getModuleCode().length()); + int spacingGradeAndCredit = 8 + (8 - item.getGrade().length()); + textToSave += item.getModuleCode() + writeSpaces(spacingCodeAndGrade) + + item.getGrade() + writeSpaces(spacingGradeAndCredit) + + item.getModuleCredit() + NEWLINE; + } + + fw.write(textToSave); + fw.close(); + } + + public String writeSpaces(int spacing) { + String actualSpaces = ""; + while (spacing > 0) { + actualSpaces += " "; + spacing -= 1; + } + return actualSpaces; + } +} From d83c7cafcf4965218083eff4dad41d22b7dec3f6 Mon Sep 17 00:00:00 2001 From: harryleecp Date: Wed, 14 Oct 2020 17:03:40 +0800 Subject: [PATCH 090/450] Removed output for filenotfound --- src/main/java/seedu/duke/PlanNus.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/seedu/duke/PlanNus.java b/src/main/java/seedu/duke/PlanNus.java index ba03ab2c5e..3651037fbe 100644 --- a/src/main/java/seedu/duke/PlanNus.java +++ b/src/main/java/seedu/duke/PlanNus.java @@ -54,7 +54,7 @@ public void run() { try { textFile.loadTextFile(currentPerson); } catch (FileNotFoundException e) { - System.out.println("File PlanNUS.txt not found"); + e.printStackTrace(); } while (!isExit) { From ad182d875e369e9be36c7b55936522c21eb32195 Mon Sep 17 00:00:00 2001 From: harryleecp Date: Wed, 14 Oct 2020 17:17:04 +0800 Subject: [PATCH 091/450] Amended files to abide by checkstyle --- src/main/java/seedu/duke/PlanNus.java | 2 +- src/main/java/seedu/duke/storage/Storage.java | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/seedu/duke/PlanNus.java b/src/main/java/seedu/duke/PlanNus.java index 3651037fbe..47b885bed2 100644 --- a/src/main/java/seedu/duke/PlanNus.java +++ b/src/main/java/seedu/duke/PlanNus.java @@ -52,7 +52,7 @@ public void run() { boolean isExit = false; try { - textFile.loadTextFile(currentPerson); + textFile.loadTextFile(currentPerson); } catch (FileNotFoundException e) { e.printStackTrace(); } diff --git a/src/main/java/seedu/duke/storage/Storage.java b/src/main/java/seedu/duke/storage/Storage.java index a24181a728..be984748d6 100644 --- a/src/main/java/seedu/duke/storage/Storage.java +++ b/src/main/java/seedu/duke/storage/Storage.java @@ -46,8 +46,6 @@ public void loadTextFile(Person currentPerson) throws FileNotFoundException { int currentModuleCredit = Integer.parseInt(lineItems[MODULE_CREDIT_POSITION]); addUtils.addModuleToUser(currentModuleCode, currSem, currentModuleGrade, currentModuleCredit); -// PartialModule currentModule = new PartialModule(currentModuleCode, currSem, currentModuleGrade, currentModuleCredit); -// modulesList.add(currentModule); } } } From 039c62adeaf2a3255e19be805f1b82c44661505a Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Wed, 14 Oct 2020 19:57:08 +0800 Subject: [PATCH 092/450] Add print help command in academic planner --- .../academicplanner/AcademicPlannerApp.java | 1 + .../AcademicPlannerParser.java | 25 ++++++++--------- .../commands/PrintHelpCommand.java | 28 +++++++++++++++++++ text-ui-test/EXPECTED.TXT | 1 + 4 files changed, 41 insertions(+), 14 deletions(-) create mode 100644 src/main/java/seedu/duke/apps/academicplanner/commands/PrintHelpCommand.java diff --git a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java index c9b7e791dd..a09bc7d36b 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java +++ b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java @@ -17,6 +17,7 @@ public class AcademicPlannerApp extends App { + "\tedit \n" + "\tremove \n" + "\tview\n" + + "\thelp\n" + "\texit\n" + "Type a command to continue..."; diff --git a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java index 225d5d37ed..9c8a132c02 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java +++ b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java @@ -1,10 +1,11 @@ package seedu.duke.apps.academicplanner; -import seedu.duke.apps.moduleloader.ModuleLoader; import seedu.duke.apps.academicplanner.commands.AddModuleCommand; import seedu.duke.apps.academicplanner.commands.EditModuleCommand; import seedu.duke.apps.academicplanner.commands.PrintCalenderCommand; +import seedu.duke.apps.academicplanner.commands.PrintHelpCommand; import seedu.duke.apps.academicplanner.commands.RemoveModuleCommand; +import seedu.duke.apps.moduleloader.ModuleLoader; import seedu.duke.exceptions.CommandParserException; import seedu.duke.globalcommons.Command; import seedu.duke.objects.Person; @@ -15,6 +16,7 @@ * Class representing the parser for the academic parser. Used in the academic parser app. */ public class AcademicPlannerParser { + private static final int COMMAND_INDEX = 0; private static final int MODULE_CODE_INDEX = 1; public static final String NEW_LINE = "\n"; private static final String EXITING_CURRENT_COMMAND = "Exiting current command back to Academic Planner Main Menu."; @@ -23,15 +25,8 @@ public class AcademicPlannerParser { private static final String EDIT_COMMAND = "EDIT"; private static final String REMOVE_COMMAND = "REMOVE"; private static final String VIEW_COMMAND = "VIEW"; + private static final String HELP_COMMAND = "HELP"; private static final String EXIT_COMMAND = "EXIT"; - private static final String EXIT_MESSAGE = "Thank you for using Academic Planner!"; - private static final String COMMANDS_LIST = "Available commands are:\n" - + "\tadd \n" - + "\tedit \n" - + "\tremove \n" - + "\tview\n" - + "\texit\n" - + "Type a command to continue..."; /** * Command to process the user inputs and to return the intended command with the correct parameters. @@ -48,16 +43,18 @@ public static Command parse(String userInput, ModuleLoader allModules, Person cu String[] inputs = userInput.toUpperCase().split(" "); Scanner in = ui.getScanner(); - if (inputs[0].equals(ADD_COMMAND)) { + if (inputs[COMMAND_INDEX].equals(ADD_COMMAND)) { return new AddModuleCommand(allModules, currentPerson, in, inputs[MODULE_CODE_INDEX]); - } else if (inputs[0].equals(EDIT_COMMAND)) { + } else if (inputs[COMMAND_INDEX].equals(EDIT_COMMAND)) { return new EditModuleCommand(allModules, currentPerson, in, inputs[MODULE_CODE_INDEX]); - } else if (inputs[0].equals(REMOVE_COMMAND)) { + } else if (inputs[COMMAND_INDEX].equals(REMOVE_COMMAND)) { return new RemoveModuleCommand(allModules, currentPerson, in, inputs[MODULE_CODE_INDEX]); - } else if (inputs[0].equals(VIEW_COMMAND)) { + } else if (inputs[COMMAND_INDEX].equals(VIEW_COMMAND)) { return new PrintCalenderCommand(currentPerson, in); - } else if (inputs[0].equals(EXIT_COMMAND)) { + } else if (inputs[COMMAND_INDEX].equals(EXIT_COMMAND)) { return new Command(true); + } else if (inputs[COMMAND_INDEX].equals(HELP_COMMAND)) { + return new PrintHelpCommand(); } else { throw new CommandParserException(ERROR_INVALID_COMMAND + NEW_LINE + EXITING_CURRENT_COMMAND); } diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/PrintHelpCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/PrintHelpCommand.java new file mode 100644 index 0000000000..090c28e177 --- /dev/null +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/PrintHelpCommand.java @@ -0,0 +1,28 @@ +package seedu.duke.apps.academicplanner.commands; + +import seedu.duke.globalcommons.Command; + +/** + * Class representing a print help command from the academic planner. + */ +public class PrintHelpCommand extends Command { + + private static final String COMMANDS_LIST = "Available commands are:\n" + + "\tadd \n" + + "\tedit \n" + + "\tremove \n" + + "\tview\n" + + "\thelp\n" + + "\texit"; + + public PrintHelpCommand() { + //Constructor is intentionally left blank + } + + /** + * Prints commands list for academic planner. + */ + public void execute() { + System.out.println(COMMANDS_LIST); + } +} diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index fd8a002862..aaea2517f9 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -9,6 +9,7 @@ Available commands are: edit remove view + help exit Type a command to continue... Semester you plan to take CS1010? From a93e790b880ad3c37eee845a19fe8c114394cd9e Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Wed, 14 Oct 2020 20:22:40 +0800 Subject: [PATCH 093/450] Add prompt for user when awaiting command in acadplan and main menu --- src/main/java/seedu/duke/PlanNus.java | 2 ++ .../academicplanner/AcademicPlannerApp.java | 20 +++++++++++++------ text-ui-test/EXPECTED.TXT | 7 ++++++- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/main/java/seedu/duke/PlanNus.java b/src/main/java/seedu/duke/PlanNus.java index 5761fb8bda..5252521874 100644 --- a/src/main/java/seedu/duke/PlanNus.java +++ b/src/main/java/seedu/duke/PlanNus.java @@ -12,6 +12,7 @@ public class PlanNus { private static final String WELCOME_MESSAGE = "Welcome to PlanNUS!"; private static final String WELCOME_BACK_MESSAGE = "Welcome back to PlanNUS Main Menu!"; + private static final String AWAIT_COMMAND = "Type in a command to continue..."; private static final String EXIT_MESSAGE = "Thanks for using PlanNUS! We hope to see you again!"; private static final String HELP_MESSAGE = "\tFor academic planner, type \n" + "\tFor CAP calculator, type \n" @@ -48,6 +49,7 @@ public void run() { while (!isExit) { try { + System.out.println(AWAIT_COMMAND); String userInput = ui.getScanner().nextLine(); App selectedApp = AppParser.parse(userInput, allModules, currentPerson, ui); selectedApp.run(); diff --git a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java index a09bc7d36b..adeb8a0027 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java +++ b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java @@ -12,14 +12,14 @@ public class AcademicPlannerApp extends App { private static final String WELCOME_MESSAGE = "\nWelcome to Academic Planner!"; private static final String EXIT_MESSAGE = "Thank you for using Academic Planner!"; + private static final String AWAIT_COMMAND = "Type in a command to continue..."; private static final String COMMANDS_LIST = "Available commands are:\n" + "\tadd \n" + "\tedit \n" + "\tremove \n" + "\tview\n" + "\thelp\n" - + "\texit\n" - + "Type a command to continue..."; + + "\texit"; private final ModuleLoader allModules; private final Person currentPerson; @@ -35,12 +35,12 @@ public AcademicPlannerApp(ModuleLoader allModules, Person currentPerson, Ui ui) * Main entry point for the Academic Planner Application. */ public void run() { - System.out.println(WELCOME_MESSAGE); - System.out.println(COMMANDS_LIST); + showWelcomeMessage(); boolean isExit = false; while (!isExit) { try { + System.out.println(AWAIT_COMMAND); String userInput = ui.getScanner().nextLine(); Command commandInput = AcademicPlannerParser.parse(userInput, allModules, currentPerson, ui); commandInput.execute(); @@ -49,13 +49,21 @@ public void run() { System.out.println(e.getMessage()); } } - showExitMessageAcademicPlanner(); + showExitMessage(); + } + + /** + * Prints welcome message for Academic Planner. + */ + private void showWelcomeMessage() { + System.out.println(WELCOME_MESSAGE); + System.out.println(COMMANDS_LIST); } /** * Prints exit message for Academic Planner. */ - private void showExitMessageAcademicPlanner() { + private void showExitMessage() { System.out.println(EXIT_MESSAGE); } } diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index aaea2517f9..fc0a55eef7 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -2,6 +2,7 @@ Welcome to PlanNUS! For academic planner, type For CAP calculator, type To exit PlanNUS, type +Type in a command to continue... Welcome to Academic Planner! Available commands are: @@ -11,7 +12,7 @@ Available commands are: view help exit -Type a command to continue... +Type in a command to continue... Semester you plan to take CS1010? Valid semesters are integers from 1 to 10, inclusive Grade received for CS1010? @@ -20,11 +21,13 @@ Valid grades are: Special Grades: CS, CU, S, U, W, IC, IP, AUD, WU, EXE If you have yet to have a grade for the module: NT CS1010 added into Semester 2. +Type in a command to continue... Thank you for using Academic Planner! Welcome back to PlanNUS Main Menu! For academic planner, type For CAP calculator, type To exit PlanNUS, type +Type in a command to continue... Welcome to CAP Calculator! Commands available are: current set target @@ -39,5 +42,7 @@ Welcome back to PlanNUS Main Menu! For academic planner, type For CAP calculator, type To exit PlanNUS, type +Type in a command to continue... OOPS!!! I'm sorry, but I don't know what that means :-( +Type in a command to continue... Thanks for using PlanNUS! We hope to see you again! From acfc18c123f2f6aab765dc5247e6bdd3b7cb38d7 Mon Sep 17 00:00:00 2001 From: JuZihao <57383789+JuZihao@users.noreply.github.com> Date: Wed, 14 Oct 2020 20:47:42 +0800 Subject: [PATCH 094/450] Added basic functions of set su commands --- .../capcalculator/CapCalculatorParser.java | 8 ++++- .../duke/apps/capcalculator/SetSuParser.java | 36 +++++++++++++++++++ .../commands/SetSuByModuleCommand.java | 25 +++++++++++++ .../commands/SetSuBySemesterCommand.java | 31 ++++++++++++++++ .../commands/SetTargetCommand.java | 13 +++---- .../capcalculator/commons/SetSuUtils.java | 10 ++++++ .../capcalculator/commons/SetTargetUtils.java | 17 +++++---- .../exceptions/InvalidCapException.java | 2 +- .../exceptions/InvalidCreditException.java | 2 +- 9 files changed, 126 insertions(+), 18 deletions(-) create mode 100644 src/main/java/seedu/duke/apps/capcalculator/SetSuParser.java create mode 100644 src/main/java/seedu/duke/apps/capcalculator/commands/SetSuByModuleCommand.java create mode 100644 src/main/java/seedu/duke/apps/capcalculator/commands/SetSuBySemesterCommand.java create mode 100644 src/main/java/seedu/duke/apps/capcalculator/commons/SetSuUtils.java rename src/main/java/seedu/duke/{ => apps/capcalculator}/exceptions/InvalidCapException.java (85%) rename src/main/java/seedu/duke/{ => apps/capcalculator}/exceptions/InvalidCreditException.java (85%) diff --git a/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorParser.java b/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorParser.java index 329a39a883..e61523e282 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorParser.java +++ b/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorParser.java @@ -7,6 +7,8 @@ import seedu.duke.objects.Person; import seedu.duke.ui.Ui; +import java.util.Scanner; + /** * Class representing the parser used in the CAP Calculator app. */ @@ -18,6 +20,7 @@ public class CapCalculatorParser { public static final String INVALID_COMMAND_MESSAGE = "OOPS!!! I'm sorry, but I don't know what that means :-("; private static final String CURRENT_COMMAND = "current"; private static final String SET_TARGET_COMMAND = "set target"; + private static final String SET_SU_COMMAND = "set su"; private static final String EXIT_COMMAND = "exit"; /** @@ -30,14 +33,17 @@ public class CapCalculatorParser { * @throws CommandParserException thrown when an invalid command is entered */ public static Command parse(String userInput, Person currentPerson, Ui ui) throws CommandParserException { + Scanner in = ui.getScanner(); userInput = userInput.trim().toLowerCase(); if (userInput.equals(CURRENT_COMMAND)) { return new CurrentCommand(currentPerson); } else if (userInput.equals(SET_TARGET_COMMAND)) { - return new SetTargetCommand(currentPerson, ui); + return new SetTargetCommand(currentPerson, in); } else if (userInput.equals(EXIT_COMMAND)) { return new Command(true); + } else if (userInput.equals((SET_SU_COMMAND))) { + return SetSuParser.parse(currentPerson, in); } else { throw new CommandParserException(INVALID_COMMAND_MESSAGE); } diff --git a/src/main/java/seedu/duke/apps/capcalculator/SetSuParser.java b/src/main/java/seedu/duke/apps/capcalculator/SetSuParser.java new file mode 100644 index 0000000000..d906dd4d35 --- /dev/null +++ b/src/main/java/seedu/duke/apps/capcalculator/SetSuParser.java @@ -0,0 +1,36 @@ +package seedu.duke.apps.capcalculator; + +import seedu.duke.apps.capcalculator.commands.SetSuByModuleCommand; +import seedu.duke.apps.capcalculator.commands.SetSuBySemesterCommand; +import seedu.duke.exceptions.CommandParserException; +import seedu.duke.globalcommons.Command; +import seedu.duke.objects.Person; +import seedu.duke.ui.Ui; + +import java.util.Scanner; + +public class SetSuParser { + + private static final String BY_MODULES = "1"; + private static final String BY_SEMESTER = "2"; + private static final String PROMPT_SU_CHOICES = "Enter the number corresponding to the method you wish to S/U:\n" + + "\t1) Semester\n" + + "\t2) Modules"; + private static final String INVALID_SU_ERROR = "Number entered does not correspond to any S/U method."; + + public static Command parse(Person currentPerson, Scanner in) throws CommandParserException { + promptUserForSuCommand(); + String choice = in.nextLine().trim(); + if (choice.equals(BY_SEMESTER)) { + return new SetSuBySemesterCommand(currentPerson, in); + } else if (choice.equals(BY_MODULES)) { + return new SetSuByModuleCommand(currentPerson, in); + } else { + throw new CommandParserException(INVALID_SU_ERROR); + } + } + + private static void promptUserForSuCommand() { + System.out.println(PROMPT_SU_CHOICES); + } +} diff --git a/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuByModuleCommand.java b/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuByModuleCommand.java new file mode 100644 index 0000000000..32ba1c4b5c --- /dev/null +++ b/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuByModuleCommand.java @@ -0,0 +1,25 @@ +package seedu.duke.apps.capcalculator.commands; + +import seedu.duke.globalcommons.Command; +import seedu.duke.objects.Person; + +import java.util.Scanner; + +/** + * Class representing the set S/U by modules command for CAP Calculator. + */ +public class SetSuByModuleCommand extends Command { + + + + public SetSuByModuleCommand(Person currentPerson, Scanner in) { + } + + /** + * Function to calculate the best CAP after S/Uing some specific modules. + */ + @Override + public void execute() { + + } +} diff --git a/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuBySemesterCommand.java b/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuBySemesterCommand.java new file mode 100644 index 0000000000..25e0ced47b --- /dev/null +++ b/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuBySemesterCommand.java @@ -0,0 +1,31 @@ +package seedu.duke.apps.capcalculator.commands; + +import seedu.duke.apps.capcalculator.commons.SetSuUtils; +import seedu.duke.globalcommons.Command; +import seedu.duke.objects.Person; + +import java.util.Scanner; + +/** + * Class representing the set S/U by semester command for CAP Calculator. + */ +public class SetSuBySemesterCommand extends Command { + + private Person currentPerson; + private Scanner in; + private SetSuUtils setSuUtils; + + public SetSuBySemesterCommand(Person currentPerson, Scanner in) { + this.currentPerson = currentPerson; + this.in = in; + this.setSuUtils = new SetSuUtils(currentPerson, in); + } + + /** + * Function to calculate the best CAP after S/Uing a specific semester. + */ + @Override + public void execute() { + + } +} diff --git a/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java b/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java index 46c2753476..d5db8e70fe 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java @@ -1,12 +1,13 @@ package seedu.duke.apps.capcalculator.commands; -import seedu.duke.exceptions.InvalidCapException; -import seedu.duke.exceptions.InvalidCreditException; +import seedu.duke.apps.capcalculator.exceptions.InvalidCapException; +import seedu.duke.apps.capcalculator.exceptions.InvalidCreditException; import seedu.duke.globalcommons.Command; import seedu.duke.objects.Person; import seedu.duke.ui.Ui; import seedu.duke.apps.capcalculator.commons.SetTargetUtils; +import java.util.Scanner; import java.util.logging.Level; import java.util.logging.Logger; @@ -17,14 +18,10 @@ public class SetTargetCommand extends Command { private static final double MAXIMUM_CAP = 5.00; private static final Logger logger = Logger.getLogger("SetTargetCommand.java"); - private Person currentPerson; - private Ui ui; private SetTargetUtils setTargetUtils; - public SetTargetCommand(Person currentPerson, Ui ui) { - this.currentPerson = currentPerson; - this.ui = ui; - this.setTargetUtils = new SetTargetUtils(currentPerson, ui); + public SetTargetCommand(Person currentPerson, Scanner in) { + this.setTargetUtils = new SetTargetUtils(currentPerson, in); } /** diff --git a/src/main/java/seedu/duke/apps/capcalculator/commons/SetSuUtils.java b/src/main/java/seedu/duke/apps/capcalculator/commons/SetSuUtils.java new file mode 100644 index 0000000000..9d1faf1b69 --- /dev/null +++ b/src/main/java/seedu/duke/apps/capcalculator/commons/SetSuUtils.java @@ -0,0 +1,10 @@ +package seedu.duke.apps.capcalculator.commons; + +import seedu.duke.objects.Person; + +import java.util.Scanner; + +public class SetSuUtils { + public SetSuUtils(Person currentPerson, Scanner in) { + } +} diff --git a/src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java b/src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java index 0935b9af25..cbf5703d76 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java @@ -1,9 +1,12 @@ package seedu.duke.apps.capcalculator.commons; -import seedu.duke.exceptions.InvalidCapException; -import seedu.duke.exceptions.InvalidCreditException; +import seedu.duke.apps.capcalculator.exceptions.InvalidCapException; +import seedu.duke.apps.capcalculator.exceptions.InvalidCreditException; import seedu.duke.objects.Person; import seedu.duke.ui.Ui; + +import java.util.Scanner; + import static seedu.duke.apps.capcalculator.commons.CalculatorUtils.MAXIMUM_CAP; import static seedu.duke.apps.capcalculator.commons.CalculatorUtils.formatCapToString; @@ -15,11 +18,11 @@ public class SetTargetUtils { private static final String INVALID_MC_MESSAGE = "Your target MC cannot be 0!"; private Person currentPerson; - private Ui ui; + private Scanner in; - public SetTargetUtils(Person currentPerson, Ui ui) { + public SetTargetUtils(Person currentPerson, Scanner in) { this.currentPerson = currentPerson; - this.ui = ui; + this.in = in; } /** @@ -27,7 +30,7 @@ public SetTargetUtils(Person currentPerson, Ui ui) { */ public double getTargetCap() throws InvalidCapException { System.out.println("What is your target CAP?"); - double targetCap = Double.parseDouble(ui.getScanner().nextLine()); + double targetCap = Double.parseDouble(in.nextLine()); checkValidCap(targetCap); return targetCap; } @@ -37,7 +40,7 @@ public double getTargetCap() throws InvalidCapException { */ public int getTargetGradedMC() throws InvalidCreditException { System.out.println("How many graded MCs you are taking to achieve the target CAP?"); - int targetGradedMC = Integer.parseInt(ui.getScanner().nextLine()); + int targetGradedMC = Integer.parseInt(in.nextLine()); checkValidCredits(targetGradedMC); return targetGradedMC; } diff --git a/src/main/java/seedu/duke/exceptions/InvalidCapException.java b/src/main/java/seedu/duke/apps/capcalculator/exceptions/InvalidCapException.java similarity index 85% rename from src/main/java/seedu/duke/exceptions/InvalidCapException.java rename to src/main/java/seedu/duke/apps/capcalculator/exceptions/InvalidCapException.java index f1f6b74fcb..7f0f1677ab 100644 --- a/src/main/java/seedu/duke/exceptions/InvalidCapException.java +++ b/src/main/java/seedu/duke/apps/capcalculator/exceptions/InvalidCapException.java @@ -1,4 +1,4 @@ -package seedu.duke.exceptions; +package seedu.duke.apps.capcalculator.exceptions; import seedu.duke.apps.capcalculator.exceptions.CapCalculatorException; diff --git a/src/main/java/seedu/duke/exceptions/InvalidCreditException.java b/src/main/java/seedu/duke/apps/capcalculator/exceptions/InvalidCreditException.java similarity index 85% rename from src/main/java/seedu/duke/exceptions/InvalidCreditException.java rename to src/main/java/seedu/duke/apps/capcalculator/exceptions/InvalidCreditException.java index d953cc8b1c..075c7f7d04 100644 --- a/src/main/java/seedu/duke/exceptions/InvalidCreditException.java +++ b/src/main/java/seedu/duke/apps/capcalculator/exceptions/InvalidCreditException.java @@ -1,4 +1,4 @@ -package seedu.duke.exceptions; +package seedu.duke.apps.capcalculator.exceptions; import seedu.duke.apps.capcalculator.exceptions.CapCalculatorException; From ae54ccaf3f8115bbff20c22759886d584f84d213 Mon Sep 17 00:00:00 2001 From: Khenus Date: Thu, 15 Oct 2020 01:34:43 +0800 Subject: [PATCH 095/450] V1.1 Updated algorithm for module access --- .../commands/PrintCalenderCommand.java | 3 +-- .../commands/RemoveModuleCommand.java | 3 +-- .../academicplanner/commons/AddUtils.java | 4 +-- .../academicplanner/commons/EditUtils.java | 26 +++++++----------- .../commons/ModuleValidator.java | 2 +- .../academicplanner/commons/PrintUtils.java | 1 - .../academicplanner/commons/RemoveUtils.java | 27 ++++++++++--------- src/main/java/seedu/duke/objects/Person.java | 6 ++--- 8 files changed, 33 insertions(+), 39 deletions(-) diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java index 38f814edda..6edca49a1f 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java @@ -26,8 +26,7 @@ public class PrintCalenderCommand extends Command { private PrintUtils printUtils = new PrintUtils(); private final ArrayList modulesList; private Scanner in; - AcademicCalendarSorter sorter; - + private AcademicCalendarSorter sorter; public PrintCalenderCommand(Person currentPerson, Scanner in) { this.modulesList = currentPerson.getModulesList(); diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java index 2ce4e87a98..9816d64460 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java @@ -20,7 +20,7 @@ public class RemoveModuleCommand extends Command { private RemoveUtils removeUtils; private ModuleValidator moduleValidator; - private HashMap modulesAddedMap; + private HashMap modulesAddedMap; private String moduleCode; public RemoveModuleCommand(ModuleLoader allModules, Person currentPerson, Scanner in, String moduleCode) { @@ -38,7 +38,6 @@ public RemoveModuleCommand(ModuleLoader allModules, Person currentPerson, Scanne public void execute() { try { if (moduleValidator.isModTakenByUser(moduleCode)) { - modulesAddedMap.remove(moduleCode); removeUtils.removeModuleFromUserModuleList(moduleCode); } else { throw new AcademicException(ERROR_NOT_ADDED); diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java index 522e1f823f..653da16be2 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java @@ -15,7 +15,7 @@ public class AddUtils { private final ModuleLoader allModules; private final ArrayList modulesList; - private final HashMap modulesAddedMap; + private final HashMap modulesAddedMap; private final CalculatorUtils calculatorUtils; public AddUtils(ModuleLoader allModules, Person currentPerson) { @@ -37,7 +37,7 @@ public AddUtils(ModuleLoader allModules, Person currentPerson) { public void addModuleToUser(String moduleCode, int semesterValue, String gradeValue, int moduleCredit) { PartialModule newModuleToAdd = new PartialModule(moduleCode, semesterValue, gradeValue, moduleCredit); modulesList.add(newModuleToAdd); - modulesAddedMap.put(moduleCode, newModuleToAdd); + modulesAddedMap.put(moduleCode, modulesList.size() - 1); calculatorUtils.updateCap(FROM_ADD, newModuleToAdd); System.out.println(newModuleToAdd.getModuleCode() + " added into Semester " + semesterValue + "."); diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java index 87e3cf422a..c3dec74e2d 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java @@ -7,6 +7,7 @@ import seedu.duke.objects.Person; import java.util.ArrayList; import java.util.HashMap; +import java.util.Map; import java.util.Scanner; /** @@ -15,7 +16,7 @@ public class EditUtils { private final ArrayList modulesList; - private final HashMap modulesAddedMap; + private final HashMap modulesAddedMap; private final ModuleValidator modChecker; private final CalculatorUtils calculatorUtils; @@ -66,13 +67,10 @@ public void editModuleGrade(Scanner in, String moduleCode) throws AcademicExcept * @param gradeValue grade to edit to */ public void updateModuleGrade(String moduleCode, String gradeValue) { - for (PartialModule module : modulesList) { - if (module.getModuleCode().equals(moduleCode)) { - updateCurrentModuleGrade(gradeValue, module); - break; - } - } - modulesAddedMap.get(moduleCode).setGrade(gradeValue); + Integer moduleIndex = modulesAddedMap.get(moduleCode); + PartialModule module = modulesList.get(moduleIndex); + + updateCurrentModuleGrade(gradeValue, module); } /** @@ -105,7 +103,6 @@ public void editModuleSemester(Scanner in, String moduleCode) throws AcademicExc } updateModuleSemester(moduleCode, newValue); - modulesAddedMap.get(moduleCode).setSemesterIndex(Integer.parseInt(newValue)); System.out.println("Semester for " + moduleCode + " successfully updated!"); } @@ -116,13 +113,10 @@ public void editModuleSemester(Scanner in, String moduleCode) throws AcademicExc * @param newValue new semester index */ public void updateModuleSemester(String moduleCode, String newValue) { - for (PartialModule item : modulesList) { - if (item.getModuleCode().equals(moduleCode)) { - item.setSemesterIndex(Integer.parseInt(newValue)); + Integer moduleIndex = modulesAddedMap.get(moduleCode); + PartialModule item = modulesList.get(moduleIndex); + item.setSemesterIndex(Integer.parseInt(newValue)); - assert item.getSemesterIndex() == Integer.parseInt(newValue); - break; - } - } + assert item.getSemesterIndex() == Integer.parseInt(newValue); } } diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java b/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java index 61ec03c5dc..b74c73105e 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java @@ -12,7 +12,7 @@ public class ModuleValidator { private final ModuleLoader allModules; private final ArrayList modulesList; - private final HashMap modulesAddedMap; + private final HashMap modulesAddedMap; public ModuleValidator(ModuleLoader allModules, Person currentPerson) { this.allModules = allModules; diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java index 0a7f42e867..898b510ea3 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java @@ -7,7 +7,6 @@ * Class representing the common print methods. */ public class PrintUtils { - private static final String INDENT = " "; public PrintUtils() { diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java index 338755d8b4..217f43103c 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java @@ -4,6 +4,7 @@ import seedu.duke.objects.PartialModule; import seedu.duke.objects.Person; import java.util.ArrayList; +import java.util.Map; /** * Class representing remove module utilities from the remove module command. @@ -12,11 +13,13 @@ public class RemoveUtils { private static final int FROM_REMOVE = 3; private final ArrayList modulesList; + private final Map modulesAddedMap; private final CalculatorUtils calculatorUtils; public RemoveUtils(Person currentPerson) { this.modulesList = currentPerson.getModulesList(); this.calculatorUtils = new CalculatorUtils(currentPerson); + this.modulesAddedMap = currentPerson.getModulesAddedMap(); } /** @@ -26,17 +29,17 @@ public RemoveUtils(Person currentPerson) { * @param moduleCode module to remove. */ public void removeModuleFromUserModuleList(String moduleCode) { - int totalNumberOfModules = modulesList.size(); - - for (PartialModule item : modulesList) { - if (item.getModuleCode().equals(moduleCode)) { - System.out.println(item.getModuleCode() + " has been removed from the list"); - calculatorUtils.updateCap(FROM_REMOVE, item); - modulesList.remove(item); - - assert modulesList.size() == totalNumberOfModules - 1; - return; - } - } + final int totalNumberOfModules = modulesList.size(); + + Integer moduleIndex = modulesAddedMap.get(moduleCode); + PartialModule item = modulesList.get(moduleIndex); + + System.out.println(item.getModuleCode() + " has been removed from the list"); + calculatorUtils.updateCap(FROM_REMOVE, item); + + modulesList.remove(item); + modulesAddedMap.remove(moduleCode); + + assert modulesList.size() == totalNumberOfModules - 1; } } diff --git a/src/main/java/seedu/duke/objects/Person.java b/src/main/java/seedu/duke/objects/Person.java index 8ea4b4dac8..4c44c1500b 100644 --- a/src/main/java/seedu/duke/objects/Person.java +++ b/src/main/java/seedu/duke/objects/Person.java @@ -13,7 +13,7 @@ public class Person { private int currentMc; private int currentMcAfterSU; private ArrayList modulesList; - private HashMap modulesAddedMap; + private HashMap modulesAddedMap; public Person(String personName) { this.currentTotalMcxGrade = 0.0; @@ -60,11 +60,11 @@ public void setModulesList(ArrayList modulesList) { this.modulesList = modulesList; } - public HashMap getModulesAddedMap() { + public HashMap getModulesAddedMap() { return modulesAddedMap; } - public void setModulesAddedMap(HashMap modulesAddedMap) { + public void setModulesAddedMap(HashMap modulesAddedMap) { this.modulesAddedMap = modulesAddedMap; } } From 01adb7088050ffce26dfbd8df3dae052eeeefebd Mon Sep 17 00:00:00 2001 From: harryleecp Date: Thu, 15 Oct 2020 06:41:49 +0800 Subject: [PATCH 096/450] Changed the catch block instruction for filenotfound, also amended the expected text --- src/main/java/seedu/duke/PlanNus.java | 2 +- text-ui-test/EXPECTED.TXT | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/seedu/duke/PlanNus.java b/src/main/java/seedu/duke/PlanNus.java index 47b885bed2..8a79c82536 100644 --- a/src/main/java/seedu/duke/PlanNus.java +++ b/src/main/java/seedu/duke/PlanNus.java @@ -54,7 +54,7 @@ public void run() { try { textFile.loadTextFile(currentPerson); } catch (FileNotFoundException e) { - e.printStackTrace(); + System.out.println("File PlanNUS.txt not found"); } while (!isExit) { diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 572b7398a4..8d96d3d614 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -2,6 +2,7 @@ Welcome to PlanNUS! For academic planner, type For CAP calculator, type To exit PlanNUS, type +File PlanNUS.txt not found Welcome to Academic Planner! Available commands are: From 1fcdad9de5fabec46b247961981ae945b10198cf Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Thu, 15 Oct 2020 14:24:12 +0800 Subject: [PATCH 097/450] Update expected.txt --- text-ui-test/EXPECTED.TXT | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 843766b2a7..3054a482a5 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -2,8 +2,8 @@ Welcome to PlanNUS! For academic planner, type For CAP calculator, type To exit PlanNUS, type - File PlanNUS.txt not found +Type in a command to continue... Welcome to Academic Planner! Available commands are: From c8f8c96071c12a841f107337fc981f8afc3b6abf Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Thu, 15 Oct 2020 16:42:25 +0800 Subject: [PATCH 098/450] Update user guide to add help command and view full or view by semester for ACAD PLAN --- PlanNUS.txt | 6 ++++++ docs/UserGuide.md | 16 +++++++++++++++- docs/images/acadplan_help.PNG | Bin 0 -> 13261 bytes docs/images/acadplan_viewfull.PNG | Bin 0 -> 6877 bytes docs/images/acadplan_viewmain.PNG | Bin 0 -> 12045 bytes docs/images/acadplan_viewsem.PNG | Bin 0 -> 2833 bytes 6 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 PlanNUS.txt create mode 100644 docs/images/acadplan_help.PNG create mode 100644 docs/images/acadplan_viewfull.PNG create mode 100644 docs/images/acadplan_viewmain.PNG create mode 100644 docs/images/acadplan_viewsem.PNG diff --git a/PlanNUS.txt b/PlanNUS.txt new file mode 100644 index 0000000000..c32a8627c0 --- /dev/null +++ b/PlanNUS.txt @@ -0,0 +1,6 @@ + SEMESTER 1 +CS1010 A- 4 + SEMESTER 2 +CS2040C A 4 + SEMESTER 3 +CS2113T NT 4 diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 869ffc24f1..dbe85a67d4 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -92,9 +92,23 @@ __Caution:__ Input format: `view` -{Photo here} + +As shown in the image, users can choose from printing the full calendar by typing `full` or printing a specific semester by typing a number from 1-10, inclusive. +Expected output when user wishes to print the `full` calendar: + + + +Expected output when user wishes to print a specific semester: + + + +#### Printing help for acdemic calendar: `help` + +Input format: `help` + + ### Cap Calculator: `capcalc` diff --git a/docs/images/acadplan_help.PNG b/docs/images/acadplan_help.PNG new file mode 100644 index 0000000000000000000000000000000000000000..2bee4cce4cc385f3b8157232a3b9e73c78c46943 GIT binary patch literal 13261 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 W`OaIF3h^&ENV1ZO66In>{{IV-{-PTI literal 0 HcmV?d00001 diff --git a/docs/images/acadplan_viewfull.PNG b/docs/images/acadplan_viewfull.PNG new file mode 100644 index 0000000000000000000000000000000000000000..f220bc84e657e60a4d0a3ccaea5fe135bad020fa GIT binary patch literal 6877 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 literal 0 HcmV?d00001 diff --git a/docs/images/acadplan_viewmain.PNG b/docs/images/acadplan_viewmain.PNG new file mode 100644 index 0000000000000000000000000000000000000000..9fc72bef1497f3e6a4754a92979d818c5739e4d5 GIT binary patch literal 12045 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 CyE4%L literal 0 HcmV?d00001 From 954c017f478759a0f8ebe4fd0a2d26558b165de4 Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Thu, 15 Oct 2020 16:44:42 +0800 Subject: [PATCH 099/450] Remove Redundant files --- PlanNUS.txt | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 PlanNUS.txt diff --git a/PlanNUS.txt b/PlanNUS.txt deleted file mode 100644 index c32a8627c0..0000000000 --- a/PlanNUS.txt +++ /dev/null @@ -1,6 +0,0 @@ - SEMESTER 1 -CS1010 A- 4 - SEMESTER 2 -CS2040C A 4 - SEMESTER 3 -CS2113T NT 4 From fbe276b41f20717aac300b37e04b558e0ea73880 Mon Sep 17 00:00:00 2001 From: harryleecp Date: Thu, 15 Oct 2020 20:28:19 +0800 Subject: [PATCH 100/450] Adjusted image sizes for view feature in acadplan --- docs/UserGuide.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index dbe85a67d4..c61cc24128 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -98,17 +98,17 @@ As shown in the image, users can choose from printing the full calendar by typin Expected output when user wishes to print the `full` calendar: - + Expected output when user wishes to print a specific semester: - + -#### Printing help for acdemic calendar: `help` +#### Printing help for academic calendar: `help` Input format: `help` - + ### Cap Calculator: `capcalc` From 8a4bcdcc4d8f283786de8a68fc9ecd22e9894e89 Mon Sep 17 00:00:00 2001 From: harryleecp <60414537+harryleecp@users.noreply.github.com> Date: Thu, 15 Oct 2020 20:31:34 +0800 Subject: [PATCH 101/450] Amended .PNG file extension for affected images --- docs/UserGuide.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index c61cc24128..7f39c2666b 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -92,23 +92,23 @@ __Caution:__ Input format: `view` - + As shown in the image, users can choose from printing the full calendar by typing `full` or printing a specific semester by typing a number from 1-10, inclusive. Expected output when user wishes to print the `full` calendar: - + Expected output when user wishes to print a specific semester: - + #### Printing help for academic calendar: `help` Input format: `help` - + ### Cap Calculator: `capcalc` From 67938b924f55108d1bbd2a507c6a9f8704899b2f Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Thu, 15 Oct 2020 21:57:29 +0800 Subject: [PATCH 102/450] Update User Guide --- docs/UserGuide.md | 15 +++++---------- src/main/java/seedu/duke/PlanNus.java | 6 ++++-- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 7f39c2666b..aef55c198b 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -171,12 +171,7 @@ Question Type|Question|Answer General | How do I check which modules are offered by NUS? | For more info on which modules are offered by NUS, visit [here](https://nusmods.com/modules?sem[0]=1&sem[1]=2&sem[2]=3&sem[3]=4 "NUSMODS"). General | What is a valid semester index? | For the purpose of this planning software, we have come to a decision to limit the maximum number of semesters an undergraduate can take to 10, which is 5 academic years. The notation they are represented by is by an integer of value 1 to 10. For a fresh undergraduate, they will begin at semester index of 1. For a year 3 student who is currently in semester 1, the semester index will be 5. Please refer to the appendix for more information. General | What is a valid grade? | **Letter Grades**: A+, A, B+, B, B-, C+, C, D+, D, F , **Special Grades**: CS, CU, S, U, W, IC, IP, AUD, WU, EXE, **If you have yet to have a grade for the module**: NT - -**Q**: How do I transfer my data to another computer? - -**A**: {your answer here} - - +General | What is the name of the saved file? | The name of the saved file is `PlanNUS.txt` and can be found at the base of the folder, in the same location as your PlanNUS.jar. ## Command Summary @@ -190,6 +185,9 @@ Note that the following commands are case-insensitive. | Removing an existing module in the calendar | `remove ` | | Editing an existing module in the calendar | `edit ` | | Printing the academic calendar | `view` | +| Printing help information | `help` | +| Exiting the Academic Planner | `exit` | + * Initiate the __CAP calculator__: `capCalc` @@ -199,10 +197,7 @@ Note that the following commands are case-insensitive. | Configure current CAP and graded MCs | `set current` | | Set target CAP | `set target` | | Make the module grade as S/U | `set SU` | - -* To exit to the main page: `exit` - - +| Exiting the CAP Calculator | `exit` | ## Appendix diff --git a/src/main/java/seedu/duke/PlanNus.java b/src/main/java/seedu/duke/PlanNus.java index 938d7a69be..c95093dbf0 100644 --- a/src/main/java/seedu/duke/PlanNus.java +++ b/src/main/java/seedu/duke/PlanNus.java @@ -17,6 +17,8 @@ public class PlanNus { private static final String WELCOME_MESSAGE = "Welcome to PlanNUS!"; private static final String WELCOME_BACK_MESSAGE = "Welcome back to PlanNUS Main Menu!"; private static final String AWAIT_COMMAND = "Type in a command to continue..."; + private static final String ERROR_FILE_NOT_FOUND = "File PlanNUS.txt not found."; + private static final String ERROR_SAVING_FILE = "There is a problem saving PlanNUS.txt."; private static final String EXIT_MESSAGE = "Thanks for using PlanNUS! We hope to see you again!"; private static final String HELP_MESSAGE = "\tFor academic planner, type \n" + "\tFor CAP calculator, type \n" @@ -55,7 +57,7 @@ public void run() { try { textFile.loadTextFile(currentPerson); } catch (FileNotFoundException e) { - System.out.println("File PlanNUS.txt not found"); + System.out.println(ERROR_FILE_NOT_FOUND); } while (!isExit) { @@ -75,7 +77,7 @@ public void run() { try { textFile.saveTextFile(currentPerson); } catch (IOException e) { - System.out.println("There is a problem saving PlanNUS.txt"); + System.out.println(ERROR_SAVING_FILE); } showExitMessage(); } From b80e753e90175af8899245e3fa147161657813a4 Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Thu, 15 Oct 2020 21:58:51 +0800 Subject: [PATCH 103/450] Update expected.txt --- text-ui-test/EXPECTED.TXT | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 3054a482a5..687689d903 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -2,7 +2,7 @@ Welcome to PlanNUS! For academic planner, type For CAP calculator, type To exit PlanNUS, type -File PlanNUS.txt not found +File PlanNUS.txt not found. Type in a command to continue... Welcome to Academic Planner! From 4a8661559bea9c1e9f7884960057e401358648dd Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Fri, 16 Oct 2020 10:31:20 +0800 Subject: [PATCH 104/450] Add javadoc comments --- .gitignore | 1 + .../apps/moduleloader/exceptions/ModuleLoaderException.java | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 9a3f753456..5b44f482ee 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,4 @@ bin/ text-ui-test/EXPECTED-UNIX.TXT /text-ui-test/DIFF.TXT DIFF.TXT +PlanNUS.txt diff --git a/src/main/java/seedu/duke/apps/moduleloader/exceptions/ModuleLoaderException.java b/src/main/java/seedu/duke/apps/moduleloader/exceptions/ModuleLoaderException.java index 4e474ebd4d..2c02cbc81b 100644 --- a/src/main/java/seedu/duke/apps/moduleloader/exceptions/ModuleLoaderException.java +++ b/src/main/java/seedu/duke/apps/moduleloader/exceptions/ModuleLoaderException.java @@ -1,10 +1,13 @@ package seedu.duke.apps.moduleloader.exceptions; +/** + * Signals that an error has occured when loading modules. + */ public class ModuleLoaderException extends Exception { private String errorMessage; public ModuleLoaderException() { - + //Code is intentionally left blank } public ModuleLoaderException(String errorMessage) { From 4ef570968893abedb050e369118c4be024048ffb Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Fri, 16 Oct 2020 10:37:10 +0800 Subject: [PATCH 105/450] Add message to show number of total mcs taken in the current command in capcalc --- .../seedu/duke/apps/capcalculator/commands/CurrentCommand.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/seedu/duke/apps/capcalculator/commands/CurrentCommand.java b/src/main/java/seedu/duke/apps/capcalculator/commands/CurrentCommand.java index ee578390a0..50f18a18bc 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commands/CurrentCommand.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commands/CurrentCommand.java @@ -23,5 +23,6 @@ public void execute() { double currentCap = currentPerson.getCurrentTotalMcxGrade() / (double) currentPerson.getCurrentMcAfterSU(); System.out.println("Your current now CAP is: " + formatCapToString(currentCap)); System.out.println("Number of graded MCs taken is: " + currentPerson.getCurrentMcAfterSU()); + System.out.println("Total number of MCs taken is: " + currentPerson.getCurrentMc()); } } From fef46184171a182d5f18bd691eb6c9597ede2536 Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Fri, 16 Oct 2020 10:39:38 +0800 Subject: [PATCH 106/450] Update expected.txt --- text-ui-test/EXPECTED.TXT | 1 + 1 file changed, 1 insertion(+) diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 687689d903..18b4535d86 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -38,6 +38,7 @@ Welcome to CAP Calculator! Commands available are: Type a command to continue... Your current now CAP is: 5 Number of graded MCs taken is: 4 +Total number of MCs taken is: 4 Thank you for using Cap Calculator! Welcome back to PlanNUS Main Menu! For academic planner, type From 9f07100a8c7576d5fa5317e8fc5293a9f7e1883d Mon Sep 17 00:00:00 2001 From: Khenus Date: Fri, 16 Oct 2020 12:57:06 +0800 Subject: [PATCH 107/450] V1.2 WIP Storage refactoring and bug fixing --- .../duke/apps/capcalculator/commands/SetTargetCommand.java | 4 ++-- .../seedu/duke/apps/capcalculator/commons/SetTargetUtils.java | 4 ++-- .../capcalculator}/exceptions/InvalidCapException.java | 2 +- .../capcalculator}/exceptions/InvalidCreditException.java | 2 +- src/main/java/seedu/duke/storage/commons/LoadUtils.java | 4 ++++ 5 files changed, 10 insertions(+), 6 deletions(-) rename src/main/java/seedu/duke/{ => apps/capcalculator}/exceptions/InvalidCapException.java (85%) rename src/main/java/seedu/duke/{ => apps/capcalculator}/exceptions/InvalidCreditException.java (85%) create mode 100644 src/main/java/seedu/duke/storage/commons/LoadUtils.java diff --git a/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java b/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java index 46c2753476..a7414db97e 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java @@ -1,7 +1,7 @@ package seedu.duke.apps.capcalculator.commands; -import seedu.duke.exceptions.InvalidCapException; -import seedu.duke.exceptions.InvalidCreditException; +import seedu.duke.apps.capcalculator.exceptions.InvalidCapException; +import seedu.duke.apps.capcalculator.exceptions.InvalidCreditException; import seedu.duke.globalcommons.Command; import seedu.duke.objects.Person; import seedu.duke.ui.Ui; diff --git a/src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java b/src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java index 0935b9af25..c97588be34 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java @@ -1,7 +1,7 @@ package seedu.duke.apps.capcalculator.commons; -import seedu.duke.exceptions.InvalidCapException; -import seedu.duke.exceptions.InvalidCreditException; +import seedu.duke.apps.capcalculator.exceptions.InvalidCapException; +import seedu.duke.apps.capcalculator.exceptions.InvalidCreditException; import seedu.duke.objects.Person; import seedu.duke.ui.Ui; import static seedu.duke.apps.capcalculator.commons.CalculatorUtils.MAXIMUM_CAP; diff --git a/src/main/java/seedu/duke/exceptions/InvalidCapException.java b/src/main/java/seedu/duke/apps/capcalculator/exceptions/InvalidCapException.java similarity index 85% rename from src/main/java/seedu/duke/exceptions/InvalidCapException.java rename to src/main/java/seedu/duke/apps/capcalculator/exceptions/InvalidCapException.java index f1f6b74fcb..7f0f1677ab 100644 --- a/src/main/java/seedu/duke/exceptions/InvalidCapException.java +++ b/src/main/java/seedu/duke/apps/capcalculator/exceptions/InvalidCapException.java @@ -1,4 +1,4 @@ -package seedu.duke.exceptions; +package seedu.duke.apps.capcalculator.exceptions; import seedu.duke.apps.capcalculator.exceptions.CapCalculatorException; diff --git a/src/main/java/seedu/duke/exceptions/InvalidCreditException.java b/src/main/java/seedu/duke/apps/capcalculator/exceptions/InvalidCreditException.java similarity index 85% rename from src/main/java/seedu/duke/exceptions/InvalidCreditException.java rename to src/main/java/seedu/duke/apps/capcalculator/exceptions/InvalidCreditException.java index d953cc8b1c..075c7f7d04 100644 --- a/src/main/java/seedu/duke/exceptions/InvalidCreditException.java +++ b/src/main/java/seedu/duke/apps/capcalculator/exceptions/InvalidCreditException.java @@ -1,4 +1,4 @@ -package seedu.duke.exceptions; +package seedu.duke.apps.capcalculator.exceptions; import seedu.duke.apps.capcalculator.exceptions.CapCalculatorException; diff --git a/src/main/java/seedu/duke/storage/commons/LoadUtils.java b/src/main/java/seedu/duke/storage/commons/LoadUtils.java new file mode 100644 index 0000000000..16ee8361d6 --- /dev/null +++ b/src/main/java/seedu/duke/storage/commons/LoadUtils.java @@ -0,0 +1,4 @@ +package seedu.duke.storage.commons; + +public class LoadUtils { +} From 7778b1c4408474f5a746787c91527cfeaf520bb2 Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Fri, 16 Oct 2020 13:57:53 +0800 Subject: [PATCH 108/450] Support logging of different functions to seperate textfiles Create new wrapper class LoggingTool to initialise logger with intended parameters --- .gitignore | 3 ++ src/main/java/seedu/duke/PlanNus.java | 2 +- .../commands/AddModuleCommand.java | 17 +++++++-- .../apps/capcalculator/CapCalculatorApp.java | 4 +-- .../commands/SetTargetCommand.java | 15 ++++++-- .../duke/apps/moduleloader/ModuleLoader.java | 19 +++++++--- .../seedu/duke/globalcommons/LoggingTool.java | 35 +++++++++++++++++++ text-ui-test/EXPECTED.TXT | 6 ++-- 8 files changed, 85 insertions(+), 16 deletions(-) create mode 100644 src/main/java/seedu/duke/globalcommons/LoggingTool.java diff --git a/.gitignore b/.gitignore index 5b44f482ee..474f53e5c8 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,6 @@ text-ui-test/EXPECTED-UNIX.TXT /text-ui-test/DIFF.TXT DIFF.TXT PlanNUS.txt +AddModuleCommand.log +ModuleLoader.log +SetTargetCommand.log diff --git a/src/main/java/seedu/duke/PlanNus.java b/src/main/java/seedu/duke/PlanNus.java index c95093dbf0..912b571448 100644 --- a/src/main/java/seedu/duke/PlanNus.java +++ b/src/main/java/seedu/duke/PlanNus.java @@ -48,12 +48,12 @@ public PlanNus() { * Main entry function for PlanNUS. */ public void run() { + Storage textFile = new Storage(); assert isStartupSuccessfully == true : "Startup is successful"; if (isStartupSuccessfully) { showWelcomeMessage(); boolean isExit = false; - try { textFile.loadTextFile(currentPerson); } catch (FileNotFoundException e) { diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java index 7ac867c78b..c041eda34b 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java @@ -5,8 +5,11 @@ import seedu.duke.apps.academicplanner.commons.ModuleValidator; import seedu.duke.apps.academicplanner.exceptions.AcademicException; import seedu.duke.globalcommons.Command; +import seedu.duke.globalcommons.LoggingTool; import seedu.duke.objects.Person; +import java.io.IOException; import java.util.Scanner; +import java.util.logging.FileHandler; import java.util.logging.Level; import java.util.logging.Logger; @@ -25,7 +28,8 @@ public class AddModuleCommand extends Command { + "\tIf you have yet to have a grade for the module: NT"; private static final String VALID_SEMESTERS = "\tValid semesters are integers from 1 to 10, inclusive"; - private static final Logger logger = Logger.getLogger("AddModuleCommand.java"); + private static Logger logger; + private static FileHandler fh; private AddUtils addUtils; private ModuleValidator moduleValidator; private Scanner in; @@ -45,16 +49,19 @@ public AddModuleCommand(ModuleLoader allModules, Person currentPerson, Scanner i * If either is invalid, does not add module into user's academic calendar. */ @Override - public void execute() throws AcademicException { - logger.setLevel(Level.WARNING); + public void execute() throws AcademicException, IOException { + fh = new FileHandler("AddModuleCommand.log"); + logger = new LoggingTool("AddModuleCommand",fh).initialize(); logger.log(Level.INFO,"Executing add command."); if (!moduleValidator.isModOfferedByNus(moduleCode)) { logger.log(Level.WARNING,"Module entered not offered by NUS."); + fh.close(); throw new AcademicException(moduleCode + ERROR_NOT_OFFERED); } if (moduleValidator.isModTakenByUser(moduleCode)) { logger.log(Level.WARNING,"Module entered is duplicated."); + fh.close(); throw new AcademicException(ERROR_DUPLICATE_MOD); } @@ -66,11 +73,13 @@ public void execute() throws AcademicException { semesterValue = Integer.parseInt(userInput); } catch (Exception e) { logger.log(Level.WARNING,"Semester entered is not an integer."); + fh.close(); throw new AcademicException(ERROR_INVALID_COMMAND); } if (!moduleValidator.isValidSemester(semesterValue)) { logger.log(Level.WARNING,"Semester entered is invalid."); + fh.close(); throw new AcademicException(ERROR_INVALID_SEMESTER_INDEX); } @@ -79,6 +88,7 @@ public void execute() throws AcademicException { if (!moduleValidator.isValidGrade(gradeValue)) { logger.log(Level.WARNING,"Grade entered is invalid."); + fh.close(); throw new AcademicException(ERROR_INVALID_GRADE); } int moduleCredit = addUtils.getModuleCreditForModule(moduleCode); @@ -86,6 +96,7 @@ public void execute() throws AcademicException { assert moduleCredit >= 0; addUtils.addModuleToUser(moduleCode, semesterValue, gradeValue, moduleCredit); logger.log(Level.INFO,"Finish executing add command."); + fh.close(); } /** diff --git a/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorApp.java b/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorApp.java index 244317a7c2..e72176a379 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorApp.java +++ b/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorApp.java @@ -17,10 +17,10 @@ public class CapCalculatorApp extends App { private static final String AWAIT_COMMAND = "Type a command to continue..."; private static final String EXIT_MESSAGE = "Thank you for using Cap Calculator!"; - private static final String WELCOME_MESSAGE = "Welcome to CAP Calculator! Commands available are:\n" + private static final String WELCOME_MESSAGE = "Welcome to CAP Calculator!\nAvailable commands are:\n" + "\tcurrent\n" + "\tset target\n" - + "\tTo exit CAP Calculator, use command: \"exit\"\n\n" + + "\texit\n" + "\tInitializing your CAP..."; private final Person currentPerson; diff --git a/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java b/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java index 46c2753476..d0583498b1 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java @@ -3,10 +3,12 @@ import seedu.duke.exceptions.InvalidCapException; import seedu.duke.exceptions.InvalidCreditException; import seedu.duke.globalcommons.Command; +import seedu.duke.globalcommons.LoggingTool; import seedu.duke.objects.Person; import seedu.duke.ui.Ui; import seedu.duke.apps.capcalculator.commons.SetTargetUtils; - +import java.io.IOException; +import java.util.logging.FileHandler; import java.util.logging.Level; import java.util.logging.Logger; @@ -16,7 +18,8 @@ public class SetTargetCommand extends Command { private static final double MAXIMUM_CAP = 5.00; - private static final Logger logger = Logger.getLogger("SetTargetCommand.java"); + private static Logger logger; + private static FileHandler fh; private Person currentPerson; private Ui ui; private SetTargetUtils setTargetUtils; @@ -33,7 +36,8 @@ public SetTargetCommand(Person currentPerson, Ui ui) { @Override public void execute() { try { - logger.setLevel(Level.WARNING); + fh = new FileHandler("SetTargetCommand.log"); + logger = new LoggingTool("SetTargetCommand",fh).initialize(); logger.log(Level.INFO,"Executing set target command."); double targetCap = setTargetUtils.getTargetCap(); int targetMCs = setTargetUtils.getTargetGradedMC(); @@ -41,11 +45,16 @@ public void execute() { assert targetMCs > 0; setTargetUtils.showResultsToUser(targetCap, targetMCs); logger.log(Level.INFO,"Finish executing set target command."); + fh.close(); } catch (InvalidCapException e) { logger.log(Level.WARNING,"Cap entered is more than 5.00."); + fh.close(); System.out.println(e.getMessage()); } catch (InvalidCreditException e) { logger.log(Level.WARNING,"MC entered is less than 0."); + fh.close(); + System.out.println(e.getMessage()); + } catch (IOException e) { System.out.println(e.getMessage()); } } diff --git a/src/main/java/seedu/duke/apps/moduleloader/ModuleLoader.java b/src/main/java/seedu/duke/apps/moduleloader/ModuleLoader.java index f103147980..38726a8d2f 100644 --- a/src/main/java/seedu/duke/apps/moduleloader/ModuleLoader.java +++ b/src/main/java/seedu/duke/apps/moduleloader/ModuleLoader.java @@ -2,12 +2,16 @@ import com.google.gson.Gson; import seedu.duke.apps.moduleloader.exceptions.ModuleLoaderException; +import seedu.duke.globalcommons.LoggingTool; import seedu.duke.objects.FullModule; + +import java.io.IOException; import java.io.InputStream; import java.io.Reader; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map; +import java.util.logging.FileHandler; import java.util.logging.Level; import java.util.logging.Logger; @@ -23,13 +27,16 @@ public class ModuleLoader { private Map moduleMap; private FullModule[] moduleFullDetails; - private static Logger logger = Logger.getLogger("ModuleLoader.java"); + private static Logger logger; + private static FileHandler fh; /** * Default constructor for to load all modules from JSON file. */ public ModuleLoader() throws ModuleLoaderException { try { + fh = new FileHandler("ModuleLoader.log"); + logger = new LoggingTool("ModuleLoader",fh).initialize(); moduleMap = new HashMap<>(); Gson gson = new Gson(); @@ -37,19 +44,23 @@ public ModuleLoader() throws ModuleLoaderException { Reader jsonReader = new InputStreamReader(in); moduleFullDetails = gson.fromJson(jsonReader, FullModule[].class); - for (int i = 0; i < moduleFullDetails.length; i++) { - moduleMap.put(moduleFullDetails[i].getModuleCode(), i); + for (int index = 0; index < moduleFullDetails.length; index++) { + moduleMap.put(moduleFullDetails[index].getModuleCode(), index); } if (moduleFullDetails.length != TOTAL_NUMBER_OF_MODULES) { throw new ModuleLoaderException(CORRUPTED_MODULE_DATA + NEW_LINE + TERMINATION); } - logger.setLevel(Level.WARNING); logger.log(Level.INFO, "All Module successfully loaded"); + fh.close(); + } catch (NullPointerException e) { logger.log(Level.WARNING, "Error while loading all modules: " + e.getMessage()); + fh.close(); throw new ModuleLoaderException(MISSING_MODULE_DATA + NEW_LINE + TERMINATION); + } catch (IOException e) { + throw new ModuleLoaderException("Logger failed to initialize" + NEW_LINE + TERMINATION); } } diff --git a/src/main/java/seedu/duke/globalcommons/LoggingTool.java b/src/main/java/seedu/duke/globalcommons/LoggingTool.java new file mode 100644 index 0000000000..9d0ffc4a11 --- /dev/null +++ b/src/main/java/seedu/duke/globalcommons/LoggingTool.java @@ -0,0 +1,35 @@ +package seedu.duke.globalcommons; + +import java.io.IOException; +import java.util.logging.FileHandler; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.logging.SimpleFormatter; + +/** + * Class representing logging tool to log into text file without standard IO. + */ +public class LoggingTool { + Logger logger; + FileHandler fh; + + public LoggingTool(String loggerName, FileHandler fh) throws IOException { + logger = Logger.getLogger(loggerName); + this.fh = fh; + } + + /** + * Sets up logger to log at destination file and disables conventional IO logging. + * Note: Only logging of INFO and above is recorded. + * + * @return logger is configured + */ + public Logger initialize() { + logger.addHandler(fh); + SimpleFormatter formatter = new SimpleFormatter(); + fh.setFormatter(formatter); + logger.setUseParentHandlers(false); + logger.setLevel(Level.INFO); + return logger; + } +} diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 18b4535d86..3398346a92 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -29,11 +29,11 @@ Welcome back to PlanNUS Main Menu! For CAP calculator, type To exit PlanNUS, type Type in a command to continue... -Welcome to CAP Calculator! Commands available are: +Welcome to CAP Calculator! +Available commands are: current set target - To exit CAP Calculator, use command: "exit" - + exit Initializing your CAP... Type a command to continue... Your current now CAP is: 5 From e6cf2b64b9fa56a725884d67143522648e62d351 Mon Sep 17 00:00:00 2001 From: Khenus Date: Fri, 16 Oct 2020 16:13:31 +0800 Subject: [PATCH 109/450] V1.3 Refactored storage class and bug fixes --- src/main/java/seedu/duke/PlanNus.java | 19 +-- .../academicplanner/commons/AddUtils.java | 9 +- src/main/java/seedu/duke/storage/Storage.java | 90 ++++---------- .../duke/storage/commons/FieldValidator.java | 110 ++++++++++++++++++ .../seedu/duke/storage/commons/LoadUtils.java | 108 +++++++++++++++++ .../seedu/duke/storage/commons/SaveUtils.java | 56 +++++++++ .../CorruptedSaveFileException.java | 5 + .../storage/exceptions/LoadFileException.java | 14 +++ .../storage/exceptions/SaveFileException.java | 14 +++ src/main/java/seedu/duke/ui/Ui.java | 4 + 10 files changed, 342 insertions(+), 87 deletions(-) create mode 100644 src/main/java/seedu/duke/storage/commons/FieldValidator.java create mode 100644 src/main/java/seedu/duke/storage/commons/SaveUtils.java create mode 100644 src/main/java/seedu/duke/storage/exceptions/CorruptedSaveFileException.java create mode 100644 src/main/java/seedu/duke/storage/exceptions/LoadFileException.java create mode 100644 src/main/java/seedu/duke/storage/exceptions/SaveFileException.java diff --git a/src/main/java/seedu/duke/PlanNus.java b/src/main/java/seedu/duke/PlanNus.java index c95093dbf0..e679b70c39 100644 --- a/src/main/java/seedu/duke/PlanNus.java +++ b/src/main/java/seedu/duke/PlanNus.java @@ -7,9 +7,6 @@ import seedu.duke.storage.Storage; import seedu.duke.ui.Ui; -import java.io.FileNotFoundException; -import java.io.IOException; - /** * Class representing main function of PlanNUS. */ @@ -48,17 +45,13 @@ public PlanNus() { * Main entry function for PlanNUS. */ public void run() { - Storage textFile = new Storage(); + Storage storage = new Storage(allModules); assert isStartupSuccessfully == true : "Startup is successful"; if (isStartupSuccessfully) { showWelcomeMessage(); boolean isExit = false; - try { - textFile.loadTextFile(currentPerson); - } catch (FileNotFoundException e) { - System.out.println(ERROR_FILE_NOT_FOUND); - } + storage.loader(currentPerson); while (!isExit) { try { @@ -74,11 +67,9 @@ public void run() { System.out.println(e.getMessage()); } } - try { - textFile.saveTextFile(currentPerson); - } catch (IOException e) { - System.out.println(ERROR_SAVING_FILE); - } + + ui.closeScanner(); + storage.saver(currentPerson); showExitMessage(); } } diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java index 653da16be2..3e2824164f 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java @@ -34,13 +34,16 @@ public AddUtils(ModuleLoader allModules, Person currentPerson) { * @param gradeValue grade achieved for module * @param moduleCredit module's credit weightage */ - public void addModuleToUser(String moduleCode, int semesterValue, String gradeValue, int moduleCredit) { + public void addModuleToUser(String moduleCode, int semesterValue, String gradeValue, int moduleCredit, int ...from) { PartialModule newModuleToAdd = new PartialModule(moduleCode, semesterValue, gradeValue, moduleCredit); modulesList.add(newModuleToAdd); modulesAddedMap.put(moduleCode, modulesList.size() - 1); calculatorUtils.updateCap(FROM_ADD, newModuleToAdd); - System.out.println(newModuleToAdd.getModuleCode() - + " added into Semester " + semesterValue + "."); + + if (from.length == 0) { + System.out.println(newModuleToAdd.getModuleCode() + + " added into Semester " + semesterValue + "."); + } } /** diff --git a/src/main/java/seedu/duke/storage/Storage.java b/src/main/java/seedu/duke/storage/Storage.java index be984748d6..fa7862cfe1 100644 --- a/src/main/java/seedu/duke/storage/Storage.java +++ b/src/main/java/seedu/duke/storage/Storage.java @@ -1,87 +1,37 @@ package seedu.duke.storage; -import seedu.duke.apps.academicplanner.commons.AddUtils; import seedu.duke.apps.moduleloader.ModuleLoader; -import seedu.duke.objects.PartialModule; import seedu.duke.objects.Person; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileWriter; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.Scanner; +import seedu.duke.storage.commons.LoadUtils; +import seedu.duke.storage.commons.SaveUtils; +import seedu.duke.storage.exceptions.LoadFileException; +import seedu.duke.storage.exceptions.SaveFileException; public class Storage { - private ModuleLoader allModules; - private AddUtils addUtils; - private static final String FILE_NAME = "PlanNUS.txt"; - private static final String INDENT = " "; - private static final String NEWLINE = "\n"; - - private static final int SEMESTER_WORD_POSITION = 1; - private static final int SEMESTER_INDEX_POSITION = 2; - private static final int MODULE_CODE_POSITION = 0; - private static final int MODULE_GRADE_POSITION = 1; - private static final int MODULE_CREDIT_POSITION = 2; - - - public void loadTextFile(Person currentPerson) throws FileNotFoundException { - File f = new File("PlanNUS.txt"); - Scanner in = new Scanner(f); - addUtils = new AddUtils(allModules, currentPerson); - int currSem = 0; - - while (in.hasNextLine()) { - String line = in.nextLine(); - String[] lineItems = line.split("\\s+"); - - if (lineItems[SEMESTER_WORD_POSITION].equals("SEMESTER")) { - currSem = Integer.parseInt(lineItems[SEMESTER_INDEX_POSITION]); - } else { - String currentModuleCode = lineItems[MODULE_CODE_POSITION]; - String currentModuleGrade = lineItems[MODULE_GRADE_POSITION]; - int currentModuleCredit = Integer.parseInt(lineItems[MODULE_CREDIT_POSITION]); + private ModuleLoader allModules; - addUtils.addModuleToUser(currentModuleCode, currSem, currentModuleGrade, currentModuleCredit); - } - } + public Storage(ModuleLoader allModules) { + this.allModules = allModules; } - public void saveTextFile(Person currentPerson) throws IOException { - FileWriter fw = new FileWriter(FILE_NAME); - ArrayList sortedBySem = currentPerson.getModulesList(); - sortedBySem.sort(Comparator.comparing(PartialModule::getSemesterIndex)); + public void loader(Person currentPerson) { + LoadUtils loadHandler = new LoadUtils(currentPerson, FILE_NAME, allModules); - int currSem = 0; - int newSem; - String textToSave = ""; - - for (PartialModule item : sortedBySem) { - newSem = item.getSemesterIndex(); - if (newSem != currSem) { - currSem = newSem; - textToSave += INDENT + "SEMESTER " + currSem + NEWLINE; - } - int spacingCodeAndGrade = 8 + (8 - item.getModuleCode().length()); - int spacingGradeAndCredit = 8 + (8 - item.getGrade().length()); - textToSave += item.getModuleCode() + writeSpaces(spacingCodeAndGrade) - + item.getGrade() + writeSpaces(spacingGradeAndCredit) - + item.getModuleCredit() + NEWLINE; + try { + loadHandler.load(); + } catch(LoadFileException e) { + System.out.println(e.getMessage()); } - - fw.write(textToSave); - fw.close(); } - public String writeSpaces(int spacing) { - String actualSpaces = ""; - while (spacing > 0) { - actualSpaces += " "; - spacing -= 1; + public void saver(Person currentPerson) { + SaveUtils saveHandler = new SaveUtils(currentPerson, FILE_NAME); + + try { + saveHandler.save(); + } catch(SaveFileException e) { + System.out.println(e.getMessage()); } - return actualSpaces; } } diff --git a/src/main/java/seedu/duke/storage/commons/FieldValidator.java b/src/main/java/seedu/duke/storage/commons/FieldValidator.java new file mode 100644 index 0000000000..d4ded75274 --- /dev/null +++ b/src/main/java/seedu/duke/storage/commons/FieldValidator.java @@ -0,0 +1,110 @@ +package seedu.duke.storage.commons; + +import seedu.duke.apps.academicplanner.commons.ModuleValidator; +import seedu.duke.storage.exceptions.CorruptedSaveFileException; + +import static java.lang.Integer.parseInt; + +public class FieldValidator { + private static final int SEMESTER_VALUE_POSITION = 0; + private static final int MODULE_CODE_POSITION = 1; + private static final int MODULE_GRADE_POSITION = 2; + private static final int MODULE_CREDIT_POSITION = 3; + + private static final int MODULE_LOADED = 0; + private static final int MODULE_LOADING_FAILED = 1; + private static final int INVALID_SEMESTER = 2; + private static final int INVALID_MODULE_CODE = 3; + private static final int INVALID_GRADE = 4; + private static final int INVALID_MC = 5; + + private ModuleValidator moduleValidator; + private boolean isAllFieldValid; + private int[] details; + private String[] lineItems; + + /** + * Default constructor for Field Validator + * + * @param details An Array of int storing all the details of loading save file until current entry + * @param lineItems Different fields of current entry from save file + * @param moduleValidator Module validator to check validity of modules from save file + */ + + public FieldValidator(int details[], String[] lineItems, ModuleValidator moduleValidator) { + this.details = details; + this.lineItems = lineItems; + this.isAllFieldValid = true; + this.moduleValidator = moduleValidator; + } + + /** + * Validating all input fields from save file. Note that validator will terminate once + * an entry fails one check, with priority: + * + * Semester > Module code > Grade > Module Credit + * + * @return A boolean for whether current entry is valid + */ + public boolean validate() { + try { + int currentSem = parseInt(lineItems[SEMESTER_VALUE_POSITION]); + + if (currentSem > 10 && currentSem < 1) { + isAllFieldValid = false; + details[INVALID_SEMESTER]++; + } + } catch (NumberFormatException e) { + isAllFieldValid = false; + details[INVALID_SEMESTER]++; + } + + if (isAllFieldValid && !moduleValidator.isModOfferedByNus(lineItems[MODULE_CODE_POSITION])) { + isAllFieldValid = false; + details[INVALID_MODULE_CODE]++; + } + + if (isAllFieldValid && !moduleValidator.isValidGrade(lineItems[MODULE_GRADE_POSITION])) { + isAllFieldValid = false; + details[INVALID_GRADE]++; + } + + if (isAllFieldValid) { + try { + parseInt(lineItems[MODULE_CREDIT_POSITION]); + } catch (NumberFormatException e) { + isAllFieldValid = false; + details[INVALID_MC]++; + } + } + + if (isAllFieldValid) { + details[MODULE_LOADED]++; + } else { + details[MODULE_LOADING_FAILED]++; + } + + return isAllFieldValid; + } + + /** + * Print full loading details after loading finishes + * + * @param isAllEntryValid boolean stating whether all entries in save file is valid + * @param modulesLoaded number of modules loaded successfully + * @throws CorruptedSaveFileException throws an exception if save file is corrupted + */ + public static void printLoadDetails(boolean isAllEntryValid, int modulesLoaded) throws CorruptedSaveFileException { + if(isAllEntryValid) { + if (modulesLoaded == 0) { + System.out.println("Save file is empty. No module loaded."); + } else if (modulesLoaded == 1) { + System.out.println(modulesLoaded + " module loaded."); + } else { + System.out.println(modulesLoaded + " modules loaded."); + } + } else { + throw new CorruptedSaveFileException(); + } + } +} diff --git a/src/main/java/seedu/duke/storage/commons/LoadUtils.java b/src/main/java/seedu/duke/storage/commons/LoadUtils.java index 16ee8361d6..48c1db30cd 100644 --- a/src/main/java/seedu/duke/storage/commons/LoadUtils.java +++ b/src/main/java/seedu/duke/storage/commons/LoadUtils.java @@ -1,4 +1,112 @@ package seedu.duke.storage.commons; +import seedu.duke.apps.academicplanner.commons.AddUtils; +import seedu.duke.apps.academicplanner.commons.ModuleValidator; +import seedu.duke.apps.moduleloader.ModuleLoader; +import seedu.duke.objects.Person; +import seedu.duke.storage.exceptions.CorruptedSaveFileException; +import seedu.duke.storage.exceptions.LoadFileException; + +import java.io.File; +import java.io.FileNotFoundException; +import java.util.Scanner; + +import static java.lang.Integer.parseInt; +import static seedu.duke.storage.commons.FieldValidator.printLoadDetails; + public class LoadUtils { + private static final String NEW_LINE = "\n"; + private static final String TAB = " "; + + private static final int SEMESTER_VALUE_POSITION = 0; + private static final int MODULE_CODE_POSITION = 1; + private static final int MODULE_GRADE_POSITION = 2; + private static final int MODULE_CREDIT_POSITION = 3; + + private static final int MODULE_LOADED = 0; + private static final int MODULE_LOADING_FAILED = 1; + private static final int INVALID_SEMESTER = 2; + private static final int INVALID_MODULE_CODE = 3; + private static final int INVALID_GRADE = 4; + private static final int INVALID_MC = 5; + + private static final int FROM_LOAD = 1; + + private ModuleLoader allModules; + private AddUtils addUtils; + private ModuleValidator moduleValidator; + private Person currentPerson; + private String fileName; + + /** + * Default constructor for handling loading + * + * @param currentPerson a Person object storing information for current person + * @param fileName a String for name of save file + * @param allModules A ModuleLoader containing all loaded modules + */ + public LoadUtils(Person currentPerson, String fileName, ModuleLoader allModules) { + this.currentPerson = currentPerson; + this.fileName = fileName; + this.allModules = allModules; + this.moduleValidator = new ModuleValidator(allModules, currentPerson); + } + + /** + * Function to load save file + * + * @throws LoadFileException Exception when the save file is corrupted or missing + */ + public void load() throws LoadFileException { + int[] details = new int[6]; + boolean isAllEntryValid = true; + Scanner in; + + try { + File f = new File(fileName); + in = new Scanner(f); + addUtils = new AddUtils(allModules, currentPerson); + + while (in.hasNextLine()) { + String line = in.nextLine(); + String[] lineItems = line.split("\\|"); + + for (int i = 0; i < lineItems.length; i++) { + lineItems[i] = lineItems[i].trim().toUpperCase(); + } + + boolean isEntryValid = new FieldValidator(details, lineItems, moduleValidator).validate(); + + if(!isEntryValid) { + isAllEntryValid = false; + } + + int currentSem = parseInt(lineItems[SEMESTER_VALUE_POSITION]); + String currentModuleCode = lineItems[MODULE_CODE_POSITION]; + String currentModuleGrade = lineItems[MODULE_GRADE_POSITION]; + int currentModuleCredit = parseInt(lineItems[MODULE_CREDIT_POSITION]); + + addUtils.addModuleToUser(currentModuleCode, currentSem, + currentModuleGrade, currentModuleCredit, FROM_LOAD); + } + + in.close(); + + + + printLoadDetails(isAllEntryValid, details[MODULE_LOADED]); + } catch (FileNotFoundException e) { + throw new LoadFileException("Save file not found! \nIt will be automatically created.\n"); + } catch (CorruptedSaveFileException e) { + throw new LoadFileException("Save file corrupted! " + + "Details:" + NEW_LINE + + TAB + "Module loaded: " + details[MODULE_LOADED] + NEW_LINE + + TAB + "Module failed loading: " + details[MODULE_LOADING_FAILED] + NEW_LINE + + TAB + TAB + "- Invalid Semester: " + details[INVALID_SEMESTER] + NEW_LINE + + TAB + TAB + "- Invalid Module Code: " + details[INVALID_MODULE_CODE] + NEW_LINE + + TAB + TAB + "- Invalid Grade: " + details[INVALID_GRADE] + NEW_LINE + + TAB + TAB + "- Invalid Module Credit: " + details[INVALID_MC] + NEW_LINE + + NEW_LINE); + } + } } diff --git a/src/main/java/seedu/duke/storage/commons/SaveUtils.java b/src/main/java/seedu/duke/storage/commons/SaveUtils.java new file mode 100644 index 0000000000..07a20298d7 --- /dev/null +++ b/src/main/java/seedu/duke/storage/commons/SaveUtils.java @@ -0,0 +1,56 @@ +package seedu.duke.storage.commons; + +import seedu.duke.objects.PartialModule; +import seedu.duke.objects.Person; +import seedu.duke.storage.exceptions.SaveFileException; + +import java.io.FileWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Comparator; + +public class SaveUtils { + private static final String NEWLINE = "\n"; + private static final String SEPARATOR = "|"; + + private Person currentPerson; + private String fileName; + + /** + * Default constructor for handling save + * + * @param currentPerson a Person object storing information for current person + * @param fileName a String for name of save file + */ + public SaveUtils(Person currentPerson, String fileName) { + this.currentPerson = currentPerson; + this.fileName = fileName; + } + + /** + * Function to save person object into save file + * + * @throws SaveFileException Exception thrown if there is an error accessing save file + */ + public void save() throws SaveFileException { + try { + FileWriter fw = new FileWriter(fileName); + ArrayList sortedBySem = currentPerson.getModulesList(); + sortedBySem.sort(Comparator.comparing(PartialModule::getSemesterIndex)); + + String textToSave = ""; + + for (PartialModule item : sortedBySem) { + textToSave += item.getSemesterIndex() + SEPARATOR + + item.getModuleCode() + SEPARATOR + + item.getGrade() + SEPARATOR + + item.getModuleCredit() + NEWLINE; + } + + fw.write(textToSave); + fw.close(); + } catch (IOException e) { + throw new SaveFileException("Error accessing save file!"); + } + } +} diff --git a/src/main/java/seedu/duke/storage/exceptions/CorruptedSaveFileException.java b/src/main/java/seedu/duke/storage/exceptions/CorruptedSaveFileException.java new file mode 100644 index 0000000000..fe9eaa1aff --- /dev/null +++ b/src/main/java/seedu/duke/storage/exceptions/CorruptedSaveFileException.java @@ -0,0 +1,5 @@ +package seedu.duke.storage.exceptions; + +public class CorruptedSaveFileException extends Exception{ + public CorruptedSaveFileException() {} +} diff --git a/src/main/java/seedu/duke/storage/exceptions/LoadFileException.java b/src/main/java/seedu/duke/storage/exceptions/LoadFileException.java new file mode 100644 index 0000000000..564cd70f1a --- /dev/null +++ b/src/main/java/seedu/duke/storage/exceptions/LoadFileException.java @@ -0,0 +1,14 @@ +package seedu.duke.storage.exceptions; + +public class LoadFileException extends Exception { + private String errorMessage; + + public LoadFileException (String errorMessage) { + this.errorMessage = errorMessage; + } + + @Override + public String getMessage() { + return errorMessage; + } +} diff --git a/src/main/java/seedu/duke/storage/exceptions/SaveFileException.java b/src/main/java/seedu/duke/storage/exceptions/SaveFileException.java new file mode 100644 index 0000000000..31bfbcfbd5 --- /dev/null +++ b/src/main/java/seedu/duke/storage/exceptions/SaveFileException.java @@ -0,0 +1,14 @@ +package seedu.duke.storage.exceptions; + +public class SaveFileException extends Exception { + private String errorMessage; + + public SaveFileException (String errorMessage) { + this.errorMessage = errorMessage; + } + + @Override + public String getMessage() { + return errorMessage; + } +} diff --git a/src/main/java/seedu/duke/ui/Ui.java b/src/main/java/seedu/duke/ui/Ui.java index 8bbd702983..c692721314 100644 --- a/src/main/java/seedu/duke/ui/Ui.java +++ b/src/main/java/seedu/duke/ui/Ui.java @@ -15,4 +15,8 @@ public Ui() { public Scanner getScanner() { return this.scanner; } + + public void closeScanner() { + this.scanner.close(); + } } From 41993635ec4b950339aab7bb6081fb0abe57b6e7 Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Fri, 16 Oct 2020 16:14:31 +0800 Subject: [PATCH 110/450] Refactor logging usage --- .../apps/academicplanner/commands/AddModuleCommand.java | 6 ++++-- .../apps/capcalculator/commands/SetTargetCommand.java | 6 ++++-- .../java/seedu/duke/apps/moduleloader/ModuleLoader.java | 8 +++++--- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java index c041eda34b..875ef00e19 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java @@ -27,6 +27,8 @@ public class AddModuleCommand extends Command { + "\tSpecial Grades: CS, CU, S, U, W, IC, IP, AUD, WU, EXE\n" + "\tIf you have yet to have a grade for the module: NT"; private static final String VALID_SEMESTERS = "\tValid semesters are integers from 1 to 10, inclusive"; + private static final String LOG_FILE_NAME = "AddModuleCommand.log"; + private static final String LOGGER_NAME = "AddModuleCommand"; private static Logger logger; private static FileHandler fh; @@ -50,8 +52,8 @@ public AddModuleCommand(ModuleLoader allModules, Person currentPerson, Scanner i */ @Override public void execute() throws AcademicException, IOException { - fh = new FileHandler("AddModuleCommand.log"); - logger = new LoggingTool("AddModuleCommand",fh).initialize(); + fh = new FileHandler(LOG_FILE_NAME); + logger = new LoggingTool(LOGGER_NAME,fh).initialize(); logger.log(Level.INFO,"Executing add command."); if (!moduleValidator.isModOfferedByNus(moduleCode)) { logger.log(Level.WARNING,"Module entered not offered by NUS."); diff --git a/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java b/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java index d0583498b1..760d2af353 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java @@ -17,6 +17,8 @@ */ public class SetTargetCommand extends Command { private static final double MAXIMUM_CAP = 5.00; + private static final String LOG_FILE_NAME = "SetTargetCommand.log"; + private static final String LOGGER_NAME = "SetTargetCommand"; private static Logger logger; private static FileHandler fh; @@ -36,8 +38,8 @@ public SetTargetCommand(Person currentPerson, Ui ui) { @Override public void execute() { try { - fh = new FileHandler("SetTargetCommand.log"); - logger = new LoggingTool("SetTargetCommand",fh).initialize(); + fh = new FileHandler(LOG_FILE_NAME); + logger = new LoggingTool(LOGGER_NAME,fh).initialize(); logger.log(Level.INFO,"Executing set target command."); double targetCap = setTargetUtils.getTargetCap(); int targetMCs = setTargetUtils.getTargetGradedMC(); diff --git a/src/main/java/seedu/duke/apps/moduleloader/ModuleLoader.java b/src/main/java/seedu/duke/apps/moduleloader/ModuleLoader.java index 38726a8d2f..c2c6cec1f0 100644 --- a/src/main/java/seedu/duke/apps/moduleloader/ModuleLoader.java +++ b/src/main/java/seedu/duke/apps/moduleloader/ModuleLoader.java @@ -24,6 +24,8 @@ public class ModuleLoader { public static final String MISSING_MODULE_DATA = "Data for Modules not found!"; public static final String TERMINATION = "Terminating program..."; public static final String CORRUPTED_MODULE_DATA = "Data for Modules corrupted!"; + public static final String LOG_FILE_NAME = "ModuleLoader.log"; + public static final String LOGGER_NAME = "ModuleLoader"; private Map moduleMap; private FullModule[] moduleFullDetails; @@ -35,8 +37,8 @@ public class ModuleLoader { */ public ModuleLoader() throws ModuleLoaderException { try { - fh = new FileHandler("ModuleLoader.log"); - logger = new LoggingTool("ModuleLoader",fh).initialize(); + fh = new FileHandler(LOG_FILE_NAME); + logger = new LoggingTool(LOGGER_NAME,fh).initialize(); moduleMap = new HashMap<>(); Gson gson = new Gson(); @@ -60,7 +62,7 @@ public ModuleLoader() throws ModuleLoaderException { fh.close(); throw new ModuleLoaderException(MISSING_MODULE_DATA + NEW_LINE + TERMINATION); } catch (IOException e) { - throw new ModuleLoaderException("Logger failed to initialize" + NEW_LINE + TERMINATION); + throw new ModuleLoaderException("Logger failed to initialize: " + NEW_LINE + TERMINATION); } } From 450693847f5f0c8cfa6a59ac8df52f2d9c52f788 Mon Sep 17 00:00:00 2001 From: Khenus Date: Fri, 16 Oct 2020 16:28:30 +0800 Subject: [PATCH 111/450] V1.2 Fixed checkstlye for Storage refactored --- .../duke/apps/academicplanner/commons/AddUtils.java | 3 ++- src/main/java/seedu/duke/storage/Storage.java | 4 ++-- .../java/seedu/duke/storage/commons/FieldValidator.java | 9 ++++----- src/main/java/seedu/duke/storage/commons/LoadUtils.java | 8 ++++---- src/main/java/seedu/duke/storage/commons/SaveUtils.java | 4 ++-- .../storage/exceptions/CorruptedSaveFileException.java | 6 ++++-- .../seedu/duke/storage/exceptions/LoadFileException.java | 2 +- .../seedu/duke/storage/exceptions/SaveFileException.java | 2 +- text-ui-test/EXPECTED.TXT | 4 +++- 9 files changed, 23 insertions(+), 19 deletions(-) diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java index 3e2824164f..498e1cb72a 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java @@ -34,7 +34,8 @@ public AddUtils(ModuleLoader allModules, Person currentPerson) { * @param gradeValue grade achieved for module * @param moduleCredit module's credit weightage */ - public void addModuleToUser(String moduleCode, int semesterValue, String gradeValue, int moduleCredit, int ...from) { + public void addModuleToUser(String moduleCode, int semesterValue, + String gradeValue, int moduleCredit, int... from) { PartialModule newModuleToAdd = new PartialModule(moduleCode, semesterValue, gradeValue, moduleCredit); modulesList.add(newModuleToAdd); modulesAddedMap.put(moduleCode, modulesList.size() - 1); diff --git a/src/main/java/seedu/duke/storage/Storage.java b/src/main/java/seedu/duke/storage/Storage.java index fa7862cfe1..8424e1eb13 100644 --- a/src/main/java/seedu/duke/storage/Storage.java +++ b/src/main/java/seedu/duke/storage/Storage.java @@ -20,7 +20,7 @@ public void loader(Person currentPerson) { try { loadHandler.load(); - } catch(LoadFileException e) { + } catch (LoadFileException e) { System.out.println(e.getMessage()); } } @@ -30,7 +30,7 @@ public void saver(Person currentPerson) { try { saveHandler.save(); - } catch(SaveFileException e) { + } catch (SaveFileException e) { System.out.println(e.getMessage()); } } diff --git a/src/main/java/seedu/duke/storage/commons/FieldValidator.java b/src/main/java/seedu/duke/storage/commons/FieldValidator.java index d4ded75274..11050f7ac7 100644 --- a/src/main/java/seedu/duke/storage/commons/FieldValidator.java +++ b/src/main/java/seedu/duke/storage/commons/FieldValidator.java @@ -24,14 +24,14 @@ public class FieldValidator { private String[] lineItems; /** - * Default constructor for Field Validator + * Default constructor for Field Validator. * * @param details An Array of int storing all the details of loading save file until current entry * @param lineItems Different fields of current entry from save file * @param moduleValidator Module validator to check validity of modules from save file */ - public FieldValidator(int details[], String[] lineItems, ModuleValidator moduleValidator) { + public FieldValidator(int[] details, String[] lineItems, ModuleValidator moduleValidator) { this.details = details; this.lineItems = lineItems; this.isAllFieldValid = true; @@ -41,7 +41,6 @@ public FieldValidator(int details[], String[] lineItems, ModuleValidator moduleV /** * Validating all input fields from save file. Note that validator will terminate once * an entry fails one check, with priority: - * * Semester > Module code > Grade > Module Credit * * @return A boolean for whether current entry is valid @@ -88,14 +87,14 @@ public boolean validate() { } /** - * Print full loading details after loading finishes + * Print full loading details after loading finishes. * * @param isAllEntryValid boolean stating whether all entries in save file is valid * @param modulesLoaded number of modules loaded successfully * @throws CorruptedSaveFileException throws an exception if save file is corrupted */ public static void printLoadDetails(boolean isAllEntryValid, int modulesLoaded) throws CorruptedSaveFileException { - if(isAllEntryValid) { + if (isAllEntryValid) { if (modulesLoaded == 0) { System.out.println("Save file is empty. No module loaded."); } else if (modulesLoaded == 1) { diff --git a/src/main/java/seedu/duke/storage/commons/LoadUtils.java b/src/main/java/seedu/duke/storage/commons/LoadUtils.java index 48c1db30cd..c07fb717f8 100644 --- a/src/main/java/seedu/duke/storage/commons/LoadUtils.java +++ b/src/main/java/seedu/duke/storage/commons/LoadUtils.java @@ -39,7 +39,7 @@ public class LoadUtils { private String fileName; /** - * Default constructor for handling loading + * Default constructor for handling loading. * * @param currentPerson a Person object storing information for current person * @param fileName a String for name of save file @@ -53,7 +53,7 @@ public LoadUtils(Person currentPerson, String fileName, ModuleLoader allModules) } /** - * Function to load save file + * Function to load save file. * * @throws LoadFileException Exception when the save file is corrupted or missing */ @@ -77,7 +77,7 @@ public void load() throws LoadFileException { boolean isEntryValid = new FieldValidator(details, lineItems, moduleValidator).validate(); - if(!isEntryValid) { + if (!isEntryValid) { isAllEntryValid = false; } @@ -96,7 +96,7 @@ public void load() throws LoadFileException { printLoadDetails(isAllEntryValid, details[MODULE_LOADED]); } catch (FileNotFoundException e) { - throw new LoadFileException("Save file not found! \nIt will be automatically created.\n"); + throw new LoadFileException("Save file not found!\nIt will be automatically created.\n"); } catch (CorruptedSaveFileException e) { throw new LoadFileException("Save file corrupted! " + "Details:" + NEW_LINE diff --git a/src/main/java/seedu/duke/storage/commons/SaveUtils.java b/src/main/java/seedu/duke/storage/commons/SaveUtils.java index 07a20298d7..32024fdc0a 100644 --- a/src/main/java/seedu/duke/storage/commons/SaveUtils.java +++ b/src/main/java/seedu/duke/storage/commons/SaveUtils.java @@ -17,7 +17,7 @@ public class SaveUtils { private String fileName; /** - * Default constructor for handling save + * Default constructor for handling save. * * @param currentPerson a Person object storing information for current person * @param fileName a String for name of save file @@ -28,7 +28,7 @@ public SaveUtils(Person currentPerson, String fileName) { } /** - * Function to save person object into save file + * Function to save person object into save file. * * @throws SaveFileException Exception thrown if there is an error accessing save file */ diff --git a/src/main/java/seedu/duke/storage/exceptions/CorruptedSaveFileException.java b/src/main/java/seedu/duke/storage/exceptions/CorruptedSaveFileException.java index fe9eaa1aff..475742dce7 100644 --- a/src/main/java/seedu/duke/storage/exceptions/CorruptedSaveFileException.java +++ b/src/main/java/seedu/duke/storage/exceptions/CorruptedSaveFileException.java @@ -1,5 +1,7 @@ package seedu.duke.storage.exceptions; -public class CorruptedSaveFileException extends Exception{ - public CorruptedSaveFileException() {} +public class CorruptedSaveFileException extends Exception { + public CorruptedSaveFileException() { + + } } diff --git a/src/main/java/seedu/duke/storage/exceptions/LoadFileException.java b/src/main/java/seedu/duke/storage/exceptions/LoadFileException.java index 564cd70f1a..2b01397fd2 100644 --- a/src/main/java/seedu/duke/storage/exceptions/LoadFileException.java +++ b/src/main/java/seedu/duke/storage/exceptions/LoadFileException.java @@ -3,7 +3,7 @@ public class LoadFileException extends Exception { private String errorMessage; - public LoadFileException (String errorMessage) { + public LoadFileException(String errorMessage) { this.errorMessage = errorMessage; } diff --git a/src/main/java/seedu/duke/storage/exceptions/SaveFileException.java b/src/main/java/seedu/duke/storage/exceptions/SaveFileException.java index 31bfbcfbd5..2bb985e270 100644 --- a/src/main/java/seedu/duke/storage/exceptions/SaveFileException.java +++ b/src/main/java/seedu/duke/storage/exceptions/SaveFileException.java @@ -3,7 +3,7 @@ public class SaveFileException extends Exception { private String errorMessage; - public SaveFileException (String errorMessage) { + public SaveFileException(String errorMessage) { this.errorMessage = errorMessage; } diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 18b4535d86..5e9dd9f2d4 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -2,7 +2,9 @@ Welcome to PlanNUS! For academic planner, type For CAP calculator, type To exit PlanNUS, type -File PlanNUS.txt not found. +Save file not found! +It will be automatically created. + Type in a command to continue... Welcome to Academic Planner! From d3355bced08baad049ddb078bf9aae8c3c8005f1 Mon Sep 17 00:00:00 2001 From: JuZihao <57383789+JuZihao@users.noreply.github.com> Date: Fri, 16 Oct 2020 17:29:02 +0800 Subject: [PATCH 112/450] Added basic functions to set su command, complete set su utilities. --- .../academicplanner/commons/EditUtils.java | 1 + .../apps/capcalculator/CapCalculatorApp.java | 1 + .../duke/apps/capcalculator/SetSuParser.java | 14 +- .../commands/SetSuByModuleCommand.java | 17 +- .../commands/SetSuBySemesterCommand.java | 13 +- .../capcalculator/commons/SetSuUtils.java | 315 ++++++++++++++++++ .../capcalculator/commons/SetTargetUtils.java | 40 ++- 7 files changed, 379 insertions(+), 22 deletions(-) diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java index 87e3cf422a..85a455d1b7 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java @@ -77,6 +77,7 @@ public void updateModuleGrade(String moduleCode, String gradeValue) { /** * Updates module to reflect the new grade. + * * @param gradeValue new grade value to reflect * @param module module to edit */ diff --git a/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorApp.java b/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorApp.java index 244317a7c2..66df40d926 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorApp.java +++ b/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorApp.java @@ -20,6 +20,7 @@ public class CapCalculatorApp extends App { private static final String WELCOME_MESSAGE = "Welcome to CAP Calculator! Commands available are:\n" + "\tcurrent\n" + "\tset target\n" + + "\tset su\n" + "\tTo exit CAP Calculator, use command: \"exit\"\n\n" + "\tInitializing your CAP..."; diff --git a/src/main/java/seedu/duke/apps/capcalculator/SetSuParser.java b/src/main/java/seedu/duke/apps/capcalculator/SetSuParser.java index d906dd4d35..bad0c72062 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/SetSuParser.java +++ b/src/main/java/seedu/duke/apps/capcalculator/SetSuParser.java @@ -9,15 +9,25 @@ import java.util.Scanner; +/** + * Class representing the parser used for set su command. + */ public class SetSuParser { - private static final String BY_MODULES = "1"; - private static final String BY_SEMESTER = "2"; + private static final String BY_MODULES = "2"; + private static final String BY_SEMESTER = "1"; private static final String PROMPT_SU_CHOICES = "Enter the number corresponding to the method you wish to S/U:\n" + "\t1) Semester\n" + "\t2) Modules"; private static final String INVALID_SU_ERROR = "Number entered does not correspond to any S/U method."; + /** + * Processes user input command and returns which set su command to be parsed. + * + * @param currentPerson user of PlanNUS + * @return Command to be executed + * @throws CommandParserException thrown when an invalid input is entered + */ public static Command parse(Person currentPerson, Scanner in) throws CommandParserException { promptUserForSuCommand(); String choice = in.nextLine().trim(); diff --git a/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuByModuleCommand.java b/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuByModuleCommand.java index 32ba1c4b5c..62e196cea4 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuByModuleCommand.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuByModuleCommand.java @@ -1,8 +1,12 @@ package seedu.duke.apps.capcalculator.commands; +import seedu.duke.apps.capcalculator.commons.SetSuUtils; +import seedu.duke.apps.capcalculator.exceptions.CapCalculatorException; import seedu.duke.globalcommons.Command; +import seedu.duke.objects.PartialModule; import seedu.duke.objects.Person; +import java.util.ArrayList; import java.util.Scanner; /** @@ -10,9 +14,11 @@ */ public class SetSuByModuleCommand extends Command { - + private SetSuUtils setSuUtils; + private ArrayList suList; public SetSuByModuleCommand(Person currentPerson, Scanner in) { + this.setSuUtils = new SetSuUtils(currentPerson, in); } /** @@ -20,6 +26,13 @@ public SetSuByModuleCommand(Person currentPerson, Scanner in) { */ @Override public void execute() { - + try { + int numberOfModulesToSu = setSuUtils.promptUserForNumberOfModules(); + suList = setSuUtils.getSuListByModule(numberOfModulesToSu); + setSuUtils.showSuListToUser(suList); + setSuUtils.showResultsToUser(suList); + } catch (CapCalculatorException e) { + System.out.println(e.getMessage()); + } } } diff --git a/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuBySemesterCommand.java b/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuBySemesterCommand.java index 25e0ced47b..104d60671d 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuBySemesterCommand.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuBySemesterCommand.java @@ -1,9 +1,12 @@ package seedu.duke.apps.capcalculator.commands; import seedu.duke.apps.capcalculator.commons.SetSuUtils; +import seedu.duke.apps.capcalculator.exceptions.CapCalculatorException; import seedu.duke.globalcommons.Command; +import seedu.duke.objects.PartialModule; import seedu.duke.objects.Person; +import java.util.ArrayList; import java.util.Scanner; /** @@ -14,6 +17,7 @@ public class SetSuBySemesterCommand extends Command { private Person currentPerson; private Scanner in; private SetSuUtils setSuUtils; + private ArrayList suList; public SetSuBySemesterCommand(Person currentPerson, Scanner in) { this.currentPerson = currentPerson; @@ -26,6 +30,13 @@ public SetSuBySemesterCommand(Person currentPerson, Scanner in) { */ @Override public void execute() { - + try { + int semesterToSu = setSuUtils.promptUserForSemester(); + suList = setSuUtils.getSuListBySemester(semesterToSu); + setSuUtils.showSuListToUser(suList); + setSuUtils.showResultsToUser(suList); + } catch (CapCalculatorException e) { + System.out.println(e.getMessage()); + } } } diff --git a/src/main/java/seedu/duke/apps/capcalculator/commons/SetSuUtils.java b/src/main/java/seedu/duke/apps/capcalculator/commons/SetSuUtils.java index 9d1faf1b69..f37afa53e8 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commons/SetSuUtils.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commons/SetSuUtils.java @@ -1,10 +1,325 @@ package seedu.duke.apps.capcalculator.commons; +import seedu.duke.apps.capcalculator.exceptions.CapCalculatorException; +import seedu.duke.objects.PartialModule; import seedu.duke.objects.Person; +import java.util.ArrayList; +import java.util.Comparator; import java.util.Scanner; +import static java.util.stream.Collectors.toList; +import static seedu.duke.apps.capcalculator.commons.CalculatorUtils.formatCapToString; + +/** + * Class representing common functions for the set S/U commands. + */ public class SetSuUtils { + private static final String VALID_SEMESTERS = "Valid semesters are integers from 1 to 10, inclusive."; + private static final String PROMPT_SU_SEMESTER_VALUE = "Please enter a semester you wish to S/U."; + private static final String SU_SUGGESTION_PROMPT = "The modules you should be S/Uing are:"; + private static final String NO_SUGGESTION_PROMPT = "Looks like you do not have to S/U any modules!"; + private static final String PROMPT_MODULE_VALUE = "Please enter how many modules you wish to S/U."; + private static final String INVALID_SEMESTER_ERROR = "Looks like the semester you entered is not valid!"; + private static final String INVALID_NUMBER_ERROR = "Looks like the number of modules you entered is not valid!"; + private static final String INVALID_MODULE_ERROR = "Looks like the module you entered is not a valid module!"; + private static final String NUMBER_OUT_OF_BOUND_ERROR = "Looks like the number you entered " + + "is more than the numbers of modules you took."; + private static final String EMPTY_LIST_ERROR = "Your S/U list is empty!"; + private static final String DUPLICATE_MODULE_ERROR = "Looks like you have already added this module!"; + private static final int STARTING_SEMESTER_INDEX = 1; + private static final int FINAL_SEMESTER_INDEX = 10; + private static final int DISPLAY_PREFIX = 1; + + private Person currentPerson; + private Scanner in; + private CalculatorUtils calculatorutils; + + /** + * Instantiates a new Set su utils. + * + * @param currentPerson the current person + * @param in scanner for user inputs + */ public SetSuUtils(Person currentPerson, Scanner in) { + this.currentPerson = currentPerson; + this.in = in; + this.calculatorutils = new CalculatorUtils(currentPerson); + } + + /** + * Prints prompt and help messages for user to enter module's grade. + * + * @return the semester entered by user + * @throws CapCalculatorException if the semester entered is not valid + */ + public int promptUserForSemester() throws CapCalculatorException { + try { + System.out.println(PROMPT_SU_SEMESTER_VALUE); + System.out.println(VALID_SEMESTERS); + int semester = Integer.parseInt(in.nextLine().trim()); + if (isValidSemester(semester)) { + return semester; + } else { + throw new CapCalculatorException(INVALID_SEMESTER_ERROR); + } + } catch (NumberFormatException e) { + throw new CapCalculatorException(INVALID_SEMESTER_ERROR); + } + } + + private boolean isValidSemester(int semester) { + return (semester >= STARTING_SEMESTER_INDEX && semester <= FINAL_SEMESTER_INDEX); + } + + /** + * Prompt user to enter number of modules. + * + * @return number of modules entered by user + * @throws CapCalculatorException if the number entered is not valid + */ + public int promptUserForNumberOfModules() throws CapCalculatorException { + try { + System.out.println(PROMPT_MODULE_VALUE); + int numberOfModules = Integer.parseInt(in.nextLine().trim()); + if (isValidNumber(numberOfModules)) { + return numberOfModules; + } + throw new CapCalculatorException(NUMBER_OUT_OF_BOUND_ERROR); + } catch (NumberFormatException e) { + throw new CapCalculatorException(INVALID_NUMBER_ERROR); + } + } + + /** + * Returns a sorted S/U list by semester. + * + * @param semesterToSu the semester to S/U + * @return the S/U list by semester + * @throws CapCalculatorException if the S/U list is empty + */ + public ArrayList getSuListBySemester(int semesterToSu) throws CapCalculatorException { + ArrayList suList = (ArrayList) currentPerson.getModulesList().stream() + .filter((partialModule) -> partialModule.getSemesterIndex() == semesterToSu) + .filter(this::isValidSuModule) + .collect(toList()); + if (isEmptyList(suList)) { + throw new CapCalculatorException(EMPTY_LIST_ERROR); + } else { + suList.sort(Comparator.comparing(PartialModule::getCap)); + return suList; + } + } + + /** + * Given a S/U list, show results to user. + * + * @param suList the S/U list + */ + public void showResultsToUser(ArrayList suList) { + double currentCap = currentPerson.getCurrentTotalMcxGrade()/(double)currentPerson.getCurrentMcAfterSU(); + int currentGradedMCs = currentPerson.getCurrentMcAfterSU(); + showInitialCapToUser(currentCap, currentGradedMCs); + showCapAfterEachSu(suList, currentCap, currentPerson.getCurrentTotalMcxGrade(), currentGradedMCs); + } + + /** + * Display cap after each su. + * + * @param suList the S/U list + * @param currentCap the current cap + * @param totalMcxGrade the total MC multiply by the grade + * @param currentGradedMCs the current graded m cs + */ + public void showCapAfterEachSu(ArrayList suList, double currentCap, + double totalMcxGrade, int currentGradedMCs) { + double bestCap = currentCap; + int bestGradedMCs = currentGradedMCs; + int numberOfModulesToSU = 0; + + for (PartialModule module : suList) { + totalMcxGrade -= module.getCap() * module.getModuleCredit(); + currentGradedMCs -= module.getModuleCredit(); + System.out.println("S/U your module of " + module.getModuleCode() + " with grade " +module.getGrade() + + " will give you a CAP of: " + formatCapToString(totalMcxGrade/(double)currentGradedMCs)); + System.out.println("Your graded MCs after S/Uing this module is: " + currentGradedMCs); + if (bestCap < (totalMcxGrade/(double)currentGradedMCs)) { + bestCap = totalMcxGrade/(double)currentGradedMCs; + bestGradedMCs = currentGradedMCs; + numberOfModulesToSU++; + } + } + showBestResultsForSu(bestCap, bestGradedMCs); + showSuggestedSuOptions(suList, numberOfModulesToSU); + } + + /** + * Display the suggested S/U options. + * + * @param suList the S/U list + * @param numberOfModulesToSU the number of modules to S/U + */ + public void showSuggestedSuOptions(ArrayList suList, int numberOfModulesToSU) { + if (numberOfModulesToSU > 0) { + System.out.println(SU_SUGGESTION_PROMPT); + for (int i = 0; i < numberOfModulesToSU; i++) { + PartialModule moduleToSu = suList.get(i); + System.out.println(moduleToSu.getModuleCode() + " with grade " + moduleToSu.getGrade() + + " and modular credit of " + moduleToSu.getModuleCredit() + "."); + } + } else { + System.out.println(NO_SUGGESTION_PROMPT); + } + } + + /** + * Display best results after S/Uing. + * + * @param bestCap the best cap + * @param bestGradedMCs the best graded MCs + */ + public void showBestResultsForSu(double bestCap, int bestGradedMCs) { + System.out.println("Your highest CAP possible is: " + formatCapToString(bestCap) + + " with a graded MC of " + bestGradedMCs); + } + + /** + * Display initial cap to user. + * + * @param currentCap the current cap + * @param currentGradedMCs the current graded MCs + */ + public void showInitialCapToUser(double currentCap, int currentGradedMCs) { + System.out.println("Your CAP without S/U any module is: " + formatCapToString(currentCap)); + System.out.println("Your graded MCs without S/U any module is: " + currentGradedMCs); + } + + /** + * Display the S/U list to user. + * + * @param suList the S/U list + */ + public void showSuListToUser(ArrayList suList) { + System.out.println("Modules in your current S/U list: "); + for (PartialModule modules : suList) { + System.out.println(" " + modules.getModuleCode() + " " + modules.getGrade()); + } + } + + /** + * Main function to obtain the S/U list given some module codes. + * Returns the S/U list. + * + * @param numberOfModulesToSu number entered by user + * @return the S/U list + * @throws CapCalculatorException if the module is not valid + */ + public ArrayList getSuListByModule(int numberOfModulesToSu) throws CapCalculatorException { + ArrayList filteredList = (ArrayList) currentPerson.getModulesList().stream() + .filter(this::isValidSuModule) + .collect(toList()); + + ArrayList suList = new ArrayList<>(); + + for (int i = 0; i < numberOfModulesToSu; i++) { + promptUserForModuleCode(i + DISPLAY_PREFIX); + String moduleCode = in.nextLine().trim(); + PartialModule moduleToSu = getSuModule(filteredList,moduleCode); + addModuleToSuList(suList, moduleToSu); + } + suList.sort(Comparator.comparing(PartialModule::getCap)); + return suList; + } + + /** + * Add the module to be S/Ued into the list. + * + * @param suList the list of modules to be S/Ued + * @param moduleToSu the module to be added into the list + * @throws CapCalculatorException if the module is already in the list + */ + private void addModuleToSuList(ArrayList suList, + PartialModule moduleToSu) throws CapCalculatorException { + if (suList.contains(moduleToSu)) { + throw new CapCalculatorException(DUPLICATE_MODULE_ERROR); + } + suList.add(moduleToSu); + } + + /** + * Returns the module that the user want to S/U given the module code. + * + * @param filteredList the list of valid modules to S/U + * @param moduleCode the target module that user want to S/U + * @return the module to be S/Ued + * @throws CapCalculatorException if there is no valid module found + */ + private PartialModule getSuModule(ArrayList filteredList, + String moduleCode) throws CapCalculatorException { + for (PartialModule module : filteredList) { + if (module.getModuleCode().equalsIgnoreCase(moduleCode)) { + return module; + } + } + throw new CapCalculatorException(INVALID_MODULE_ERROR); + } + + /** + * Print prompt for user to enter the module code to S/U. + * + * @param displayIndex index to be displayed ot user + */ + private void promptUserForModuleCode(int displayIndex) { + System.out.println("What is your " + getAbbreviations(displayIndex) + "module?"); + } + + /** + * Returns true when the number of modules entered by user is more than zero, + * and less than the total modules taken by user, else return false. + * + * @param numberOfModulesToSu the number entered by user + * @return boolean + */ + private boolean isValidNumber(int numberOfModulesToSu) { + return (numberOfModulesToSu > 0 && numberOfModulesToSu <= currentPerson.getModulesList().size()); + } + + /** + * Returns true when the module is a valid modules to be S/Ued, + * else return false. + * + * @param partialModule the modules to be checked + * @return boolean + */ + private boolean isValidSuModule(PartialModule partialModule) { + return partialModule.getCap() >= 0; + } + + /** + * Returns true if the SU list is empty else false. + * + * @param suList the list of modules to be S/Ued + * @return boolean boolean + */ + public boolean isEmptyList(ArrayList suList) { + return suList.size() == 0; + } + + /** + * Function to return the abbreviation for the number + * + * @param number number to return the abbreviation for + * @return string + */ + private String getAbbreviations(int number) { + if (number % 10 == 1 & number != 11) { + return number + "st "; + } else if (number % 10 == 2 & number != 12) { + return number + "nd "; + } else if (number % 10 == 3 & number != 13) { + return number + "rd "; + } else { + return number + "th "; + } } } diff --git a/src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java b/src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java index cbf5703d76..bc19329f83 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java @@ -3,7 +3,6 @@ import seedu.duke.apps.capcalculator.exceptions.InvalidCapException; import seedu.duke.apps.capcalculator.exceptions.InvalidCreditException; import seedu.duke.objects.Person; -import seedu.duke.ui.Ui; import java.util.Scanner; @@ -27,46 +26,53 @@ public SetTargetUtils(Person currentPerson, Scanner in) { /** * Obtain the target CAP from the user. + * @throws InvalidCapException if the Cap given is greater than 5.00 or less than 0 */ public double getTargetCap() throws InvalidCapException { System.out.println("What is your target CAP?"); double targetCap = Double.parseDouble(in.nextLine()); - checkValidCap(targetCap); - return targetCap; + if (isValidCap(targetCap)) { + return targetCap; + } else { + throw new InvalidCapException(INVALID_CAP_MESSAGE); + } } /** * Obtain the target MCs from the user. + * @throws InvalidCreditException if the module credit given less than 0 */ public int getTargetGradedMC() throws InvalidCreditException { System.out.println("How many graded MCs you are taking to achieve the target CAP?"); int targetGradedMC = Integer.parseInt(in.nextLine()); - checkValidCredits(targetGradedMC); - return targetGradedMC; + if (isValidCredits(targetGradedMC)) { + return targetGradedMC; + } else { + throw new InvalidCreditException(INVALID_MC_MESSAGE); + } } /** * Checks if the target Cap given by the user is valid. + * Returns true when the Cap provided is less than 5.00 and more or equals to 0. + * Returns false otherwise. * * @param cap Cap to be checked - * @throws InvalidCapException if the Cap given is greater than 5.00 or less than 0 + * @return boolean whether Cap is valid */ - private void checkValidCap(double cap) throws InvalidCapException { - if (cap > MAXIMUM_CAP || cap <= 0) { - throw new InvalidCapException(INVALID_CAP_MESSAGE); - } + private boolean isValidCap(double cap) { + return cap > MAXIMUM_CAP && cap <= 0; } /** * Checks if the target Cap given by the user is valid. + * Returns false when the MC provided is less than 0 else false. * - * @param credits Module credits to be checked - * @throws InvalidCreditException if the module credit given less than 0 + * @param credits Module credits to be checked + * @return boolean whether MC is valid */ - private void checkValidCredits(int credits) throws InvalidCreditException { - if (credits <= 0) { - throw new InvalidCreditException(INVALID_MC_MESSAGE); - } + private boolean isValidCredits(int credits) { + return credits > 0; } /** @@ -77,7 +83,7 @@ public void showResultsToUser(double targetCap,int targetGradedMC) { double targetCapxTargetMC = (double) totalMcToTarget * targetCap; double neededCap = (targetCapxTargetMC - currentPerson.getCurrentTotalMcxGrade()) / (double) targetGradedMC; - if (neededCap <= 5) { + if (isValidCap(neededCap)) { printTargetResultPossible(targetCap, targetGradedMC, neededCap); } else { printTargetResultImpossible(targetCap, targetGradedMC); From 5be5f4562724ec2ed79732ece6a53a256146587e Mon Sep 17 00:00:00 2001 From: JuZihao <57383789+JuZihao@users.noreply.github.com> Date: Fri, 16 Oct 2020 17:37:55 +0800 Subject: [PATCH 113/450] Minor adjustments to pass gradle tests --- .../capcalculator/commons/SetSuUtils.java | 20 +++++++++---------- text-ui-test/EXPECTED.TXT | 3 +++ 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/main/java/seedu/duke/apps/capcalculator/commons/SetSuUtils.java b/src/main/java/seedu/duke/apps/capcalculator/commons/SetSuUtils.java index f37afa53e8..1d68794708 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commons/SetSuUtils.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commons/SetSuUtils.java @@ -23,8 +23,8 @@ public class SetSuUtils { private static final String INVALID_SEMESTER_ERROR = "Looks like the semester you entered is not valid!"; private static final String INVALID_NUMBER_ERROR = "Looks like the number of modules you entered is not valid!"; private static final String INVALID_MODULE_ERROR = "Looks like the module you entered is not a valid module!"; - private static final String NUMBER_OUT_OF_BOUND_ERROR = "Looks like the number you entered " + - "is more than the numbers of modules you took."; + private static final String NUMBER_OUT_OF_BOUND_ERROR = "Looks like the number you entered " + + "is more than the numbers of modules you took."; private static final String EMPTY_LIST_ERROR = "Your S/U list is empty!"; private static final String DUPLICATE_MODULE_ERROR = "Looks like you have already added this module!"; private static final int STARTING_SEMESTER_INDEX = 1; @@ -117,7 +117,7 @@ public ArrayList getSuListBySemester(int semesterToSu) throws Cap * @param suList the S/U list */ public void showResultsToUser(ArrayList suList) { - double currentCap = currentPerson.getCurrentTotalMcxGrade()/(double)currentPerson.getCurrentMcAfterSU(); + double currentCap = currentPerson.getCurrentTotalMcxGrade() / (double)currentPerson.getCurrentMcAfterSU(); int currentGradedMCs = currentPerson.getCurrentMcAfterSU(); showInitialCapToUser(currentCap, currentGradedMCs); showCapAfterEachSu(suList, currentCap, currentPerson.getCurrentTotalMcxGrade(), currentGradedMCs); @@ -140,11 +140,11 @@ public void showCapAfterEachSu(ArrayList suList, double currentCa for (PartialModule module : suList) { totalMcxGrade -= module.getCap() * module.getModuleCredit(); currentGradedMCs -= module.getModuleCredit(); - System.out.println("S/U your module of " + module.getModuleCode() + " with grade " +module.getGrade() - + " will give you a CAP of: " + formatCapToString(totalMcxGrade/(double)currentGradedMCs)); + System.out.println("S/U your module of " + module.getModuleCode() + " with grade " + module.getGrade() + + " will give you a CAP of: " + formatCapToString(totalMcxGrade / (double)currentGradedMCs)); System.out.println("Your graded MCs after S/Uing this module is: " + currentGradedMCs); - if (bestCap < (totalMcxGrade/(double)currentGradedMCs)) { - bestCap = totalMcxGrade/(double)currentGradedMCs; + if (bestCap < (totalMcxGrade / (double)currentGradedMCs)) { + bestCap = totalMcxGrade / (double)currentGradedMCs; bestGradedMCs = currentGradedMCs; numberOfModulesToSU++; } @@ -164,8 +164,8 @@ public void showSuggestedSuOptions(ArrayList suList, int numberOf System.out.println(SU_SUGGESTION_PROMPT); for (int i = 0; i < numberOfModulesToSU; i++) { PartialModule moduleToSu = suList.get(i); - System.out.println(moduleToSu.getModuleCode() + " with grade " + moduleToSu.getGrade() + - " and modular credit of " + moduleToSu.getModuleCredit() + "."); + System.out.println(moduleToSu.getModuleCode() + " with grade " + moduleToSu.getGrade() + + " and modular credit of " + moduleToSu.getModuleCredit() + "."); } } else { System.out.println(NO_SUGGESTION_PROMPT); @@ -306,7 +306,7 @@ public boolean isEmptyList(ArrayList suList) { } /** - * Function to return the abbreviation for the number + * Function to return the abbreviation for the number. * * @param number number to return the abbreviation for * @return string diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 02e8777ca2..fe4aec4105 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -35,6 +35,9 @@ Welcome to CAP Calculator! Available commands are: current set target + set su + To exit CAP Calculator, use command: "exit" + exit Initializing your CAP... Type a command to continue... From 2c8ef4a1df0ab2666b8a802d89a230e7b29a65e6 Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Fri, 16 Oct 2020 18:17:55 +0800 Subject: [PATCH 114/450] Refactor and test current command in capcalc --- .../commands/CurrentCommand.java | 11 +++++- .../commands/CurrentCommandTest.java | 37 +++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 src/test/java/seedu/duke/apps/capcalculator/commands/CurrentCommandTest.java diff --git a/src/main/java/seedu/duke/apps/capcalculator/commands/CurrentCommand.java b/src/main/java/seedu/duke/apps/capcalculator/commands/CurrentCommand.java index 50f18a18bc..042e39ed59 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commands/CurrentCommand.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commands/CurrentCommand.java @@ -20,9 +20,18 @@ public CurrentCommand(Person currentPerson) { */ @Override public void execute() { - double currentCap = currentPerson.getCurrentTotalMcxGrade() / (double) currentPerson.getCurrentMcAfterSU(); + double currentCap = getCurrentCap(); System.out.println("Your current now CAP is: " + formatCapToString(currentCap)); System.out.println("Number of graded MCs taken is: " + currentPerson.getCurrentMcAfterSU()); System.out.println("Total number of MCs taken is: " + currentPerson.getCurrentMc()); } + + /** + * Returns user current cap. + * + * @return CAP + */ + public double getCurrentCap() { + return currentPerson.getCurrentTotalMcxGrade() / (double) currentPerson.getCurrentMcAfterSU(); + } } diff --git a/src/test/java/seedu/duke/apps/capcalculator/commands/CurrentCommandTest.java b/src/test/java/seedu/duke/apps/capcalculator/commands/CurrentCommandTest.java new file mode 100644 index 0000000000..ab973eb4ea --- /dev/null +++ b/src/test/java/seedu/duke/apps/capcalculator/commands/CurrentCommandTest.java @@ -0,0 +1,37 @@ +package seedu.duke.apps.capcalculator.commands; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import seedu.duke.apps.academicplanner.commons.AddUtils; +import seedu.duke.apps.moduleloader.ModuleLoader; +import seedu.duke.apps.moduleloader.exceptions.ModuleLoaderException; +import seedu.duke.objects.Person; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class CurrentCommandTest { + Person currentPerson; + ModuleLoader allModules; + AddUtils addUtils; + + @BeforeEach + void setup() throws ModuleLoaderException { + currentPerson = new Person("Bob"); + allModules = new ModuleLoader(); + addUtils = new AddUtils(allModules,currentPerson); + } + + @Test + void execute_populatedList_result() { + addUtils.addModuleToUser("CS1010",1,"A-",4); + addUtils.addModuleToUser("CS1231",1,"B",4); + addUtils.addModuleToUser("CG1111",1,"B+",6); + addUtils.addModuleToUser("MA1511",1,"S",4); + addUtils.addModuleToUser("MA1512",1,"S",4); + + CurrentCommand currentCommand = new CurrentCommand(currentPerson); + double currentCap = currentCommand.getCurrentCap(); + assertEquals(currentCap,4.0); + } + +} \ No newline at end of file From c699c69b5d7d5eacfc4e699210b3ac77d06ba2fc Mon Sep 17 00:00:00 2001 From: JuZihao <57383789+JuZihao@users.noreply.github.com> Date: Fri, 16 Oct 2020 20:38:53 +0800 Subject: [PATCH 115/450] Update UserGuide.md Add basic description for set su command --- docs/UserGuide.md | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index aef55c198b..9b6223379c 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -140,10 +140,32 @@ Input format: `set target` __Caution:__ -* Maximum CAP should be smaller or equals to 5.00. +* CAP should be between 0.00 to 5.00 inclusive. * Minimum MC should be greater than 0. +#### Set S/U modules: `set su` +This is for the user to set modules that he or she wishes to S/U. + + + +As shown in the image, user can choose to S/U by either a _Semester_ or some selected _Modules_. (__Note:__ Enter either `1` or `2` instead of the component's name) + +Expected output when user wishes to S/U by _Semester_. + + + +Expected output when user wishes to S/U by _Modules_. + + + +User will then be prompte to enter a specific number of modules to + +__Caution:__ + +* Only modules that have been added into the calendar can be edited. +* Duplicate modules are not allowed. +* Number of modules to be S/Ued should not be greater than number of modules taken by the user. ### Exiting from a feature or PlanNUS: `exit` From 823629c2a175226c24ab589042288d53f9764829 Mon Sep 17 00:00:00 2001 From: JuZihao <57383789+JuZihao@users.noreply.github.com> Date: Fri, 16 Oct 2020 20:44:56 +0800 Subject: [PATCH 116/450] Update UserGuide.md Added examples in command summary --- docs/UserGuide.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 9b6223379c..3e80959b0c 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -203,12 +203,12 @@ Note that the following commands are case-insensitive. | __Action__ | Command | | ------------------------------------------- | ---------------------- | -| Adding a module into the calendar | `add ` | -| Removing an existing module in the calendar | `remove ` | -| Editing an existing module in the calendar | `edit ` | +| Adding a module into the calendar | `add `​
e.g., `add CS1010, ADD cs1231 , ADD CS2040`| +| Removing an existing module in the calendar | `remove `​
e.g., `remove CS1010, REMOVE cs1231 , REMOVE CS2040`| +| Editing an existing module in the calendar | `edit `​
e.g., `edit CS1010, EDIT cs1231 , EDIT CS2040` | | Printing the academic calendar | `view` | | Printing help information | `help` | -| Exiting the Academic Planner | `exit` | +| Exiting the Academic Planner | `exit` | * Initiate the __CAP calculator__: `capCalc` From 7094f7d2004e12d9de0121edded7c647b9dac465 Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Fri, 16 Oct 2020 22:10:03 +0800 Subject: [PATCH 117/450] Refactor Academic Planner --- src/main/java/seedu/duke/PlanNus.java | 56 ++++++++++--------- .../academicplanner/AcademicPlannerApp.java | 7 +++ .../AcademicPlannerParser.java | 15 ++--- .../commands/AddModuleCommand.java | 18 +++++- .../commands/PrintCalenderCommand.java | 33 +++++++++-- .../commands/RemoveModuleCommand.java | 6 +- .../commons/AcademicCalendarSorter.java | 14 ++++- .../academicplanner/commons/AddUtils.java | 21 ++++++- .../academicplanner/commons/EditUtils.java | 12 ++-- .../commons/ModuleValidator.java | 10 ++-- .../academicplanner/commons/PrintUtils.java | 3 +- .../academicplanner/commons/RemoveUtils.java | 25 +++++++-- .../exceptions/AcademicException.java | 5 ++ .../apps/capcalculator/CapCalculatorApp.java | 1 - .../seedu/duke/storage/commons/LoadUtils.java | 7 +-- text-ui-test/EXPECTED.TXT | 3 - 16 files changed, 162 insertions(+), 74 deletions(-) diff --git a/src/main/java/seedu/duke/PlanNus.java b/src/main/java/seedu/duke/PlanNus.java index 011f47ed1d..b1ad68acaa 100644 --- a/src/main/java/seedu/duke/PlanNus.java +++ b/src/main/java/seedu/duke/PlanNus.java @@ -14,8 +14,6 @@ public class PlanNus { private static final String WELCOME_MESSAGE = "Welcome to PlanNUS!"; private static final String WELCOME_BACK_MESSAGE = "Welcome back to PlanNUS Main Menu!"; private static final String AWAIT_COMMAND = "Type in a command to continue..."; - private static final String ERROR_FILE_NOT_FOUND = "File PlanNUS.txt not found."; - private static final String ERROR_SAVING_FILE = "There is a problem saving PlanNUS.txt."; private static final String EXIT_MESSAGE = "Thanks for using PlanNUS! We hope to see you again!"; private static final String HELP_MESSAGE = "\tFor academic planner, type \n" + "\tFor CAP calculator, type \n" @@ -25,6 +23,7 @@ public class PlanNus { private ModuleLoader allModules; private Person currentPerson; private boolean isStartupSuccessfully; + private boolean isExit; /** * Default constructor for PlanNus. @@ -35,6 +34,7 @@ public PlanNus() { this.allModules = new ModuleLoader(); this.currentPerson = new Person("Bob"); this.isStartupSuccessfully = true; + isExit = false; } catch (Exception e) { this.isStartupSuccessfully = false; System.out.println(e.getMessage()); @@ -45,34 +45,40 @@ public PlanNus() { * Main entry function for PlanNUS. */ public void run() { - Storage storage = new Storage(allModules); - - assert isStartupSuccessfully == true : "Startup is successful"; - if (isStartupSuccessfully) { - showWelcomeMessage(); - boolean isExit = false; + assert isStartupSuccessfully : "Startup is unsuccessful"; - storage.loader(currentPerson); + showWelcomeMessage(); + Storage storage = initializeStorage(currentPerson); - while (!isExit) { - try { - System.out.println(AWAIT_COMMAND); - String userInput = ui.getScanner().nextLine(); - App selectedApp = AppParser.parse(userInput, allModules, currentPerson, ui); - selectedApp.run(); - isExit = selectedApp.getIsExit(); - if (!isExit) { - showWelcomeBackMessage(); - } - } catch (Exception e) { - System.out.println(e.getMessage()); + while (!isExit) { + try { + System.out.println(AWAIT_COMMAND); + String userInput = ui.getScanner().nextLine(); + App selectedApp = AppParser.parse(userInput, allModules, currentPerson, ui); + selectedApp.run(); + isExit = selectedApp.getIsExit(); + if (!isExit) { + showWelcomeBackMessage(); } + } catch (Exception e) { + System.out.println(e.getMessage()); } - - ui.closeScanner(); - storage.saver(currentPerson); - showExitMessage(); } + ui.closeScanner(); + storage.saver(currentPerson); + showExitMessage(); + } + + /** + * Initialises storage with the data of the currentPerson. + * + * @param currentPerson Person of data + * @return populated Storage + */ + private Storage initializeStorage(Person currentPerson) { + Storage storage = new Storage(allModules); + storage.loader(currentPerson); + return storage; } /** diff --git a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java index adeb8a0027..a978b85de0 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java +++ b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java @@ -25,6 +25,13 @@ public class AcademicPlannerApp extends App { private final Person currentPerson; private Ui ui; + /** + * Default constructor for Academic Planner App. + * + * @param allModules all modules offered by NUS + * @param currentPerson current user + * @param ui ui of PlanNUS + */ public AcademicPlannerApp(ModuleLoader allModules, Person currentPerson, Ui ui) { this.allModules = allModules; this.currentPerson = currentPerson; diff --git a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java index 9c8a132c02..0fdbb5fcdd 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java +++ b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java @@ -43,19 +43,20 @@ public static Command parse(String userInput, ModuleLoader allModules, Person cu String[] inputs = userInput.toUpperCase().split(" "); Scanner in = ui.getScanner(); - if (inputs[COMMAND_INDEX].equals(ADD_COMMAND)) { + switch (inputs[COMMAND_INDEX]) { + case ADD_COMMAND: return new AddModuleCommand(allModules, currentPerson, in, inputs[MODULE_CODE_INDEX]); - } else if (inputs[COMMAND_INDEX].equals(EDIT_COMMAND)) { + case EDIT_COMMAND: return new EditModuleCommand(allModules, currentPerson, in, inputs[MODULE_CODE_INDEX]); - } else if (inputs[COMMAND_INDEX].equals(REMOVE_COMMAND)) { + case REMOVE_COMMAND: return new RemoveModuleCommand(allModules, currentPerson, in, inputs[MODULE_CODE_INDEX]); - } else if (inputs[COMMAND_INDEX].equals(VIEW_COMMAND)) { + case VIEW_COMMAND: return new PrintCalenderCommand(currentPerson, in); - } else if (inputs[COMMAND_INDEX].equals(EXIT_COMMAND)) { + case EXIT_COMMAND: return new Command(true); - } else if (inputs[COMMAND_INDEX].equals(HELP_COMMAND)) { + case HELP_COMMAND: return new PrintHelpCommand(); - } else { + default: throw new CommandParserException(ERROR_INVALID_COMMAND + NEW_LINE + EXITING_CURRENT_COMMAND); } } diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java index 875ef00e19..b3d97274fc 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java @@ -37,6 +37,14 @@ public class AddModuleCommand extends Command { private Scanner in; private String moduleCode; + /** + * Default constructor for Add Module command. + * + * @param allModules all modules offered by NUS + * @param currentPerson current user + * @param in scanner + * @param moduleCode module code + */ public AddModuleCommand(ModuleLoader allModules, Person currentPerson, Scanner in, String moduleCode) { this.addUtils = new AddUtils(allModules, currentPerson); this.moduleValidator = new ModuleValidator(allModules, currentPerson); @@ -49,12 +57,15 @@ public AddModuleCommand(ModuleLoader allModules, Person currentPerson, Scanner i * else does not add module into user's academic calendar. * Validates user's input semester and grade. * If either is invalid, does not add module into user's academic calendar. + * Updates user's statistics as well. */ @Override public void execute() throws AcademicException, IOException { fh = new FileHandler(LOG_FILE_NAME); logger = new LoggingTool(LOGGER_NAME,fh).initialize(); + logger.log(Level.INFO,"Executing add command."); + if (!moduleValidator.isModOfferedByNus(moduleCode)) { logger.log(Level.WARNING,"Module entered not offered by NUS."); fh.close(); @@ -79,7 +90,7 @@ public void execute() throws AcademicException, IOException { throw new AcademicException(ERROR_INVALID_COMMAND); } - if (!moduleValidator.isValidSemester(semesterValue)) { + if (!ModuleValidator.isValidSemester(semesterValue)) { logger.log(Level.WARNING,"Semester entered is invalid."); fh.close(); throw new AcademicException(ERROR_INVALID_SEMESTER_INDEX); @@ -93,10 +104,13 @@ public void execute() throws AcademicException, IOException { fh.close(); throw new AcademicException(ERROR_INVALID_GRADE); } + int moduleCredit = addUtils.getModuleCreditForModule(moduleCode); + addUtils.addModuleToUser(moduleCode, semesterValue, gradeValue, moduleCredit); + assert semesterValue > 0; assert moduleCredit >= 0; - addUtils.addModuleToUser(moduleCode, semesterValue, gradeValue, moduleCredit); + logger.log(Level.INFO,"Finish executing add command."); fh.close(); } diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java index 6edca49a1f..b02a58e2e9 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java @@ -28,6 +28,11 @@ public class PrintCalenderCommand extends Command { private Scanner in; private AcademicCalendarSorter sorter; + /** + * Default constructor for print calendar command. + * @param currentPerson current user + * @param in PlanNUS ui + */ public PrintCalenderCommand(Person currentPerson, Scanner in) { this.modulesList = currentPerson.getModulesList(); sorter = new AcademicCalendarSorter(modulesList); @@ -40,18 +45,17 @@ public PrintCalenderCommand(Person currentPerson, Scanner in) { @Override public void execute() throws AcademicException { if (modulesList.size() > 0) { + System.out.println(PROMPT_USER); String userInput = in.nextLine().trim(); + if (userInput.equalsIgnoreCase(FULL_PRINT_COMMAND)) { - ArrayList sortedBySem = new ArrayList<>(modulesList); - sortedBySem.sort(Comparator.comparing(PartialModule::getSemesterIndex)); - printUtils.printFullCalendar(sortedBySem); + printFullCalendar(); } else { try { int selectedSemester = Integer.parseInt(userInput); if (ModuleValidator.isValidSemester(selectedSemester)) { - ArrayList sortedList = sorter.sortBySemester(selectedSemester); - printUtils.printBySemester(sortedList, selectedSemester); + sortAndPrint(selectedSemester); } else { throw new AcademicException(ERROR_INVALID_SEMESTER); } @@ -63,4 +67,23 @@ public void execute() throws AcademicException { System.out.println(EMPTY_MODULE_LIST); } } + + /** + * Prints full academic calendar. + */ + private void printFullCalendar() { + ArrayList sortedBySem = new ArrayList<>(modulesList); + sortedBySem.sort(Comparator.comparing(PartialModule::getSemesterIndex)); + printUtils.printFullCalendar(sortedBySem); + } + + /** + * Sorts and prints the semester's module. + * + * @param selectedSemester semester to print + */ + private void sortAndPrint(int selectedSemester) { + ArrayList sortedList = sorter.sortBySemester(selectedSemester); + printUtils.printBySemester(sortedList, selectedSemester); + } } diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java index 9816d64460..5c3ca56222 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java @@ -14,7 +14,6 @@ * Class representing an remove module command from the academic planner. */ public class RemoveModuleCommand extends Command { - private static final String EXITING_CURRENT_COMMAND = "Exiting current command back to Academic Planner Main Menu."; private static final String ERROR_INVALID_COMMAND = "INVALID COMMAND"; private static final String ERROR_NOT_ADDED = "You have not added this module into your list yet"; @@ -35,7 +34,7 @@ public RemoveModuleCommand(ModuleLoader allModules, Person currentPerson, Scanne * else prompts user of error. */ @Override - public void execute() { + public void execute() throws AcademicException { try { if (moduleValidator.isModTakenByUser(moduleCode)) { removeUtils.removeModuleFromUserModuleList(moduleCode); @@ -43,8 +42,7 @@ public void execute() { throw new AcademicException(ERROR_NOT_ADDED); } } catch (Exception e) { - System.out.println(ERROR_INVALID_COMMAND); - System.out.println(EXITING_CURRENT_COMMAND); + throw new AcademicException(ERROR_INVALID_COMMAND); } } } diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorter.java b/src/main/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorter.java index 89f86702ae..393f6d8300 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorter.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorter.java @@ -7,6 +7,7 @@ * Class representing sorter for academic calendar. */ public class AcademicCalendarSorter { + private static final String ERROR_EMPTY_CALENDAR = "Your academic calendar is empty."; private ArrayList userModuleList; public AcademicCalendarSorter(ArrayList moduleList) { @@ -22,11 +23,20 @@ public AcademicCalendarSorter(ArrayList moduleList) { public ArrayList sortBySemester(int semesterIndex) { if (userModuleList.size() < 1) { - System.out.println("Your academic calendar is empty."); + System.out.println(ERROR_EMPTY_CALENDAR); } + ArrayList sortedList = processCalendar(semesterIndex); + return sortedList; + } + /** + * Collects modules which are from a given semester into an arraylist and returns it. + * + * @param semesterIndex semester to sort by + * @return sortedList + */ + private ArrayList processCalendar(int semesterIndex) { ArrayList sortedList = new ArrayList<>(); - for (PartialModule m : userModuleList) { if (m.getSemesterIndex() == semesterIndex) { sortedList.add(m); diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java index 498e1cb72a..a1cf164898 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java @@ -18,6 +18,12 @@ public class AddUtils { private final HashMap modulesAddedMap; private final CalculatorUtils calculatorUtils; + /** + * Default constructor for AddUtils. + * + * @param allModules all modules offered by NUS + * @param currentPerson current User + */ public AddUtils(ModuleLoader allModules, Person currentPerson) { this.allModules = allModules; this.modulesList = currentPerson.getModulesList(); @@ -37,16 +43,25 @@ public AddUtils(ModuleLoader allModules, Person currentPerson) { public void addModuleToUser(String moduleCode, int semesterValue, String gradeValue, int moduleCredit, int... from) { PartialModule newModuleToAdd = new PartialModule(moduleCode, semesterValue, gradeValue, moduleCredit); - modulesList.add(newModuleToAdd); - modulesAddedMap.put(moduleCode, modulesList.size() - 1); + populate(moduleCode, newModuleToAdd); calculatorUtils.updateCap(FROM_ADD, newModuleToAdd); - if (from.length == 0) { System.out.println(newModuleToAdd.getModuleCode() + " added into Semester " + semesterValue + "."); } } + /** + * Populates the user's arraylist and hashmap with the new module. + * + * @param moduleCode module code to be entered + * @param newModuleToAdd module object to be added + */ + private void populate(String moduleCode, PartialModule newModuleToAdd) { + modulesList.add(newModuleToAdd); + modulesAddedMap.put(moduleCode, modulesList.size() - 1); + } + /** * Function to return module credits for module code. * diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java index 1f3404b92f..ffe64dfa2a 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java @@ -7,7 +7,6 @@ import seedu.duke.objects.Person; import java.util.ArrayList; import java.util.HashMap; -import java.util.Map; import java.util.Scanner; /** @@ -20,6 +19,12 @@ public class EditUtils { private final ModuleValidator modChecker; private final CalculatorUtils calculatorUtils; + /** + * Default constructor for EditUtils. + * + * @param allModules all modules offered by NUS + * @param currentPerson current User + */ public EditUtils(ModuleLoader allModules, Person currentPerson) { this.modulesList = currentPerson.getModulesList(); this.modulesAddedMap = currentPerson.getModulesAddedMap(); @@ -55,7 +60,6 @@ public void editModuleGrade(Scanner in, String moduleCode) throws AcademicExcept throw new AcademicException(ERROR_INVALID_GRADE); } - System.out.println(moduleCode); updateModuleGrade(moduleCode, gradeValue); System.out.println("Grade for " + moduleCode + " successfully updated!"); } @@ -69,7 +73,6 @@ public void editModuleGrade(Scanner in, String moduleCode) throws AcademicExcept public void updateModuleGrade(String moduleCode, String gradeValue) { Integer moduleIndex = modulesAddedMap.get(moduleCode); PartialModule module = modulesList.get(moduleIndex); - updateCurrentModuleGrade(gradeValue, module); } @@ -99,7 +102,7 @@ public void editModuleSemester(Scanner in, String moduleCode) throws AcademicExc System.out.println(VALID_SEMESTERS); String newValue = in.nextLine().trim(); - if (!modChecker.isValidSemester(Integer.parseInt(newValue))) { + if (!ModuleValidator.isValidSemester(Integer.parseInt(newValue))) { throw new AcademicException(ERROR_INVALID_SEMESTER_INDEX); } @@ -117,7 +120,6 @@ public void updateModuleSemester(String moduleCode, String newValue) { Integer moduleIndex = modulesAddedMap.get(moduleCode); PartialModule item = modulesList.get(moduleIndex); item.setSemesterIndex(Integer.parseInt(newValue)); - assert item.getSemesterIndex() == Integer.parseInt(newValue); } } diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java b/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java index b74c73105e..5aa1b1bb01 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java @@ -1,9 +1,7 @@ package seedu.duke.apps.academicplanner.commons; import seedu.duke.apps.moduleloader.ModuleLoader; -import seedu.duke.objects.PartialModule; import seedu.duke.objects.Person; -import java.util.ArrayList; import java.util.HashMap; public class ModuleValidator { @@ -11,12 +9,16 @@ public class ModuleValidator { private static final int FINAL_SEMESTER_INDEX = 10; private final ModuleLoader allModules; - private final ArrayList modulesList; private final HashMap modulesAddedMap; + /** + * Default constructor for EditUtils. + * + * @param allModules all modules offered by NUS + * @param currentPerson current User + */ public ModuleValidator(ModuleLoader allModules, Person currentPerson) { this.allModules = allModules; - this.modulesList = currentPerson.getModulesList(); this.modulesAddedMap = currentPerson.getModulesAddedMap(); } diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java index 898b510ea3..e608dd3bb6 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java @@ -8,6 +8,7 @@ */ public class PrintUtils { private static final String INDENT = " "; + private static final String ERROR_NO_MODULES = "You have no modules added in the semester you requested!"; public PrintUtils() { //Constructor is intentionally left blank @@ -21,7 +22,7 @@ public PrintUtils() { */ public void printBySemester(ArrayList sortedList, int selectedSemester) { if (sortedList.size() < 1) { - System.out.println("You have no modules added in the semester you requested!"); + System.out.println(ERROR_NO_MODULES); } System.out.println(INDENT + "SEMESTER " + selectedSemester); diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java index 217f43103c..2dc932ba8c 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java @@ -16,6 +16,11 @@ public class RemoveUtils { private final Map modulesAddedMap; private final CalculatorUtils calculatorUtils; + /** + * Default constructor for RemoveUtils. + * + * @param currentPerson current user + */ public RemoveUtils(Person currentPerson) { this.modulesList = currentPerson.getModulesList(); this.calculatorUtils = new CalculatorUtils(currentPerson); @@ -32,14 +37,22 @@ public void removeModuleFromUserModuleList(String moduleCode) { final int totalNumberOfModules = modulesList.size(); Integer moduleIndex = modulesAddedMap.get(moduleCode); - PartialModule item = modulesList.get(moduleIndex); + PartialModule module = modulesList.get(moduleIndex); - System.out.println(item.getModuleCode() + " has been removed from the list"); - calculatorUtils.updateCap(FROM_REMOVE, item); - - modulesList.remove(item); - modulesAddedMap.remove(moduleCode); + calculatorUtils.updateCap(FROM_REMOVE, module); + depopulate(moduleCode, module); assert modulesList.size() == totalNumberOfModules - 1; } + + /** + * Removes module from both arraylist and hashmap of the user. + * + * @param moduleCode module code to remove + * @param module module object to remove + */ + private void depopulate(String moduleCode, PartialModule module) { + modulesList.remove(module); + modulesAddedMap.remove(moduleCode); + } } diff --git a/src/main/java/seedu/duke/apps/academicplanner/exceptions/AcademicException.java b/src/main/java/seedu/duke/apps/academicplanner/exceptions/AcademicException.java index c01be6a731..6fb5c1b9ad 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/exceptions/AcademicException.java +++ b/src/main/java/seedu/duke/apps/academicplanner/exceptions/AcademicException.java @@ -9,6 +9,11 @@ public class AcademicException extends Exception { private static final String NEW_LINE = "\n"; private static final String EXITING_CURRENT_COMMAND = "Exiting current command back to Academic Planner Main Menu."; + /** + * Default constructor for Academic Exception. + * + * @param errorMessage accompanying message + */ public AcademicException(String errorMessage) { String stringToPrint = errorMessage + NEW_LINE + EXITING_CURRENT_COMMAND; this.errorMessage = stringToPrint; diff --git a/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorApp.java b/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorApp.java index e9f207e559..d8ddb70513 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorApp.java +++ b/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorApp.java @@ -21,7 +21,6 @@ public class CapCalculatorApp extends App { + "\tcurrent\n" + "\tset target\n" + "\tset su\n" - + "\tTo exit CAP Calculator, use command: \"exit\"\n\n" + "\texit\n" + "\tInitializing your CAP..."; diff --git a/src/main/java/seedu/duke/storage/commons/LoadUtils.java b/src/main/java/seedu/duke/storage/commons/LoadUtils.java index c07fb717f8..c5a4fc1293 100644 --- a/src/main/java/seedu/duke/storage/commons/LoadUtils.java +++ b/src/main/java/seedu/duke/storage/commons/LoadUtils.java @@ -85,18 +85,13 @@ public void load() throws LoadFileException { String currentModuleCode = lineItems[MODULE_CODE_POSITION]; String currentModuleGrade = lineItems[MODULE_GRADE_POSITION]; int currentModuleCredit = parseInt(lineItems[MODULE_CREDIT_POSITION]); - addUtils.addModuleToUser(currentModuleCode, currentSem, currentModuleGrade, currentModuleCredit, FROM_LOAD); } - in.close(); - - - printLoadDetails(isAllEntryValid, details[MODULE_LOADED]); } catch (FileNotFoundException e) { - throw new LoadFileException("Save file not found!\nIt will be automatically created.\n"); + throw new LoadFileException("Save file not found!\nIt will be automatically created."); } catch (CorruptedSaveFileException e) { throw new LoadFileException("Save file corrupted! " + "Details:" + NEW_LINE diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index fe4aec4105..5b261ff248 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -4,7 +4,6 @@ Welcome to PlanNUS! To exit PlanNUS, type Save file not found! It will be automatically created. - Type in a command to continue... Welcome to Academic Planner! @@ -36,8 +35,6 @@ Available commands are: current set target set su - To exit CAP Calculator, use command: "exit" - exit Initializing your CAP... Type a command to continue... From 5da0309a7c229a6909c0000b438d06aa1d24a9df Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Fri, 16 Oct 2020 22:31:39 +0800 Subject: [PATCH 118/450] Refactor execute function in add module command --- .../commands/AddModuleCommand.java | 56 +++++++++++++------ 1 file changed, 40 insertions(+), 16 deletions(-) diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java index b3d97274fc..38fe325d28 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java @@ -63,9 +63,35 @@ public AddModuleCommand(ModuleLoader allModules, Person currentPerson, Scanner i public void execute() throws AcademicException, IOException { fh = new FileHandler(LOG_FILE_NAME); logger = new LoggingTool(LOGGER_NAME,fh).initialize(); - logger.log(Level.INFO,"Executing add command."); + validateModuleCode(); + + promptUserToEnterSemester(); + String userInput = in.nextLine().trim(); + + promptUserToEnterGrade(); + String gradeValue = in.nextLine().trim().toUpperCase(); + + int semesterValue = validateInputs(userInput, gradeValue); + int moduleCredit = addUtils.getModuleCreditForModule(moduleCode); + + addUtils.addModuleToUser(moduleCode, semesterValue, gradeValue, moduleCredit); + + assert semesterValue > 0; + assert moduleCredit >= 0; + + logger.log(Level.INFO,"Finish executing add command."); + fh.close(); + } + + /** + * Throws AcademicException if the module code is not offered by NUS, + * or module is already taken by user. + * + * @throws AcademicException thrown when invalid module code is requested to be added + */ + private void validateModuleCode() throws AcademicException { if (!moduleValidator.isModOfferedByNus(moduleCode)) { logger.log(Level.WARNING,"Module entered not offered by NUS."); fh.close(); @@ -77,11 +103,20 @@ public void execute() throws AcademicException, IOException { fh.close(); throw new AcademicException(ERROR_DUPLICATE_MOD); } + } - promptUserToEnterSemester(); - String userInput = in.nextLine().trim(); - + /** + * Validates user inputs and returns semester value if inputs are valid, + * else throws Academic Exception. + * + * @param userInput semester value + * @param gradeValue grade value + * @return semesterIndex + * @throws AcademicException thrown when any input is invalid + */ + private int validateInputs(String userInput, String gradeValue) throws AcademicException { int semesterValue; + try { semesterValue = Integer.parseInt(userInput); } catch (Exception e) { @@ -96,23 +131,12 @@ public void execute() throws AcademicException, IOException { throw new AcademicException(ERROR_INVALID_SEMESTER_INDEX); } - promptUserToEnterGrade(); - String gradeValue = in.nextLine().trim().toUpperCase(); - if (!moduleValidator.isValidGrade(gradeValue)) { logger.log(Level.WARNING,"Grade entered is invalid."); fh.close(); throw new AcademicException(ERROR_INVALID_GRADE); } - - int moduleCredit = addUtils.getModuleCreditForModule(moduleCode); - addUtils.addModuleToUser(moduleCode, semesterValue, gradeValue, moduleCredit); - - assert semesterValue > 0; - assert moduleCredit >= 0; - - logger.log(Level.INFO,"Finish executing add command."); - fh.close(); + return semesterValue; } /** From 3d4917e3a99b50aaf45ebcef456b1e161f8a1dd8 Mon Sep 17 00:00:00 2001 From: vanessa-kang <49282734+vanessa-kang@users.noreply.github.com> Date: Fri, 16 Oct 2020 23:39:05 +0800 Subject: [PATCH 119/450] Pull updated code from org master (as of 16/10/2020 11.30pm) --- .gitignore | 4 + docs/UserGuide.md | 38 +- docs/images/acadplan_help.PNG | Bin 0 -> 13261 bytes docs/images/acadplan_viewfull.PNG | Bin 0 -> 6877 bytes docs/images/acadplan_viewmain.PNG | Bin 0 -> 12045 bytes docs/images/acadplan_viewsem.PNG | Bin 0 -> 2833 bytes src/main/java/seedu/duke/PlanNus.java | 50 ++- .../academicplanner/AcademicPlannerApp.java | 28 +- .../AcademicPlannerParser.java | 32 +- .../commands/AddModuleCommand.java | 83 ++++- .../commands/PrintCalenderCommand.java | 83 +++++ .../commands/PrintHelpCommand.java | 28 ++ .../commands/RemoveModuleCommand.java | 9 +- .../commons/AcademicCalendarSorter.java | 47 +++ .../academicplanner/commons/AddUtils.java | 31 +- .../academicplanner/commons/EditUtils.java | 33 +- .../commons/ModuleValidator.java | 14 +- .../academicplanner/commons/PrintUtils.java | 76 ++++ .../academicplanner/commons/RemoveUtils.java | 36 +- .../exceptions/AcademicException.java | 5 + .../apps/capcalculator/CapCalculatorApp.java | 5 +- .../capcalculator/CapCalculatorParser.java | 8 +- .../duke/apps/capcalculator/SetSuParser.java | 46 +++ .../commands/CurrentCommand.java | 12 +- .../commands/SetSuByModuleCommand.java | 38 ++ .../commands/SetSuBySemesterCommand.java | 42 +++ .../commands/SetTargetCommand.java | 35 +- .../commons/CalculatorUtils.java | 12 +- .../capcalculator/commons/SetSuUtils.java | 325 ++++++++++++++++++ .../capcalculator/commons/SetTargetUtils.java | 57 +-- .../exceptions/InvalidCapException.java | 2 +- .../exceptions/InvalidCreditException.java | 2 +- .../duke/apps/moduleloader/ModuleLoader.java | 24 +- .../exceptions/ModuleLoaderException.java | 5 +- .../java/seedu/duke/globalcommons/App.java | 2 +- .../seedu/duke/globalcommons/Command.java | 2 +- .../seedu/duke/globalcommons/LoggingTool.java | 35 ++ .../seedu/duke/objects/PartialModule.java | 9 +- src/main/java/seedu/duke/objects/Person.java | 6 +- src/main/java/seedu/duke/storage/Storage.java | 37 ++ .../duke/storage/commons/FieldValidator.java | 109 ++++++ .../seedu/duke/storage/commons/LoadUtils.java | 107 ++++++ .../seedu/duke/storage/commons/SaveUtils.java | 56 +++ .../CorruptedSaveFileException.java | 7 + .../storage/exceptions/LoadFileException.java | 14 + .../storage/exceptions/SaveFileException.java | 14 + src/main/java/seedu/duke/ui/Ui.java | 4 + .../commons/EditUtilsTest.java | 76 ++++ .../commons/RemoveUtilsTest.java | 46 +++ .../commands/CurrentCommandTest.java | 37 ++ text-ui-test/EXPECTED.TXT | 20 +- 51 files changed, 1620 insertions(+), 171 deletions(-) create mode 100644 docs/images/acadplan_help.PNG create mode 100644 docs/images/acadplan_viewfull.PNG create mode 100644 docs/images/acadplan_viewmain.PNG create mode 100644 docs/images/acadplan_viewsem.PNG create mode 100644 src/main/java/seedu/duke/apps/academicplanner/commands/PrintHelpCommand.java create mode 100644 src/main/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorter.java create mode 100644 src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java create mode 100644 src/main/java/seedu/duke/apps/capcalculator/SetSuParser.java create mode 100644 src/main/java/seedu/duke/apps/capcalculator/commands/SetSuByModuleCommand.java create mode 100644 src/main/java/seedu/duke/apps/capcalculator/commands/SetSuBySemesterCommand.java create mode 100644 src/main/java/seedu/duke/apps/capcalculator/commons/SetSuUtils.java rename src/main/java/seedu/duke/{ => apps/capcalculator}/exceptions/InvalidCapException.java (85%) rename src/main/java/seedu/duke/{ => apps/capcalculator}/exceptions/InvalidCreditException.java (85%) create mode 100644 src/main/java/seedu/duke/globalcommons/LoggingTool.java create mode 100644 src/main/java/seedu/duke/storage/Storage.java create mode 100644 src/main/java/seedu/duke/storage/commons/FieldValidator.java create mode 100644 src/main/java/seedu/duke/storage/commons/LoadUtils.java create mode 100644 src/main/java/seedu/duke/storage/commons/SaveUtils.java create mode 100644 src/main/java/seedu/duke/storage/exceptions/CorruptedSaveFileException.java create mode 100644 src/main/java/seedu/duke/storage/exceptions/LoadFileException.java create mode 100644 src/main/java/seedu/duke/storage/exceptions/SaveFileException.java create mode 100644 src/test/java/seedu/duke/apps/academicplanner/commons/EditUtilsTest.java create mode 100644 src/test/java/seedu/duke/apps/academicplanner/commons/RemoveUtilsTest.java create mode 100644 src/test/java/seedu/duke/apps/capcalculator/commands/CurrentCommandTest.java diff --git a/.gitignore b/.gitignore index 9a3f753456..474f53e5c8 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,7 @@ bin/ text-ui-test/EXPECTED-UNIX.TXT /text-ui-test/DIFF.TXT DIFF.TXT +PlanNUS.txt +AddModuleCommand.log +ModuleLoader.log +SetTargetCommand.log diff --git a/docs/UserGuide.md b/docs/UserGuide.md index f2105e5600..aef55c198b 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -14,7 +14,7 @@ PlanNUS is a __desktop application for planning academic journey__ with modules 1. Double click on _PlanNUS.jar_ to start up the program. 1. If the previous step does not work, open up the command prompt. 1. Go to the directory where the jar file is saved at. -1. Enter the following command `java -jar PlanNUS.jar` +1. Enter the following command `java -jar PlanNus.jar` ## Features @@ -92,9 +92,23 @@ __Caution:__ Input format: `view` -{Photo here} + +As shown in the image, users can choose from printing the full calendar by typing `full` or printing a specific semester by typing a number from 1-10, inclusive. +Expected output when user wishes to print the `full` calendar: + + + +Expected output when user wishes to print a specific semester: + + + +#### Printing help for academic calendar: `help` + +Input format: `help` + + ### Cap Calculator: `capcalc` @@ -126,7 +140,8 @@ Input format: `set target` __Caution:__ -* Maximum CAP is 5.0 +* Maximum CAP should be smaller or equals to 5.00. +* Minimum MC should be greater than 0. @@ -154,14 +169,9 @@ Input format: `exit` Question Type|Question|Answer :---:|---|--- General | How do I check which modules are offered by NUS? | For more info on which modules are offered by NUS, visit [here](https://nusmods.com/modules?sem[0]=1&sem[1]=2&sem[2]=3&sem[3]=4 "NUSMODS"). -General | What is a valid semester index? | For the purpose of this planning software, we have come to a decision to limit the maximum number of semesters an undergraduate can take to 10, which is 5 academic years. The notation they are represented by is by an integer of value 1 to 10. For a fresh undergraduate, they will begin at semester index of 1. For a year 3 student who is currently in semester 1, the semester index will be 5. +General | What is a valid semester index? | For the purpose of this planning software, we have come to a decision to limit the maximum number of semesters an undergraduate can take to 10, which is 5 academic years. The notation they are represented by is by an integer of value 1 to 10. For a fresh undergraduate, they will begin at semester index of 1. For a year 3 student who is currently in semester 1, the semester index will be 5. Please refer to the appendix for more information. General | What is a valid grade? | **Letter Grades**: A+, A, B+, B, B-, C+, C, D+, D, F , **Special Grades**: CS, CU, S, U, W, IC, IP, AUD, WU, EXE, **If you have yet to have a grade for the module**: NT - -**Q**: How do I transfer my data to another computer? - -**A**: {your answer here} - - +General | What is the name of the saved file? | The name of the saved file is `PlanNUS.txt` and can be found at the base of the folder, in the same location as your PlanNUS.jar. ## Command Summary @@ -175,6 +185,9 @@ Note that the following commands are case-insensitive. | Removing an existing module in the calendar | `remove ` | | Editing an existing module in the calendar | `edit ` | | Printing the academic calendar | `view` | +| Printing help information | `help` | +| Exiting the Academic Planner | `exit` | + * Initiate the __CAP calculator__: `capCalc` @@ -184,10 +197,7 @@ Note that the following commands are case-insensitive. | Configure current CAP and graded MCs | `set current` | | Set target CAP | `set target` | | Make the module grade as S/U | `set SU` | - -* To exit to the main page: `exit` - - +| Exiting the CAP Calculator | `exit` | ## Appendix diff --git a/docs/images/acadplan_help.PNG b/docs/images/acadplan_help.PNG new file mode 100644 index 0000000000000000000000000000000000000000..2bee4cce4cc385f3b8157232a3b9e73c78c46943 GIT binary patch literal 13261 zcmb_@byQRf`z|3NH6SU%ARy8pA{|4gz|dV%(jYQ)ccY|qGjw-}NC*ldLw9#Gbll;b z^L^+1?)lEQ?!D{&LCjj4wfCNR_w&3@5C&G1#>FDXLPA2qm6efDK|(@SL;QY-iH`Ul z|4K;@@dMdOMOqB0e2`)j@#2AnsDdaGQdJE0wJ{pv^+N|4Z6_q8NAK^ykmt;)T#=AC z-^facs<|5M&fcgJj^AQ96pmOHjwtS*K&Cd^(x(-t1d{557q+ zr_-J4^`Abs$5i-Yn3DonYGRnfm}pGYfo}s*67a=diTTN4Qj=$k&;{a0fwLZog-Sti zVD`oH-PzWe%L1aISMD_J?AK%=%>c>wH)wY+cD&jG@vEt9ou(GSI_S2NFxmk2#!N5Hu@INMyyC5Q09 z6}@*TVX`0;v@EKBv0E^nH?De1ZF?4HIKj{E9SJD!2ymHzfQ0Y3Zp(6!o(JwIO=E0* z8#*u;Z#n;YMCy68opjE$FYh^b0K}^@%QU~kXDqxU-F9q`5a$v8QkZ{-ndp(3-~q_I zA!8(E%cQ}8_e##&yDPX09XquS)gKP8Djkg196>su9#s34W|=EC22|96I~ddGTW4rK zAHE#3U)d>QcWyI{s{0UWp$(3s*HF2+rV9NaeTe;N2vVdlk#1}_Bl z?AzWRM6}K-y`%MG-stF|=UJ|Zxqo|XQQz-@3E1A?%mZ(M z^C49tX2|EF7oe_Hv6au)m_8tK5V%9&3>k0snz>!WPV=1Hr>%SJY>bCZcX)MpGgZ`^ZEMu-g&Wah1Gm# zHnUFzc_Hzy+h{<8*6%m^U<-68IY8a2dYnM?E_)TUGSD`_9utTHf8y!Bj6cWe6K1dE z^<-J#nwgIO)#_(c<0pi$595=N)Jez>Luq!<4ddLdJC$MD#5E8xkbrtTHA(@qeZfG0 ziQ;6wvG0@2V2>pKr%6{&&25fDh`gun#MQ{0TBWZVm|4KqxdHsw&3o3CI|&$W8+gdx zsiT@)`-|W!i*xQl4@_!P&;&m?%BKrMe}5q^O~zNY3klAGQ|1H6j6U|gK6)u2*>OlM z%>1F^;O^#&;lXX0%faxZj~$i*Fxrs2@@O2?L+W;QhLrP_EfteXU zuzi)YhB_wTMM_0_Ydvy_I8_JYR6dCnGd{*@=vyx5t*iKRWzp@!hP;=!?a&+i{o^Z1 z`}T;l3Qzx`hDMBpE9zx=&o>@`{mKle;Mk?G@DLXImSy`a;IKi}a8Y&p%JuA2z_nu4 z#8c;-@`ezJ+SG9RC3rsGC&@cdydig=t;DCdd7lFx^cPbbn5%#P~0t zR6qk`ZxqzCuq0<4B51yTenw6lbL=tuARB+yj^OUh=ME!;m3fORV6&=LP=cs;IJUlF zNW-%ici0O9ZCX%z!PzDWN`DPQDctBaqO0SZ^ie~zQoN%08szpJV~j)1i`VYcxG4Vn z7i;P{?e!>=ofzPdjhEh?7su;#1sRhdR0HaY;YG#BUoEmoRq7e+V zS!7RJDEZ4-S6Y)nXBpJAL1p#wuv`(ktI0vX6ssO6$QMK&*~q&Pz&r298UC3-rG#UL zu*!iMbm=9=J+&_J;CUG@0Sh}Ox~b;u*Msl!tw&{D>)KyOvhnn;8R;(DikvGWj*8kn zb#AcEKa7BMxMWq8eHnG2DB5Crse9txJe^dm)e>n)%nSDL9wT(ATl$7mBI-#&71j`b&+xTM5_YbY46mg!;#Zw_di8WjdLd3Hjn$dZAVlKgk^{ zOx(J8)qon2gWb@NW#n;=V>eIU%0@3`r}mWA3hU(SDXKn%cE^q?kB$Zl_^ytC{1D>(QHz|Xt~y?G+<~h?=*3gJav06l=!DCtZ;QA(XIu$Q z*gz6PNK9{nDH_x3ONMMi;%+#OUY{<=DR6yPXfSfIH8Lqjb!$ofAi`@9COtsoIVf5? z_6e*%?vG4weYI+=RwzAIIAquJ3Y%m|?F52)Jj;MJris_@{2iA&_p|};b@f8}UPm~( z6Y~zRKFSaK*Qd~_cb@4F>yG_VeO?R3PEY;{l2!7p^Lo!GE=o^=(t5M^*~)y?hUHan z0S74|^zz7{KBlyj&w;ouiET-x4AG}(8g!2@nWbh%?nA;b@O%VWE^OEb^L;vloAT66ExX9 zB2(`-Sp4uh?b{t12q@p0J~}3jr$*q!^RCNB?ZM(R9dn6L)v<#s!dXBdA?Z)fLmZ_` z>%+L5II+_XTU4(1Q+o~L)Cs#3{E@B$NG?!MO%* z71}nXCdHyw#TZzwrHs7Ek)6$!qeQ~!Q?NK>s=RjDV=qTWyMc&PYEpE$(kwVB$fiNx zd+K}|Q=l@VjylAi{aG8qvW-{Vm<&=e9h%wq^@wgIcI$IU=2UExf{>V~rM*m?Ftd-+ zMqP18siyGcGc^CHciFo#+Zv;TXW-InPtZ}7GJ*K>3jk?F2+X?*-e)&k+fGyzvei9u zHwAX8!nv5-^e2BFAu#mR?T16wrPGIjkASR~2kh_8h zJZh)O|I?)W2pgSHO6$pif%aSNzEi&x|K_SbUWZcG?P=N8AyVdA{b6JAOK!L;rC)O) zM0hgN!bTuQA-igtb&Fsdht0rq5JQg+K>}A7T z&-MhM@3zi1tDt&>88rRP#05n;P4c*CBVDF%Szw&$awvbn!aFs=1)o$kUZ9Nt4xvJ^ z6PWr=%)rVf#bL44{lyvwCQ*N-;|?7J>fzX`QuA+S7&GE~9 z{jB0$Ui4# zrhlODqU1)SRzR}!Br`zN?I~vdhCaz*PR-LTFUF2Ji|uLMtb)n~K&a~5@M9&6FdM{s zhKl#fOd@eJzp58k!|s@D3o^Z$$MHGeAfBoB^gViBwQ4&|U#~4nAlRz3dm|ih+OyjW zUUjztijT5^32oLXQ4->M!H8!;V%33!dg>N}rwM6kPgr#k>kmQLBFl6MNqxVH0^x!iC4QF=XI?($<4q9YfL+x#N_~JEuiuG!K{M0n!(H5sx~TBaY9$}np~i;I#IiuL3{sx_e9;o zK5^5c>i2`@nn}y7`Ishe>|!>FBze=8Uw*gmNC*jU-j&-;+q z>G7f*AMjsAv|PYc`)c3te^#`gu%>got=@Xs@95=9vNy_A>Y<2TGq> z$b-un7&<2$-)pBSBdVxRMZvCF38WBLO;l~s-xP7F&uPp-J$1VfhLJ}5vF?k{TDA!K zz8o^>&N2bY&pDTtH80lAcduU8Dr~DTbM;1+S82C;(#?nPUwP0MSI0;sEVk93(3E&m z6}u=j1DxHVl*HN}M&uEfeU||iD8W?Q6o#dEB(I!hmzTZyfVQ2l=gmR?d_oH|apH3I z-7V5}yBUijNK999to-(&q^%GP-74qGk8Ro?bnXRJnpVytFqd2U%$+8yA4ZZ05gIc@(0f8t}E?T zhgc9YaXL%nCJr@0i8W3chNQZfDUcLP0-vya`PH;G3BsppDSGj(%h8Y)LsbQX$>)(f zWK;oXsP!xJJilj#q#)(i=kCm$E;;w3mJ8tXbHZ6K=47hh%K}) zJl#%8U+Bo5Rm^iVLS;4X*s0vaJEHLCJ`q%fQr?yRgvnh^Om}l7k z70)oG){p1Owk{mP+-;Vpuj^JH5m4p{vrM#rHIsoEG4gn@KNk;?RmSzAuiizfq4B8;H<9zBdBB0^XZ9Yw`gT1&h# z(b^-v+AW=2t5z<;#aNOlZs>o;hckCyeEEs^Mphgv#@c z$EXhn?B(>mbUXcy!Rzv@ngw$DU829pnWe)3Ple=iD8&9tn#IhkD&x0<1&2M$JL^QS z=zgd5V*^b%7->m@FdA*1(4JdW{JTv-+LZfSO6V^=yCFzDnb(d`avzVvlg~}i}T_#{F!P> zU-P&g`C7?}ZcYk5&igpFTb<-C)2ZV`T2n&Pv-K#oJ*AcMBR|;rQ^!(IB_S{qv^EA@ zMgHjD%mMM`wUN;T%5ad{HJ ziz-6u{g~`EFN7F^gbityengYYZ$l<+g>ZU2VY9%_R(7QM9Lh1n6UTuM4Z6S3i(mOP z&xZI;M{_%&$wfpcfB)oOh41X!+5}`OlppZh?1?2R^&Wb)H_har!cl(q+ym;yLps5D z;GVKV!>7(6?Z;ec(c(0?)&ljx;&U?N?ctVAa4GUeE-@n$vTH9FCC8d zg1r8=b!9j4tDjEzoEZT-KXy)H;k7%}07oZvOggSqRG6($aI;g>EEs(o9eZqy<|4dm zN@TU8_X#u1o=>CENhmV$VW{6jJz=0WWaXE*h8F)kc)QW`J73q30-hTwIYUzsdl2KW3mySFl=l&5)Nn_XOxkZcy|Ww^~6ug%xd`- z*)MPYs{YKx>Me?r2_C+;vx{<`758}ILM zU9hug`{bRcq}}=Pz2TUDDnFgi_`wb`MvS+%AfVx~7=0UH9;;oW^4`mfTRzUe*mn0lFP~26H zGkdB2!l#AhfaoM&-{JV zkEK;+1UXI43n(XeJu8kp-Oce5>g$Y!-OKu`hyT^T`y1x}v)$LzNhOu0ZYOFjFN8%j zgoQ8;b}1%AX6>v9MHwU-biD=ByAta*;jt$LvY|_4R!gsKKbArSRwFu3c&&q$EBGaL45z}ErG%<%#816=!3Ag-$JqZDdV4Rmp5#G} zg{BCa1?sb`)%xVo3) z1jo<3>vnVC*Ed!j4H9`7+}YOeN!Ycf59qH1ekTqli+>Tvmt(kUW&11wb>L0A4wtKZ z{^c;Wu9;^;bhRAgeuCW(tUcMX(Ja}r1u9b%UQF-3@w9OtVaf6rCPeET89T10X6eON z(iw7k8RiF%dfQt)>}5WbN%644 zFZ0|hY9_(qZNpCrQBDVHXO8XW)C2w5aGMIYT?HHDIxiFDw?q=wYz@80xFYhi^Dyi- zMPkx-kB|o`!{Q@&rt?3>`e2vy`W5GmGTv2PyYtDQ8VFLgKXl6Apva@nZYu0~5>u0@ z3Kn1*;v4eN9~DOqB~;)g@l+r>ui!y*w%X;q(ME$Fl z{z>HnSvy$@C?oXAv^z`O*d4dk1ZFOHrp_^|7v4ZT}ttpM}*F1~kSW>vs^jEeZ_53P=7I;SNDnG%0=Csm3s*I5N%KqUg(_1@jO$O0 zW`qOQIWYPbRV5cwM^;O&4I=fiZw)>?!7Ihrmjwuxevd0hPxjZmh^VgR3&KX*-j#EU zWc?sAnrYXA(~&}1TtVl`<*_(eP%>#XCD~Wn+o<&Q$do6=Re%Rl3BRa1EF~^<9=4@P z7&0&H-SPOe-H^5QW$je;s;!8QjNMqKx&IDn9HCV%tz8#RstmSi)tJQew;{^9G1c|d zSiewdick|UDvT zXpH6P5XXBg=Rmloz2GT+f4&%iHwmP5X1lpBRwnC+`EFBEIve3sLoLm zAFYpgfA?J1@Q%pdqP<=6HONZb?fXsYha<+mqV0g?Rje`8cP$LlO1o!?p)d;0<{tCI zqXbW?t)2aJXut3yb*U@Ja69l>6P+_6tm*UqdwlbM0sr@D&wo1HtqhXVV$FQ74%Ub5 zI3uiHPT97^-bA4!v}&~A;vsN-agy-0Pz@3E86!9gi0^sS6q$pbj76CFz@EJpGdg|k zLP-koICCbD#AgapoN*nQBQ6)KiBgM5zfoNSX}Zh8;c9HbnUCXLF3RKnuo2hfza#$Z zMQSCErQh7pL@%wBw^DWxAt}Am>o5D2D+~i$Ml7{`s+Ogfc}1@>gl)uw-pJuo*O7M# z6JR$Sbq%bXndf>bN*MhLCtPF{h1`0!5M%wya3mf3gA2;GnUe$}N7g)&7gR&e|KyX0 zc&vr_YX;I+`F|olqxx^QErn29)Nfd6<|2f7F61!Npj^4fX)pS}yMCT5ywA%DzpS48 z#s#wDzjJ}oU_F8hT8$3+k!zxxI?Z9XV}7y_-`8h`k^xP`kQmJQ&uAO|$XWOPW#*18 zle?GS#omFby{AEbzbLzeCJz=d;pD?f+h3;k%Slm-W>&(6Ie%q_kj8rW>iG%;`_~G@ z#fU4_sD8HleBz|QvZxMEt!!H9-ZK4_=M(UDHSTt_&gk>E_JKbfQ)k3O9g-z4UcSi> z94b@!{hq>;TRuDyK1chvMVIH??J|R}NhPI#eeWph^82oC28hQkMDYNVzEu9jDf}Jn z^$c4#LvbAoXt~u+j3xENlw?gOhinx?pFm*1h*r%X>+)a!MjaKo?MEjA00%{mGDz!Y z(r?$zzE=zD{o&eL8#z2Mtt8);1d*);`tLEkE1r6>qW2KPdNb_nwtVd|$%8F^^g(He zNO`3*#Yh*4X$@-P(Cdq7Oza7SbdZ%7*Fk89ZWU7@?F*!bXx|lU!jCejd=xyb#0y^H zt9&Oj+Xu8s>lCm{vTyIYxev+t^(dWH)QsHJeIU<6pD#H*rd#@xVa@>xEM?mR1G4Z? z)}+}>9S>+l?oD3S$&BPMiEXdtESpDB2vI4Q3r7o6d%dHx}w@U?C{!}`i8 zzozl{;x?eRjlDC?x3Qxt+io#y;w3e##Z}v#R@!20-p>*_ym*5+drMhJXL3yQG;Q)3 z+JbIv*JXsT9pBM9FOnbm^}zm4XZO+@qTaqA@fGeJ(ZJ$b!5E(&^^;8b&Y@i={I-Bb zC?;=RCcAQTEk&{&j%?@F+3V%@G8B5^Wq14PkQ5guzjTy4QnUVd7Irdz?swyT)%fZ{ zYPi$;eVg;OisuV2!H zJAJLGc(U<)uK|6rp9KF^mv0O8hH%2H) zG17^YO((Glsp8fUQ*9Y6U1^atu{g(L>$I_5(tnmKXSt{Z|HNEt@z-+_C{jMnk2$Zm z_Dlh#YgWmuoh2>UE;;3U!Pl^tsKa%kl6NoN2YBZDbJvb{)fu$xHT%185yN|Jb(-^@ zOF(OID!}n7^1WujOWwfm?vYm#EJ~2vuOD2p=QvPN1OJ>k@JV9n`oMCI>U zb9WIwbFeDK_I#~;a+)o8eNk)Q z@edqzaeRiFQ~A=YK_t;e~~SVxc5&aqg=QA8Y-X@-$2)=-(`Ac%QtZezNOC zgA%8ahAA{GREG!Qc$u5W(Eg?E*AF2z;hq#_tFF&5!5IUpR{3KGocb&l+M{O|EYqr? z$CQ1>+a!T1C+&|GpENQkjI-o%8HsuNMGJ1-JbH&uXPGO++6%gaG>>*fp7Nz|g&MW=BA3XTJ{`e6`x^y1 zs|42U;(YJ2JBi0+*zx@4&xM`TdvP?PyiFHKLGg_W+BtGP>dicrPNQ)-)LHq1@eE=D zr4zCXm2YFfHSk?}kd81vV4zWaZH?jm?k%q;(|gazqfnx`Cl0IQGA}V+*hGVPK-4R{ zNhf~&H-Etf+6LYr3SsqUhKm5h)w4G{ItORrdSn5}HhnF4h4X-<8*Y|0rsOT#4GItB zyJple)ej;+?9zkYQuS0u1hG@Ku(qR~9f;%DHaZCSIDrYp@PZp?z(KE>3s867du_7G z5jB8=(rhxK1=#w-3@)(RYJrfc%>Mufl4VMULJvBIFftK51BCWSy*`@ne)!79(FGZC z)n^(H5H+A3jQ?5*_^)R2-;D)Xgmip9>NGFf$qk6t7%+0DxX}VRQs7#iFbIo*U!|QMs@YLbv~R<|r^WV38FQ z_V{%qNJPHup}9Qib0OsV9X2^)&dlGuRg8sCJDmwBR>`S$oqJQCe>Yi=f}mJ1G>n~P z)Fa3f`#0ZLLpC0ZNHW2#9`Zpyg23H{m1dG+EOqbjg@*$Kx<8nyG>wKJ$WlOD7BG_o z@FH$LKro>nxx?p_$8P$D6KF||(VcQ$YT9Cbogc3KwwglTAavP*33ggeD0Li#&Emyr zW*s#>E3PH=W)zvl>hm)CFZ;O4#L$cu1{FJ=?nvc&;Sg5NVixL^1=nphxrg+rhmmO0 zCUJtoOqdASN|LUF2jeL?KuFC3z(zuv%PVDP zE_dEW4MWsIc6xNFpn9?Z<_1`VN;evVs0D(G;YwUKct41aU!W`zr9@6Yu=?y*5ZSkV znPb=Z6_;F`ZUspI-_PowCO1`Fwa@ND|InX)99v}PZr`-?(l-fEigihT$@M8B8FG?d z4tar?IhUs>37MxB8ExUBy@H9Y+giHLU6vgY0~eNyFXcRExc+p>D(;n4zlgJQRqU>> zmq9xK9%SOXhqxSHggxPTr*rSF8)e=P91InRsLQnhsoE-0A9v_KpE+l z0Iet!IprP^Q$@^lJi_SmMGSOKJj}1Zm!DJa_atIFz{L_6-ANK}#*jId8J)6d7CPq$ zV_X{s=?r5uGzQbx+idv9EE1}08f$^X^PqDP<>LUdowKzMJEU7ve6 z+*3z^ZehWHS#5p3jmn&o_9FjoJ1cle&8uJ-s zZB>KS)PtA`viJG0XDv2320EOG`FeBu5kPZ~ubZMnB>+cdjzLR?O=BS?s!OK#%4RX? zR7L}uFKliJ%+3s+F5I9xYY&^n2VUzsbU#$1<6or@WT3On3SOV~84FIUeU%rK$MYsF z{iBkO(${!Uc=#1t=m5|aMNo?~#~|jun`v?1H0CHXUfF#Y&hwO?gv0wRw!8K*K%+pVy;)w z7=FiX^$mBF?3KRdOE8B|T2?5dZ$BCNSxN8Sm!V`nViZ&F z^QU=(^iHQMlS_<>|FDtqw3H;p20!nkPfYk8O94-=nLztxiWm5Psa~c3VGKu0gTiBC1EQm2+7OMjpd$m#z?42>pjj=!FqkN*Jo2~V4e^hLR}pI#FV&f|*eweY zG)&+v+$-*s0xD)j2XvP##nB5*kyOL49$q6_%(M}6cW^tTK=5`sUND zg7ufex8KT}!xld!xvuJl4Aq1dic>b8tDZ!b{yR}*xmwV5?Btt58yOnTRNAs6`dhop z5+n-!Vlo`!H)icn>CCF|ik7DZNXs@h_h-ASq`ci~S{om4xfYR@t_hWX$6D(Za4gS5 zt7*Yhy9a`49AnnG{+M|6VehbCTOP}>T0=4T==phHM;+#&I=ftgTdWi1u?=Xe1k5sW z&N~k{1wu=e<@T$BPoqA+R~y!{u&YF$@ok$UGkESrjg2?ai}6#%+P~@Wd5@lVXa=$x zgCfU?r;3mdQpPu+UQtnS(T}3+gj&*i6mgP~KErjg!;x^g!sgLk) z>>66`!61}&4vERw520V^-VwpxDk(OqhrIbhDYDSLH%5=hFLTXKg?KTBbu7f3^|8^@ z3_=IGpo*Hch6vAkT>DBvvcb@({fT5JqJY%&r$d6I^oK(NxGQHD>BYmWTRrC=9n-WG zc!I@Wg}-psiHKoK({|Z<5GAdKRFP4$YzE#BZ^Y-FNXUnNnk4$HGrfxr8Ys5xka&C1 z=4ds={^8Qf%M*&LRu*%7BNC_TOwulQ23QQt?-}JN`XUV_%CcIg@ zZTy9Us2zxpLGm=6(gIYN^%qZN=jo@nU#c9k_Vl7FRBgRR>uX*qocE)qslFabHwT)p z8tgN6q@2nJCeA-W^h;9u7&}OML#9N$(t9sba}=_$9ycBZ-q58tg~we#g%Rh3B>AWX z(S}PUkpFZdmFy2zb+ti;nbchE<_=B5$z{0oF9q}ED7KF>}#h8)g_R~;SS^!4sY z;CzCBgle-!XyI=wfo?pI(XORDRJMYfH;0_T8n|_JbALVgY$&$Wn0t& z*2y*>{grK-enRq`_rZo-yWh8|cQJlzN;zKz*^s`lnr0`^@wV5?xhg8~D}K{rg#ve` zTDK23C(U2U=n}MB!TOmro3K_w#f$I@z9Sl@{lVM_N1ijn;mLrvt5-5ZknBP z3<Iv4iD@2W~&NZm@*vWE^dKvFyLZUyAO2Y|YWU6wu~) zRmIzs&J&YuMGD>8E^$XCvubC3)S4 z)VAy|{074B>iOSoQeVyemKP*$IF<{TNzJctz6RNd?Q!#EIX6kXC4r_ngmdi$Q{DPv zHyrcqyB?7)eT@tAel@NkuX(ZCS#rHjL|TF4HokarwOBnL+^vVE+J>8M!oFZ=A+TEX zmD&4TO?idtQC>;%zhVMmvr%rac8u-!UiU4fpR=Y?t8|>?(^ni^ulx#Ia2|BJJ{12o zx`ff#Q$aFr*o8_z9lTD!6!ihVsl;OvY{;6i<2U+!YVuL5POAg`8dFD)kXiyO3lGMaEABd(&`HfVyrhLRy)Qq zGj#Qv-K)dphAMIXL7t4drP`%TzehrYKF!?BxEP^1PxOOQ4FSW=dNc@sZjpX-PSvp; z)q*GrNaICa&UQ*yg`SbLFYdKS7V1P*jQq)>;>}Nv7`lD_F^yS=sr{vQ-a2Z0b&A|d zA-(2r!Vonk`o=D3{s2QSd{MhmbG&lT*?3KvSxzaLqdG)H<_AZvwG9co;kPr+!P~j8 z;vHILv-3$Y_YdmrnZqsU-k{~*!Uvi{WgQHrJAGR(b*kj+|IttSf#@d-K8)u2gj0320wa>WVZleqSC)iAgYb@8nKQ8p-WG7dMtAQo z#I38L73+vKqs4g>436zIR`gzpVN$QyW?N>NPf}n$FgFr-40^$cXrC)9oL9I?}_*cMm<5Uvg0%YP`V|Gu`{Jcef9#fP4eQwPTW_=|BAcDHbcY|fez W`OaIF3h^&ENV1ZO66In>{{IV-{-PTI literal 0 HcmV?d00001 diff --git a/docs/images/acadplan_viewfull.PNG b/docs/images/acadplan_viewfull.PNG new file mode 100644 index 0000000000000000000000000000000000000000..f220bc84e657e60a4d0a3ccaea5fe135bad020fa GIT binary patch literal 6877 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 literal 0 HcmV?d00001 diff --git a/docs/images/acadplan_viewmain.PNG b/docs/images/acadplan_viewmain.PNG new file mode 100644 index 0000000000000000000000000000000000000000..9fc72bef1497f3e6a4754a92979d818c5739e4d5 GIT binary patch literal 12045 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 CyE4%L literal 0 HcmV?d00001 diff --git a/src/main/java/seedu/duke/PlanNus.java b/src/main/java/seedu/duke/PlanNus.java index 5761fb8bda..b1ad68acaa 100644 --- a/src/main/java/seedu/duke/PlanNus.java +++ b/src/main/java/seedu/duke/PlanNus.java @@ -4,6 +4,7 @@ import seedu.duke.globalcommons.App; import seedu.duke.objects.Person; import seedu.duke.parser.AppParser; +import seedu.duke.storage.Storage; import seedu.duke.ui.Ui; /** @@ -12,6 +13,7 @@ public class PlanNus { private static final String WELCOME_MESSAGE = "Welcome to PlanNUS!"; private static final String WELCOME_BACK_MESSAGE = "Welcome back to PlanNUS Main Menu!"; + private static final String AWAIT_COMMAND = "Type in a command to continue..."; private static final String EXIT_MESSAGE = "Thanks for using PlanNUS! We hope to see you again!"; private static final String HELP_MESSAGE = "\tFor academic planner, type \n" + "\tFor CAP calculator, type \n" @@ -21,6 +23,7 @@ public class PlanNus { private ModuleLoader allModules; private Person currentPerson; private boolean isStartupSuccessfully; + private boolean isExit; /** * Default constructor for PlanNus. @@ -31,6 +34,7 @@ public PlanNus() { this.allModules = new ModuleLoader(); this.currentPerson = new Person("Bob"); this.isStartupSuccessfully = true; + isExit = false; } catch (Exception e) { this.isStartupSuccessfully = false; System.out.println(e.getMessage()); @@ -41,26 +45,40 @@ public PlanNus() { * Main entry function for PlanNUS. */ public void run() { - assert isStartupSuccessfully == true : "Startup is successful"; - if (isStartupSuccessfully) { - showWelcomeMessage(); - boolean isExit = false; + assert isStartupSuccessfully : "Startup is unsuccessful"; - while (!isExit) { - try { - String userInput = ui.getScanner().nextLine(); - App selectedApp = AppParser.parse(userInput, allModules, currentPerson, ui); - selectedApp.run(); - isExit = selectedApp.getIsExit(); - if (!isExit) { - showWelcomeBackMessage(); - } - } catch (Exception e) { - System.out.println(e.getMessage()); + showWelcomeMessage(); + Storage storage = initializeStorage(currentPerson); + + while (!isExit) { + try { + System.out.println(AWAIT_COMMAND); + String userInput = ui.getScanner().nextLine(); + App selectedApp = AppParser.parse(userInput, allModules, currentPerson, ui); + selectedApp.run(); + isExit = selectedApp.getIsExit(); + if (!isExit) { + showWelcomeBackMessage(); } + } catch (Exception e) { + System.out.println(e.getMessage()); } - showExitMessage(); } + ui.closeScanner(); + storage.saver(currentPerson); + showExitMessage(); + } + + /** + * Initialises storage with the data of the currentPerson. + * + * @param currentPerson Person of data + * @return populated Storage + */ + private Storage initializeStorage(Person currentPerson) { + Storage storage = new Storage(allModules); + storage.loader(currentPerson); + return storage; } /** diff --git a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java index c9b7e791dd..a978b85de0 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java +++ b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java @@ -12,18 +12,26 @@ public class AcademicPlannerApp extends App { private static final String WELCOME_MESSAGE = "\nWelcome to Academic Planner!"; private static final String EXIT_MESSAGE = "Thank you for using Academic Planner!"; + private static final String AWAIT_COMMAND = "Type in a command to continue..."; private static final String COMMANDS_LIST = "Available commands are:\n" + "\tadd \n" + "\tedit \n" + "\tremove \n" + "\tview\n" - + "\texit\n" - + "Type a command to continue..."; + + "\thelp\n" + + "\texit"; private final ModuleLoader allModules; private final Person currentPerson; private Ui ui; + /** + * Default constructor for Academic Planner App. + * + * @param allModules all modules offered by NUS + * @param currentPerson current user + * @param ui ui of PlanNUS + */ public AcademicPlannerApp(ModuleLoader allModules, Person currentPerson, Ui ui) { this.allModules = allModules; this.currentPerson = currentPerson; @@ -34,12 +42,12 @@ public AcademicPlannerApp(ModuleLoader allModules, Person currentPerson, Ui ui) * Main entry point for the Academic Planner Application. */ public void run() { - System.out.println(WELCOME_MESSAGE); - System.out.println(COMMANDS_LIST); + showWelcomeMessage(); boolean isExit = false; while (!isExit) { try { + System.out.println(AWAIT_COMMAND); String userInput = ui.getScanner().nextLine(); Command commandInput = AcademicPlannerParser.parse(userInput, allModules, currentPerson, ui); commandInput.execute(); @@ -48,13 +56,21 @@ public void run() { System.out.println(e.getMessage()); } } - showExitMessageAcademicPlanner(); + showExitMessage(); + } + + /** + * Prints welcome message for Academic Planner. + */ + private void showWelcomeMessage() { + System.out.println(WELCOME_MESSAGE); + System.out.println(COMMANDS_LIST); } /** * Prints exit message for Academic Planner. */ - private void showExitMessageAcademicPlanner() { + private void showExitMessage() { System.out.println(EXIT_MESSAGE); } } diff --git a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java index 3b0201b441..0fdbb5fcdd 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java +++ b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java @@ -1,10 +1,11 @@ package seedu.duke.apps.academicplanner; -import seedu.duke.apps.moduleloader.ModuleLoader; import seedu.duke.apps.academicplanner.commands.AddModuleCommand; import seedu.duke.apps.academicplanner.commands.EditModuleCommand; import seedu.duke.apps.academicplanner.commands.PrintCalenderCommand; +import seedu.duke.apps.academicplanner.commands.PrintHelpCommand; import seedu.duke.apps.academicplanner.commands.RemoveModuleCommand; +import seedu.duke.apps.moduleloader.ModuleLoader; import seedu.duke.exceptions.CommandParserException; import seedu.duke.globalcommons.Command; import seedu.duke.objects.Person; @@ -15,6 +16,7 @@ * Class representing the parser for the academic parser. Used in the academic parser app. */ public class AcademicPlannerParser { + private static final int COMMAND_INDEX = 0; private static final int MODULE_CODE_INDEX = 1; public static final String NEW_LINE = "\n"; private static final String EXITING_CURRENT_COMMAND = "Exiting current command back to Academic Planner Main Menu."; @@ -23,15 +25,8 @@ public class AcademicPlannerParser { private static final String EDIT_COMMAND = "EDIT"; private static final String REMOVE_COMMAND = "REMOVE"; private static final String VIEW_COMMAND = "VIEW"; + private static final String HELP_COMMAND = "HELP"; private static final String EXIT_COMMAND = "EXIT"; - private static final String EXIT_MESSAGE = "Thank you for using Academic Planner!"; - private static final String COMMANDS_LIST = "Available commands are:\n" - + "\tadd \n" - + "\tedit \n" - + "\tremove \n" - + "\tview\n" - + "\texit\n" - + "Type a command to continue..."; /** * Command to process the user inputs and to return the intended command with the correct parameters. @@ -48,19 +43,20 @@ public static Command parse(String userInput, ModuleLoader allModules, Person cu String[] inputs = userInput.toUpperCase().split(" "); Scanner in = ui.getScanner(); - if (inputs[0].equals(ADD_COMMAND)) { + switch (inputs[COMMAND_INDEX]) { + case ADD_COMMAND: return new AddModuleCommand(allModules, currentPerson, in, inputs[MODULE_CODE_INDEX]); - } else if (inputs[0].equals(EDIT_COMMAND)) { + case EDIT_COMMAND: return new EditModuleCommand(allModules, currentPerson, in, inputs[MODULE_CODE_INDEX]); - } else if (inputs[0].equals(REMOVE_COMMAND)) { + case REMOVE_COMMAND: return new RemoveModuleCommand(allModules, currentPerson, in, inputs[MODULE_CODE_INDEX]); - } else if (inputs[0].equals(VIEW_COMMAND)) { - System.out.println("Sorry this function is not ready yet!"); - return new PrintCalenderCommand(); - //TODO Add in print calender - } else if (inputs[0].equals(EXIT_COMMAND)) { + case VIEW_COMMAND: + return new PrintCalenderCommand(currentPerson, in); + case EXIT_COMMAND: return new Command(true); - } else { + case HELP_COMMAND: + return new PrintHelpCommand(); + default: throw new CommandParserException(ERROR_INVALID_COMMAND + NEW_LINE + EXITING_CURRENT_COMMAND); } } diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java index 3bb8cf80bc..38fe325d28 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java @@ -5,8 +5,11 @@ import seedu.duke.apps.academicplanner.commons.ModuleValidator; import seedu.duke.apps.academicplanner.exceptions.AcademicException; import seedu.duke.globalcommons.Command; +import seedu.duke.globalcommons.LoggingTool; import seedu.duke.objects.Person; +import java.io.IOException; import java.util.Scanner; +import java.util.logging.FileHandler; import java.util.logging.Level; import java.util.logging.Logger; @@ -23,14 +26,25 @@ public class AddModuleCommand extends Command { + "\tLetter Grades: A+, A, A-, B+, B, B-, C+, C, D+, D, F\n" + "\tSpecial Grades: CS, CU, S, U, W, IC, IP, AUD, WU, EXE\n" + "\tIf you have yet to have a grade for the module: NT"; - private static final String VALID_SEMESTERS = "Valid semesters are integers from 1 to 10, inclusive"; + private static final String VALID_SEMESTERS = "\tValid semesters are integers from 1 to 10, inclusive"; + private static final String LOG_FILE_NAME = "AddModuleCommand.log"; + private static final String LOGGER_NAME = "AddModuleCommand"; - private static final Logger logger = Logger.getLogger("AddModuleCommand.java"); + private static Logger logger; + private static FileHandler fh; private AddUtils addUtils; private ModuleValidator moduleValidator; private Scanner in; private String moduleCode; + /** + * Default constructor for Add Module command. + * + * @param allModules all modules offered by NUS + * @param currentPerson current user + * @param in scanner + * @param moduleCode module code + */ public AddModuleCommand(ModuleLoader allModules, Person currentPerson, Scanner in, String moduleCode) { this.addUtils = new AddUtils(allModules, currentPerson); this.moduleValidator = new ModuleValidator(allModules, currentPerson); @@ -43,49 +57,86 @@ public AddModuleCommand(ModuleLoader allModules, Person currentPerson, Scanner i * else does not add module into user's academic calendar. * Validates user's input semester and grade. * If either is invalid, does not add module into user's academic calendar. + * Updates user's statistics as well. */ @Override - public void execute() throws AcademicException { - logger.setLevel(Level.WARNING); + public void execute() throws AcademicException, IOException { + fh = new FileHandler(LOG_FILE_NAME); + logger = new LoggingTool(LOGGER_NAME,fh).initialize(); logger.log(Level.INFO,"Executing add command."); + + validateModuleCode(); + + promptUserToEnterSemester(); + String userInput = in.nextLine().trim(); + + promptUserToEnterGrade(); + String gradeValue = in.nextLine().trim().toUpperCase(); + + int semesterValue = validateInputs(userInput, gradeValue); + int moduleCredit = addUtils.getModuleCreditForModule(moduleCode); + + addUtils.addModuleToUser(moduleCode, semesterValue, gradeValue, moduleCredit); + + assert semesterValue > 0; + assert moduleCredit >= 0; + + logger.log(Level.INFO,"Finish executing add command."); + fh.close(); + } + + /** + * Throws AcademicException if the module code is not offered by NUS, + * or module is already taken by user. + * + * @throws AcademicException thrown when invalid module code is requested to be added + */ + private void validateModuleCode() throws AcademicException { if (!moduleValidator.isModOfferedByNus(moduleCode)) { logger.log(Level.WARNING,"Module entered not offered by NUS."); + fh.close(); throw new AcademicException(moduleCode + ERROR_NOT_OFFERED); } if (moduleValidator.isModTakenByUser(moduleCode)) { logger.log(Level.WARNING,"Module entered is duplicated."); + fh.close(); throw new AcademicException(ERROR_DUPLICATE_MOD); } + } - promptUserToEnterSemester(); - String userInput = in.nextLine().trim(); - + /** + * Validates user inputs and returns semester value if inputs are valid, + * else throws Academic Exception. + * + * @param userInput semester value + * @param gradeValue grade value + * @return semesterIndex + * @throws AcademicException thrown when any input is invalid + */ + private int validateInputs(String userInput, String gradeValue) throws AcademicException { int semesterValue; + try { semesterValue = Integer.parseInt(userInput); } catch (Exception e) { logger.log(Level.WARNING,"Semester entered is not an integer."); + fh.close(); throw new AcademicException(ERROR_INVALID_COMMAND); } - if (!moduleValidator.isValidSemester(semesterValue)) { + if (!ModuleValidator.isValidSemester(semesterValue)) { logger.log(Level.WARNING,"Semester entered is invalid."); + fh.close(); throw new AcademicException(ERROR_INVALID_SEMESTER_INDEX); } - promptUserToEnterGrade(); - String gradeValue = in.nextLine().trim().toUpperCase(); - if (!moduleValidator.isValidGrade(gradeValue)) { logger.log(Level.WARNING,"Grade entered is invalid."); + fh.close(); throw new AcademicException(ERROR_INVALID_GRADE); } - int moduleCredit = addUtils.getModuleCreditForModule(moduleCode); - assert semesterValue > 0; - assert moduleCredit >= 0; - addUtils.addModuleToUser(moduleCode, semesterValue, gradeValue, moduleCredit); - logger.log(Level.INFO,"Finish executing add command."); + return semesterValue; } /** diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java index 4868a52ca3..b02a58e2e9 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java @@ -1,6 +1,89 @@ package seedu.duke.apps.academicplanner.commands; +import seedu.duke.apps.academicplanner.commons.AcademicCalendarSorter; +import seedu.duke.apps.academicplanner.commons.ModuleValidator; +import seedu.duke.apps.academicplanner.commons.PrintUtils; +import seedu.duke.apps.academicplanner.exceptions.AcademicException; import seedu.duke.globalcommons.Command; +import seedu.duke.objects.PartialModule; +import seedu.duke.objects.Person; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Scanner; +/** + * Class representing a print module command from the academic planner. + */ public class PrintCalenderCommand extends Command { + private static final String FULL_PRINT_COMMAND = "Full"; + private static final String EMPTY_MODULE_LIST = "Your academic calendar is currently empty!"; + private static final String ERROR_INVALID_COMMAND = "Invalid command entered"; + private static final String ERROR_INVALID_SEMESTER = "Invalid semester entered."; + private static final String PROMPT_USER = "Printing command received.\n" + + "\tTo print the whole Academic Calendar, type \n" + + "\tTo print the desired semester only, type a number from 1 to 10, inclusive."; + + private PrintUtils printUtils = new PrintUtils(); + private final ArrayList modulesList; + private Scanner in; + private AcademicCalendarSorter sorter; + + /** + * Default constructor for print calendar command. + * @param currentPerson current user + * @param in PlanNUS ui + */ + public PrintCalenderCommand(Person currentPerson, Scanner in) { + this.modulesList = currentPerson.getModulesList(); + sorter = new AcademicCalendarSorter(modulesList); + this.in = in; + } + + /** + * Execution of print command where user will be prompted of choice for full calendar or semester. + */ + @Override + public void execute() throws AcademicException { + if (modulesList.size() > 0) { + + System.out.println(PROMPT_USER); + String userInput = in.nextLine().trim(); + + if (userInput.equalsIgnoreCase(FULL_PRINT_COMMAND)) { + printFullCalendar(); + } else { + try { + int selectedSemester = Integer.parseInt(userInput); + if (ModuleValidator.isValidSemester(selectedSemester)) { + sortAndPrint(selectedSemester); + } else { + throw new AcademicException(ERROR_INVALID_SEMESTER); + } + } catch (NumberFormatException e) { + throw new AcademicException(ERROR_INVALID_COMMAND); + } + } + } else { + System.out.println(EMPTY_MODULE_LIST); + } + } + + /** + * Prints full academic calendar. + */ + private void printFullCalendar() { + ArrayList sortedBySem = new ArrayList<>(modulesList); + sortedBySem.sort(Comparator.comparing(PartialModule::getSemesterIndex)); + printUtils.printFullCalendar(sortedBySem); + } + + /** + * Sorts and prints the semester's module. + * + * @param selectedSemester semester to print + */ + private void sortAndPrint(int selectedSemester) { + ArrayList sortedList = sorter.sortBySemester(selectedSemester); + printUtils.printBySemester(sortedList, selectedSemester); + } } diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/PrintHelpCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/PrintHelpCommand.java new file mode 100644 index 0000000000..090c28e177 --- /dev/null +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/PrintHelpCommand.java @@ -0,0 +1,28 @@ +package seedu.duke.apps.academicplanner.commands; + +import seedu.duke.globalcommons.Command; + +/** + * Class representing a print help command from the academic planner. + */ +public class PrintHelpCommand extends Command { + + private static final String COMMANDS_LIST = "Available commands are:\n" + + "\tadd \n" + + "\tedit \n" + + "\tremove \n" + + "\tview\n" + + "\thelp\n" + + "\texit"; + + public PrintHelpCommand() { + //Constructor is intentionally left blank + } + + /** + * Prints commands list for academic planner. + */ + public void execute() { + System.out.println(COMMANDS_LIST); + } +} diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java index 2ce4e87a98..5c3ca56222 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java @@ -14,13 +14,12 @@ * Class representing an remove module command from the academic planner. */ public class RemoveModuleCommand extends Command { - private static final String EXITING_CURRENT_COMMAND = "Exiting current command back to Academic Planner Main Menu."; private static final String ERROR_INVALID_COMMAND = "INVALID COMMAND"; private static final String ERROR_NOT_ADDED = "You have not added this module into your list yet"; private RemoveUtils removeUtils; private ModuleValidator moduleValidator; - private HashMap modulesAddedMap; + private HashMap modulesAddedMap; private String moduleCode; public RemoveModuleCommand(ModuleLoader allModules, Person currentPerson, Scanner in, String moduleCode) { @@ -35,17 +34,15 @@ public RemoveModuleCommand(ModuleLoader allModules, Person currentPerson, Scanne * else prompts user of error. */ @Override - public void execute() { + public void execute() throws AcademicException { try { if (moduleValidator.isModTakenByUser(moduleCode)) { - modulesAddedMap.remove(moduleCode); removeUtils.removeModuleFromUserModuleList(moduleCode); } else { throw new AcademicException(ERROR_NOT_ADDED); } } catch (Exception e) { - System.out.println(ERROR_INVALID_COMMAND); - System.out.println(EXITING_CURRENT_COMMAND); + throw new AcademicException(ERROR_INVALID_COMMAND); } } } diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorter.java b/src/main/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorter.java new file mode 100644 index 0000000000..393f6d8300 --- /dev/null +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorter.java @@ -0,0 +1,47 @@ +package seedu.duke.apps.academicplanner.commons; + +import seedu.duke.objects.PartialModule; +import java.util.ArrayList; + +/** + * Class representing sorter for academic calendar. + */ +public class AcademicCalendarSorter { + private static final String ERROR_EMPTY_CALENDAR = "Your academic calendar is empty."; + private ArrayList userModuleList; + + public AcademicCalendarSorter(ArrayList moduleList) { + userModuleList = moduleList; + } + + /** + * Sorts module list by semester index and return module list of chosen semester. + * + * @param semesterIndex semesterIndex to search for + * @return module list of the chosen semester + */ + public ArrayList sortBySemester(int semesterIndex) { + + if (userModuleList.size() < 1) { + System.out.println(ERROR_EMPTY_CALENDAR); + } + ArrayList sortedList = processCalendar(semesterIndex); + return sortedList; + } + + /** + * Collects modules which are from a given semester into an arraylist and returns it. + * + * @param semesterIndex semester to sort by + * @return sortedList + */ + private ArrayList processCalendar(int semesterIndex) { + ArrayList sortedList = new ArrayList<>(); + for (PartialModule m : userModuleList) { + if (m.getSemesterIndex() == semesterIndex) { + sortedList.add(m); + } + } + return sortedList; + } +} diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java index 522e1f823f..a1cf164898 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java @@ -15,9 +15,15 @@ public class AddUtils { private final ModuleLoader allModules; private final ArrayList modulesList; - private final HashMap modulesAddedMap; + private final HashMap modulesAddedMap; private final CalculatorUtils calculatorUtils; + /** + * Default constructor for AddUtils. + * + * @param allModules all modules offered by NUS + * @param currentPerson current User + */ public AddUtils(ModuleLoader allModules, Person currentPerson) { this.allModules = allModules; this.modulesList = currentPerson.getModulesList(); @@ -34,13 +40,26 @@ public AddUtils(ModuleLoader allModules, Person currentPerson) { * @param gradeValue grade achieved for module * @param moduleCredit module's credit weightage */ - public void addModuleToUser(String moduleCode, int semesterValue, String gradeValue, int moduleCredit) { + public void addModuleToUser(String moduleCode, int semesterValue, + String gradeValue, int moduleCredit, int... from) { PartialModule newModuleToAdd = new PartialModule(moduleCode, semesterValue, gradeValue, moduleCredit); - modulesList.add(newModuleToAdd); - modulesAddedMap.put(moduleCode, newModuleToAdd); + populate(moduleCode, newModuleToAdd); calculatorUtils.updateCap(FROM_ADD, newModuleToAdd); - System.out.println(newModuleToAdd.getModuleCode() - + " added into Semester " + semesterValue + "."); + if (from.length == 0) { + System.out.println(newModuleToAdd.getModuleCode() + + " added into Semester " + semesterValue + "."); + } + } + + /** + * Populates the user's arraylist and hashmap with the new module. + * + * @param moduleCode module code to be entered + * @param newModuleToAdd module object to be added + */ + private void populate(String moduleCode, PartialModule newModuleToAdd) { + modulesList.add(newModuleToAdd); + modulesAddedMap.put(moduleCode, modulesList.size() - 1); } /** diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java index 3411dd7a17..ffe64dfa2a 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java @@ -15,10 +15,16 @@ public class EditUtils { private final ArrayList modulesList; - private final HashMap modulesAddedMap; + private final HashMap modulesAddedMap; private final ModuleValidator modChecker; private final CalculatorUtils calculatorUtils; + /** + * Default constructor for EditUtils. + * + * @param allModules all modules offered by NUS + * @param currentPerson current User + */ public EditUtils(ModuleLoader allModules, Person currentPerson) { this.modulesList = currentPerson.getModulesList(); this.modulesAddedMap = currentPerson.getModulesAddedMap(); @@ -54,7 +60,6 @@ public void editModuleGrade(Scanner in, String moduleCode) throws AcademicExcept throw new AcademicException(ERROR_INVALID_GRADE); } - System.out.println(moduleCode); updateModuleGrade(moduleCode, gradeValue); System.out.println("Grade for " + moduleCode + " successfully updated!"); } @@ -66,17 +71,14 @@ public void editModuleGrade(Scanner in, String moduleCode) throws AcademicExcept * @param gradeValue grade to edit to */ public void updateModuleGrade(String moduleCode, String gradeValue) { - for (PartialModule module : modulesList) { - if (module.getModuleCode().equals(moduleCode)) { - updateCurrentModuleGrade(gradeValue, module); - break; - } - } - modulesAddedMap.get(moduleCode).setGrade(gradeValue); + Integer moduleIndex = modulesAddedMap.get(moduleCode); + PartialModule module = modulesList.get(moduleIndex); + updateCurrentModuleGrade(gradeValue, module); } /** * Updates module to reflect the new grade. + * * @param gradeValue new grade value to reflect * @param module module to edit */ @@ -100,12 +102,11 @@ public void editModuleSemester(Scanner in, String moduleCode) throws AcademicExc System.out.println(VALID_SEMESTERS); String newValue = in.nextLine().trim(); - if (!modChecker.isValidSemester(Integer.parseInt(newValue))) { + if (!ModuleValidator.isValidSemester(Integer.parseInt(newValue))) { throw new AcademicException(ERROR_INVALID_SEMESTER_INDEX); } updateModuleSemester(moduleCode, newValue); - modulesAddedMap.get(moduleCode).setSemesterIndex(Integer.parseInt(newValue)); System.out.println("Semester for " + moduleCode + " successfully updated!"); } @@ -116,11 +117,9 @@ public void editModuleSemester(Scanner in, String moduleCode) throws AcademicExc * @param newValue new semester index */ public void updateModuleSemester(String moduleCode, String newValue) { - for (PartialModule item : modulesList) { - if (item.getModuleCode().equals(moduleCode)) { - item.setSemesterIndex(Integer.parseInt(newValue)); - break; - } - } + Integer moduleIndex = modulesAddedMap.get(moduleCode); + PartialModule item = modulesList.get(moduleIndex); + item.setSemesterIndex(Integer.parseInt(newValue)); + assert item.getSemesterIndex() == Integer.parseInt(newValue); } } diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java b/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java index b919829b7f..5aa1b1bb01 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java @@ -1,9 +1,7 @@ package seedu.duke.apps.academicplanner.commons; import seedu.duke.apps.moduleloader.ModuleLoader; -import seedu.duke.objects.PartialModule; import seedu.duke.objects.Person; -import java.util.ArrayList; import java.util.HashMap; public class ModuleValidator { @@ -11,12 +9,16 @@ public class ModuleValidator { private static final int FINAL_SEMESTER_INDEX = 10; private final ModuleLoader allModules; - private final ArrayList modulesList; - private final HashMap modulesAddedMap; + private final HashMap modulesAddedMap; + /** + * Default constructor for EditUtils. + * + * @param allModules all modules offered by NUS + * @param currentPerson current User + */ public ModuleValidator(ModuleLoader allModules, Person currentPerson) { this.allModules = allModules; - this.modulesList = currentPerson.getModulesList(); this.modulesAddedMap = currentPerson.getModulesAddedMap(); } @@ -49,7 +51,7 @@ public boolean isModTakenByUser(String moduleCode) { * @param semesterIndex semesterIndex to check * @return false */ - public boolean isValidSemester(int semesterIndex) { + public static boolean isValidSemester(int semesterIndex) { return (semesterIndex >= STARTING_SEMESTER_INDEX && semesterIndex <= FINAL_SEMESTER_INDEX); } diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java new file mode 100644 index 0000000000..e608dd3bb6 --- /dev/null +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java @@ -0,0 +1,76 @@ +package seedu.duke.apps.academicplanner.commons; + +import seedu.duke.objects.PartialModule; +import java.util.ArrayList; + +/** + * Class representing the common print methods. + */ +public class PrintUtils { + private static final String INDENT = " "; + private static final String ERROR_NO_MODULES = "You have no modules added in the semester you requested!"; + + public PrintUtils() { + //Constructor is intentionally left blank + } + + /** + * Prints out the sorted list of modules. + * + * @param sortedList list to be printed + * @param selectedSemester semester chosen. + */ + public void printBySemester(ArrayList sortedList, int selectedSemester) { + if (sortedList.size() < 1) { + System.out.println(ERROR_NO_MODULES); + } + + System.out.println(INDENT + "SEMESTER " + selectedSemester); + for (PartialModule item : sortedList) { + printCalendarLine(item); + } + } + + /** + * Prints a single entry of item. + * + * @param item module details to be printed + */ + private void printCalendarLine(PartialModule item) { + int spacing = 8 + (8 - item.getModuleCode().length()); + System.out.println(item.getModuleCode() + + printSpace(spacing) + + item.getGrade()); + } + + /** + * Prints out contents of the Array list of partial modules in an intuitive format. + * + * @param sortedBySem arraylist of modules + */ + public void printFullCalendar(ArrayList sortedBySem) { + int newSem; + int currentSem = 0; + for (PartialModule item : sortedBySem) { + newSem = item.getSemesterIndex(); + if (newSem != currentSem) { + currentSem = newSem; + System.out.println(INDENT + "SEMESTER " + currentSem); + } + printCalendarLine(item); + } + } + + /** + * Prints num spaces for indentation. + * @param num int of spaces to print + * @return string of spaces + */ + private String printSpace(int num) { + String space = ""; + for (int i = 0; i < num; i++) { + space += " "; + } + return space; + } +} diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java index 3a958ad41c..2dc932ba8c 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java @@ -4,6 +4,7 @@ import seedu.duke.objects.PartialModule; import seedu.duke.objects.Person; import java.util.ArrayList; +import java.util.Map; /** * Class representing remove module utilities from the remove module command. @@ -12,11 +13,18 @@ public class RemoveUtils { private static final int FROM_REMOVE = 3; private final ArrayList modulesList; + private final Map modulesAddedMap; private final CalculatorUtils calculatorUtils; + /** + * Default constructor for RemoveUtils. + * + * @param currentPerson current user + */ public RemoveUtils(Person currentPerson) { this.modulesList = currentPerson.getModulesList(); this.calculatorUtils = new CalculatorUtils(currentPerson); + this.modulesAddedMap = currentPerson.getModulesAddedMap(); } /** @@ -26,13 +34,25 @@ public RemoveUtils(Person currentPerson) { * @param moduleCode module to remove. */ public void removeModuleFromUserModuleList(String moduleCode) { - for (PartialModule item : modulesList) { - if (item.getModuleCode().equals(moduleCode)) { - System.out.println(item.getModuleCode() + " has been removed from the list"); - calculatorUtils.updateCap(FROM_REMOVE, item); - modulesList.remove(item); - return; - } - } + final int totalNumberOfModules = modulesList.size(); + + Integer moduleIndex = modulesAddedMap.get(moduleCode); + PartialModule module = modulesList.get(moduleIndex); + + calculatorUtils.updateCap(FROM_REMOVE, module); + depopulate(moduleCode, module); + + assert modulesList.size() == totalNumberOfModules - 1; + } + + /** + * Removes module from both arraylist and hashmap of the user. + * + * @param moduleCode module code to remove + * @param module module object to remove + */ + private void depopulate(String moduleCode, PartialModule module) { + modulesList.remove(module); + modulesAddedMap.remove(moduleCode); } } diff --git a/src/main/java/seedu/duke/apps/academicplanner/exceptions/AcademicException.java b/src/main/java/seedu/duke/apps/academicplanner/exceptions/AcademicException.java index c01be6a731..6fb5c1b9ad 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/exceptions/AcademicException.java +++ b/src/main/java/seedu/duke/apps/academicplanner/exceptions/AcademicException.java @@ -9,6 +9,11 @@ public class AcademicException extends Exception { private static final String NEW_LINE = "\n"; private static final String EXITING_CURRENT_COMMAND = "Exiting current command back to Academic Planner Main Menu."; + /** + * Default constructor for Academic Exception. + * + * @param errorMessage accompanying message + */ public AcademicException(String errorMessage) { String stringToPrint = errorMessage + NEW_LINE + EXITING_CURRENT_COMMAND; this.errorMessage = stringToPrint; diff --git a/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorApp.java b/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorApp.java index 244317a7c2..d8ddb70513 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorApp.java +++ b/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorApp.java @@ -17,10 +17,11 @@ public class CapCalculatorApp extends App { private static final String AWAIT_COMMAND = "Type a command to continue..."; private static final String EXIT_MESSAGE = "Thank you for using Cap Calculator!"; - private static final String WELCOME_MESSAGE = "Welcome to CAP Calculator! Commands available are:\n" + private static final String WELCOME_MESSAGE = "Welcome to CAP Calculator!\nAvailable commands are:\n" + "\tcurrent\n" + "\tset target\n" - + "\tTo exit CAP Calculator, use command: \"exit\"\n\n" + + "\tset su\n" + + "\texit\n" + "\tInitializing your CAP..."; private final Person currentPerson; diff --git a/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorParser.java b/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorParser.java index 329a39a883..e61523e282 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorParser.java +++ b/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorParser.java @@ -7,6 +7,8 @@ import seedu.duke.objects.Person; import seedu.duke.ui.Ui; +import java.util.Scanner; + /** * Class representing the parser used in the CAP Calculator app. */ @@ -18,6 +20,7 @@ public class CapCalculatorParser { public static final String INVALID_COMMAND_MESSAGE = "OOPS!!! I'm sorry, but I don't know what that means :-("; private static final String CURRENT_COMMAND = "current"; private static final String SET_TARGET_COMMAND = "set target"; + private static final String SET_SU_COMMAND = "set su"; private static final String EXIT_COMMAND = "exit"; /** @@ -30,14 +33,17 @@ public class CapCalculatorParser { * @throws CommandParserException thrown when an invalid command is entered */ public static Command parse(String userInput, Person currentPerson, Ui ui) throws CommandParserException { + Scanner in = ui.getScanner(); userInput = userInput.trim().toLowerCase(); if (userInput.equals(CURRENT_COMMAND)) { return new CurrentCommand(currentPerson); } else if (userInput.equals(SET_TARGET_COMMAND)) { - return new SetTargetCommand(currentPerson, ui); + return new SetTargetCommand(currentPerson, in); } else if (userInput.equals(EXIT_COMMAND)) { return new Command(true); + } else if (userInput.equals((SET_SU_COMMAND))) { + return SetSuParser.parse(currentPerson, in); } else { throw new CommandParserException(INVALID_COMMAND_MESSAGE); } diff --git a/src/main/java/seedu/duke/apps/capcalculator/SetSuParser.java b/src/main/java/seedu/duke/apps/capcalculator/SetSuParser.java new file mode 100644 index 0000000000..bad0c72062 --- /dev/null +++ b/src/main/java/seedu/duke/apps/capcalculator/SetSuParser.java @@ -0,0 +1,46 @@ +package seedu.duke.apps.capcalculator; + +import seedu.duke.apps.capcalculator.commands.SetSuByModuleCommand; +import seedu.duke.apps.capcalculator.commands.SetSuBySemesterCommand; +import seedu.duke.exceptions.CommandParserException; +import seedu.duke.globalcommons.Command; +import seedu.duke.objects.Person; +import seedu.duke.ui.Ui; + +import java.util.Scanner; + +/** + * Class representing the parser used for set su command. + */ +public class SetSuParser { + + private static final String BY_MODULES = "2"; + private static final String BY_SEMESTER = "1"; + private static final String PROMPT_SU_CHOICES = "Enter the number corresponding to the method you wish to S/U:\n" + + "\t1) Semester\n" + + "\t2) Modules"; + private static final String INVALID_SU_ERROR = "Number entered does not correspond to any S/U method."; + + /** + * Processes user input command and returns which set su command to be parsed. + * + * @param currentPerson user of PlanNUS + * @return Command to be executed + * @throws CommandParserException thrown when an invalid input is entered + */ + public static Command parse(Person currentPerson, Scanner in) throws CommandParserException { + promptUserForSuCommand(); + String choice = in.nextLine().trim(); + if (choice.equals(BY_SEMESTER)) { + return new SetSuBySemesterCommand(currentPerson, in); + } else if (choice.equals(BY_MODULES)) { + return new SetSuByModuleCommand(currentPerson, in); + } else { + throw new CommandParserException(INVALID_SU_ERROR); + } + } + + private static void promptUserForSuCommand() { + System.out.println(PROMPT_SU_CHOICES); + } +} diff --git a/src/main/java/seedu/duke/apps/capcalculator/commands/CurrentCommand.java b/src/main/java/seedu/duke/apps/capcalculator/commands/CurrentCommand.java index ee578390a0..042e39ed59 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commands/CurrentCommand.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commands/CurrentCommand.java @@ -20,8 +20,18 @@ public CurrentCommand(Person currentPerson) { */ @Override public void execute() { - double currentCap = currentPerson.getCurrentTotalMcxGrade() / (double) currentPerson.getCurrentMcAfterSU(); + double currentCap = getCurrentCap(); System.out.println("Your current now CAP is: " + formatCapToString(currentCap)); System.out.println("Number of graded MCs taken is: " + currentPerson.getCurrentMcAfterSU()); + System.out.println("Total number of MCs taken is: " + currentPerson.getCurrentMc()); + } + + /** + * Returns user current cap. + * + * @return CAP + */ + public double getCurrentCap() { + return currentPerson.getCurrentTotalMcxGrade() / (double) currentPerson.getCurrentMcAfterSU(); } } diff --git a/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuByModuleCommand.java b/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuByModuleCommand.java new file mode 100644 index 0000000000..62e196cea4 --- /dev/null +++ b/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuByModuleCommand.java @@ -0,0 +1,38 @@ +package seedu.duke.apps.capcalculator.commands; + +import seedu.duke.apps.capcalculator.commons.SetSuUtils; +import seedu.duke.apps.capcalculator.exceptions.CapCalculatorException; +import seedu.duke.globalcommons.Command; +import seedu.duke.objects.PartialModule; +import seedu.duke.objects.Person; + +import java.util.ArrayList; +import java.util.Scanner; + +/** + * Class representing the set S/U by modules command for CAP Calculator. + */ +public class SetSuByModuleCommand extends Command { + + private SetSuUtils setSuUtils; + private ArrayList suList; + + public SetSuByModuleCommand(Person currentPerson, Scanner in) { + this.setSuUtils = new SetSuUtils(currentPerson, in); + } + + /** + * Function to calculate the best CAP after S/Uing some specific modules. + */ + @Override + public void execute() { + try { + int numberOfModulesToSu = setSuUtils.promptUserForNumberOfModules(); + suList = setSuUtils.getSuListByModule(numberOfModulesToSu); + setSuUtils.showSuListToUser(suList); + setSuUtils.showResultsToUser(suList); + } catch (CapCalculatorException e) { + System.out.println(e.getMessage()); + } + } +} diff --git a/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuBySemesterCommand.java b/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuBySemesterCommand.java new file mode 100644 index 0000000000..104d60671d --- /dev/null +++ b/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuBySemesterCommand.java @@ -0,0 +1,42 @@ +package seedu.duke.apps.capcalculator.commands; + +import seedu.duke.apps.capcalculator.commons.SetSuUtils; +import seedu.duke.apps.capcalculator.exceptions.CapCalculatorException; +import seedu.duke.globalcommons.Command; +import seedu.duke.objects.PartialModule; +import seedu.duke.objects.Person; + +import java.util.ArrayList; +import java.util.Scanner; + +/** + * Class representing the set S/U by semester command for CAP Calculator. + */ +public class SetSuBySemesterCommand extends Command { + + private Person currentPerson; + private Scanner in; + private SetSuUtils setSuUtils; + private ArrayList suList; + + public SetSuBySemesterCommand(Person currentPerson, Scanner in) { + this.currentPerson = currentPerson; + this.in = in; + this.setSuUtils = new SetSuUtils(currentPerson, in); + } + + /** + * Function to calculate the best CAP after S/Uing a specific semester. + */ + @Override + public void execute() { + try { + int semesterToSu = setSuUtils.promptUserForSemester(); + suList = setSuUtils.getSuListBySemester(semesterToSu); + setSuUtils.showSuListToUser(suList); + setSuUtils.showResultsToUser(suList); + } catch (CapCalculatorException e) { + System.out.println(e.getMessage()); + } + } +} diff --git a/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java b/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java index 8c45f34e65..78815dabec 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java @@ -1,25 +1,35 @@ package seedu.duke.apps.capcalculator.commands; -import seedu.duke.exceptions.InvalidCapException; -import seedu.duke.exceptions.InvalidCreditException; +import seedu.duke.apps.capcalculator.exceptions.InvalidCapException; +import seedu.duke.apps.capcalculator.exceptions.InvalidCreditException; import seedu.duke.globalcommons.Command; +import seedu.duke.globalcommons.LoggingTool; import seedu.duke.objects.Person; import seedu.duke.ui.Ui; import seedu.duke.apps.capcalculator.commons.SetTargetUtils; +import java.util.Scanner; +import java.io.IOException; +import java.util.logging.FileHandler; +import java.util.logging.Level; +import java.util.logging.Logger; + /** * Class representing the Set target CAP command for CAP Calculator. */ public class SetTargetCommand extends Command { + private static final double MAXIMUM_CAP = 5.00; + private static final String LOG_FILE_NAME = "SetTargetCommand.log"; + private static final String LOGGER_NAME = "SetTargetCommand"; + private static Logger logger; + private static FileHandler fh; private Person currentPerson; private Ui ui; private SetTargetUtils setTargetUtils; - public SetTargetCommand(Person currentPerson, Ui ui) { - this.currentPerson = currentPerson; - this.ui = ui; - this.setTargetUtils = new SetTargetUtils(currentPerson, ui); + public SetTargetCommand(Person currentPerson, Scanner in) { + this.setTargetUtils = new SetTargetUtils(currentPerson, in); } /** @@ -28,12 +38,25 @@ public SetTargetCommand(Person currentPerson, Ui ui) { @Override public void execute() { try { + fh = new FileHandler(LOG_FILE_NAME); + logger = new LoggingTool(LOGGER_NAME,fh).initialize(); + logger.log(Level.INFO,"Executing set target command."); double targetCap = setTargetUtils.getTargetCap(); int targetMCs = setTargetUtils.getTargetGradedMC(); + assert targetCap <= MAXIMUM_CAP; + assert targetMCs > 0; setTargetUtils.showResultsToUser(targetCap, targetMCs); + logger.log(Level.INFO,"Finish executing set target command."); + fh.close(); } catch (InvalidCapException e) { + logger.log(Level.WARNING,"Cap entered is more than 5.00."); + fh.close(); System.out.println(e.getMessage()); } catch (InvalidCreditException e) { + logger.log(Level.WARNING,"MC entered is less than 0."); + fh.close(); + System.out.println(e.getMessage()); + } catch (IOException e) { System.out.println(e.getMessage()); } } diff --git a/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java b/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java index 604e3d7bb6..12a932e848 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java @@ -150,12 +150,14 @@ private void editCapSuToNonSu(PartialModule currentModule, double cap) { */ private void updateCapFromAdd(PartialModule currentModule) { //Incrementing total MC regardless of SU - int moduleCredit = currentModule.getModuleCredit(); - currentPerson.setCurrentMc(currentPerson.getCurrentMc() + moduleCredit); + if (currentModule.getCap() != -2.00) { + int moduleCredit = currentModule.getModuleCredit(); + currentPerson.setCurrentMc(currentPerson.getCurrentMc() + moduleCredit); - //Incrementing total MC after SU only if module is not SU - if (currentModule.getCap() != -1.00) { - editCapSuToNonSu(currentModule, currentModule.getCap()); + //Incrementing total MC after SU only if module is not SU + if (currentModule.getCap() != -1.00) { + editCapSuToNonSu(currentModule, currentModule.getCap()); + } } } diff --git a/src/main/java/seedu/duke/apps/capcalculator/commons/SetSuUtils.java b/src/main/java/seedu/duke/apps/capcalculator/commons/SetSuUtils.java new file mode 100644 index 0000000000..1d68794708 --- /dev/null +++ b/src/main/java/seedu/duke/apps/capcalculator/commons/SetSuUtils.java @@ -0,0 +1,325 @@ +package seedu.duke.apps.capcalculator.commons; + +import seedu.duke.apps.capcalculator.exceptions.CapCalculatorException; +import seedu.duke.objects.PartialModule; +import seedu.duke.objects.Person; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Scanner; + +import static java.util.stream.Collectors.toList; +import static seedu.duke.apps.capcalculator.commons.CalculatorUtils.formatCapToString; + +/** + * Class representing common functions for the set S/U commands. + */ +public class SetSuUtils { + private static final String VALID_SEMESTERS = "Valid semesters are integers from 1 to 10, inclusive."; + private static final String PROMPT_SU_SEMESTER_VALUE = "Please enter a semester you wish to S/U."; + private static final String SU_SUGGESTION_PROMPT = "The modules you should be S/Uing are:"; + private static final String NO_SUGGESTION_PROMPT = "Looks like you do not have to S/U any modules!"; + private static final String PROMPT_MODULE_VALUE = "Please enter how many modules you wish to S/U."; + private static final String INVALID_SEMESTER_ERROR = "Looks like the semester you entered is not valid!"; + private static final String INVALID_NUMBER_ERROR = "Looks like the number of modules you entered is not valid!"; + private static final String INVALID_MODULE_ERROR = "Looks like the module you entered is not a valid module!"; + private static final String NUMBER_OUT_OF_BOUND_ERROR = "Looks like the number you entered " + + "is more than the numbers of modules you took."; + private static final String EMPTY_LIST_ERROR = "Your S/U list is empty!"; + private static final String DUPLICATE_MODULE_ERROR = "Looks like you have already added this module!"; + private static final int STARTING_SEMESTER_INDEX = 1; + private static final int FINAL_SEMESTER_INDEX = 10; + private static final int DISPLAY_PREFIX = 1; + + private Person currentPerson; + private Scanner in; + private CalculatorUtils calculatorutils; + + /** + * Instantiates a new Set su utils. + * + * @param currentPerson the current person + * @param in scanner for user inputs + */ + public SetSuUtils(Person currentPerson, Scanner in) { + this.currentPerson = currentPerson; + this.in = in; + this.calculatorutils = new CalculatorUtils(currentPerson); + } + + /** + * Prints prompt and help messages for user to enter module's grade. + * + * @return the semester entered by user + * @throws CapCalculatorException if the semester entered is not valid + */ + public int promptUserForSemester() throws CapCalculatorException { + try { + System.out.println(PROMPT_SU_SEMESTER_VALUE); + System.out.println(VALID_SEMESTERS); + int semester = Integer.parseInt(in.nextLine().trim()); + if (isValidSemester(semester)) { + return semester; + } else { + throw new CapCalculatorException(INVALID_SEMESTER_ERROR); + } + } catch (NumberFormatException e) { + throw new CapCalculatorException(INVALID_SEMESTER_ERROR); + } + } + + private boolean isValidSemester(int semester) { + return (semester >= STARTING_SEMESTER_INDEX && semester <= FINAL_SEMESTER_INDEX); + } + + /** + * Prompt user to enter number of modules. + * + * @return number of modules entered by user + * @throws CapCalculatorException if the number entered is not valid + */ + public int promptUserForNumberOfModules() throws CapCalculatorException { + try { + System.out.println(PROMPT_MODULE_VALUE); + int numberOfModules = Integer.parseInt(in.nextLine().trim()); + if (isValidNumber(numberOfModules)) { + return numberOfModules; + } + throw new CapCalculatorException(NUMBER_OUT_OF_BOUND_ERROR); + } catch (NumberFormatException e) { + throw new CapCalculatorException(INVALID_NUMBER_ERROR); + } + } + + /** + * Returns a sorted S/U list by semester. + * + * @param semesterToSu the semester to S/U + * @return the S/U list by semester + * @throws CapCalculatorException if the S/U list is empty + */ + public ArrayList getSuListBySemester(int semesterToSu) throws CapCalculatorException { + ArrayList suList = (ArrayList) currentPerson.getModulesList().stream() + .filter((partialModule) -> partialModule.getSemesterIndex() == semesterToSu) + .filter(this::isValidSuModule) + .collect(toList()); + if (isEmptyList(suList)) { + throw new CapCalculatorException(EMPTY_LIST_ERROR); + } else { + suList.sort(Comparator.comparing(PartialModule::getCap)); + return suList; + } + } + + /** + * Given a S/U list, show results to user. + * + * @param suList the S/U list + */ + public void showResultsToUser(ArrayList suList) { + double currentCap = currentPerson.getCurrentTotalMcxGrade() / (double)currentPerson.getCurrentMcAfterSU(); + int currentGradedMCs = currentPerson.getCurrentMcAfterSU(); + showInitialCapToUser(currentCap, currentGradedMCs); + showCapAfterEachSu(suList, currentCap, currentPerson.getCurrentTotalMcxGrade(), currentGradedMCs); + } + + /** + * Display cap after each su. + * + * @param suList the S/U list + * @param currentCap the current cap + * @param totalMcxGrade the total MC multiply by the grade + * @param currentGradedMCs the current graded m cs + */ + public void showCapAfterEachSu(ArrayList suList, double currentCap, + double totalMcxGrade, int currentGradedMCs) { + double bestCap = currentCap; + int bestGradedMCs = currentGradedMCs; + int numberOfModulesToSU = 0; + + for (PartialModule module : suList) { + totalMcxGrade -= module.getCap() * module.getModuleCredit(); + currentGradedMCs -= module.getModuleCredit(); + System.out.println("S/U your module of " + module.getModuleCode() + " with grade " + module.getGrade() + + " will give you a CAP of: " + formatCapToString(totalMcxGrade / (double)currentGradedMCs)); + System.out.println("Your graded MCs after S/Uing this module is: " + currentGradedMCs); + if (bestCap < (totalMcxGrade / (double)currentGradedMCs)) { + bestCap = totalMcxGrade / (double)currentGradedMCs; + bestGradedMCs = currentGradedMCs; + numberOfModulesToSU++; + } + } + showBestResultsForSu(bestCap, bestGradedMCs); + showSuggestedSuOptions(suList, numberOfModulesToSU); + } + + /** + * Display the suggested S/U options. + * + * @param suList the S/U list + * @param numberOfModulesToSU the number of modules to S/U + */ + public void showSuggestedSuOptions(ArrayList suList, int numberOfModulesToSU) { + if (numberOfModulesToSU > 0) { + System.out.println(SU_SUGGESTION_PROMPT); + for (int i = 0; i < numberOfModulesToSU; i++) { + PartialModule moduleToSu = suList.get(i); + System.out.println(moduleToSu.getModuleCode() + " with grade " + moduleToSu.getGrade() + + " and modular credit of " + moduleToSu.getModuleCredit() + "."); + } + } else { + System.out.println(NO_SUGGESTION_PROMPT); + } + } + + /** + * Display best results after S/Uing. + * + * @param bestCap the best cap + * @param bestGradedMCs the best graded MCs + */ + public void showBestResultsForSu(double bestCap, int bestGradedMCs) { + System.out.println("Your highest CAP possible is: " + formatCapToString(bestCap) + + " with a graded MC of " + bestGradedMCs); + } + + /** + * Display initial cap to user. + * + * @param currentCap the current cap + * @param currentGradedMCs the current graded MCs + */ + public void showInitialCapToUser(double currentCap, int currentGradedMCs) { + System.out.println("Your CAP without S/U any module is: " + formatCapToString(currentCap)); + System.out.println("Your graded MCs without S/U any module is: " + currentGradedMCs); + } + + /** + * Display the S/U list to user. + * + * @param suList the S/U list + */ + public void showSuListToUser(ArrayList suList) { + System.out.println("Modules in your current S/U list: "); + for (PartialModule modules : suList) { + System.out.println(" " + modules.getModuleCode() + " " + modules.getGrade()); + } + } + + /** + * Main function to obtain the S/U list given some module codes. + * Returns the S/U list. + * + * @param numberOfModulesToSu number entered by user + * @return the S/U list + * @throws CapCalculatorException if the module is not valid + */ + public ArrayList getSuListByModule(int numberOfModulesToSu) throws CapCalculatorException { + ArrayList filteredList = (ArrayList) currentPerson.getModulesList().stream() + .filter(this::isValidSuModule) + .collect(toList()); + + ArrayList suList = new ArrayList<>(); + + for (int i = 0; i < numberOfModulesToSu; i++) { + promptUserForModuleCode(i + DISPLAY_PREFIX); + String moduleCode = in.nextLine().trim(); + PartialModule moduleToSu = getSuModule(filteredList,moduleCode); + addModuleToSuList(suList, moduleToSu); + } + suList.sort(Comparator.comparing(PartialModule::getCap)); + return suList; + } + + /** + * Add the module to be S/Ued into the list. + * + * @param suList the list of modules to be S/Ued + * @param moduleToSu the module to be added into the list + * @throws CapCalculatorException if the module is already in the list + */ + private void addModuleToSuList(ArrayList suList, + PartialModule moduleToSu) throws CapCalculatorException { + if (suList.contains(moduleToSu)) { + throw new CapCalculatorException(DUPLICATE_MODULE_ERROR); + } + suList.add(moduleToSu); + } + + /** + * Returns the module that the user want to S/U given the module code. + * + * @param filteredList the list of valid modules to S/U + * @param moduleCode the target module that user want to S/U + * @return the module to be S/Ued + * @throws CapCalculatorException if there is no valid module found + */ + private PartialModule getSuModule(ArrayList filteredList, + String moduleCode) throws CapCalculatorException { + for (PartialModule module : filteredList) { + if (module.getModuleCode().equalsIgnoreCase(moduleCode)) { + return module; + } + } + throw new CapCalculatorException(INVALID_MODULE_ERROR); + } + + /** + * Print prompt for user to enter the module code to S/U. + * + * @param displayIndex index to be displayed ot user + */ + private void promptUserForModuleCode(int displayIndex) { + System.out.println("What is your " + getAbbreviations(displayIndex) + "module?"); + } + + /** + * Returns true when the number of modules entered by user is more than zero, + * and less than the total modules taken by user, else return false. + * + * @param numberOfModulesToSu the number entered by user + * @return boolean + */ + private boolean isValidNumber(int numberOfModulesToSu) { + return (numberOfModulesToSu > 0 && numberOfModulesToSu <= currentPerson.getModulesList().size()); + } + + /** + * Returns true when the module is a valid modules to be S/Ued, + * else return false. + * + * @param partialModule the modules to be checked + * @return boolean + */ + private boolean isValidSuModule(PartialModule partialModule) { + return partialModule.getCap() >= 0; + } + + /** + * Returns true if the SU list is empty else false. + * + * @param suList the list of modules to be S/Ued + * @return boolean boolean + */ + public boolean isEmptyList(ArrayList suList) { + return suList.size() == 0; + } + + /** + * Function to return the abbreviation for the number. + * + * @param number number to return the abbreviation for + * @return string + */ + private String getAbbreviations(int number) { + if (number % 10 == 1 & number != 11) { + return number + "st "; + } else if (number % 10 == 2 & number != 12) { + return number + "nd "; + } else if (number % 10 == 3 & number != 13) { + return number + "rd "; + } else { + return number + "th "; + } + } +} diff --git a/src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java b/src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java index 0935b9af25..bc19329f83 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java @@ -1,9 +1,11 @@ package seedu.duke.apps.capcalculator.commons; -import seedu.duke.exceptions.InvalidCapException; -import seedu.duke.exceptions.InvalidCreditException; +import seedu.duke.apps.capcalculator.exceptions.InvalidCapException; +import seedu.duke.apps.capcalculator.exceptions.InvalidCreditException; import seedu.duke.objects.Person; -import seedu.duke.ui.Ui; + +import java.util.Scanner; + import static seedu.duke.apps.capcalculator.commons.CalculatorUtils.MAXIMUM_CAP; import static seedu.duke.apps.capcalculator.commons.CalculatorUtils.formatCapToString; @@ -15,55 +17,62 @@ public class SetTargetUtils { private static final String INVALID_MC_MESSAGE = "Your target MC cannot be 0!"; private Person currentPerson; - private Ui ui; + private Scanner in; - public SetTargetUtils(Person currentPerson, Ui ui) { + public SetTargetUtils(Person currentPerson, Scanner in) { this.currentPerson = currentPerson; - this.ui = ui; + this.in = in; } /** * Obtain the target CAP from the user. + * @throws InvalidCapException if the Cap given is greater than 5.00 or less than 0 */ public double getTargetCap() throws InvalidCapException { System.out.println("What is your target CAP?"); - double targetCap = Double.parseDouble(ui.getScanner().nextLine()); - checkValidCap(targetCap); - return targetCap; + double targetCap = Double.parseDouble(in.nextLine()); + if (isValidCap(targetCap)) { + return targetCap; + } else { + throw new InvalidCapException(INVALID_CAP_MESSAGE); + } } /** * Obtain the target MCs from the user. + * @throws InvalidCreditException if the module credit given less than 0 */ public int getTargetGradedMC() throws InvalidCreditException { System.out.println("How many graded MCs you are taking to achieve the target CAP?"); - int targetGradedMC = Integer.parseInt(ui.getScanner().nextLine()); - checkValidCredits(targetGradedMC); - return targetGradedMC; + int targetGradedMC = Integer.parseInt(in.nextLine()); + if (isValidCredits(targetGradedMC)) { + return targetGradedMC; + } else { + throw new InvalidCreditException(INVALID_MC_MESSAGE); + } } /** * Checks if the target Cap given by the user is valid. + * Returns true when the Cap provided is less than 5.00 and more or equals to 0. + * Returns false otherwise. * * @param cap Cap to be checked - * @throws InvalidCapException if the Cap given is greater than 5.00 or less than 0 + * @return boolean whether Cap is valid */ - private void checkValidCap(double cap) throws InvalidCapException { - if (cap > MAXIMUM_CAP || cap <= 0) { - throw new InvalidCapException(INVALID_CAP_MESSAGE); - } + private boolean isValidCap(double cap) { + return cap > MAXIMUM_CAP && cap <= 0; } /** * Checks if the target Cap given by the user is valid. + * Returns false when the MC provided is less than 0 else false. * - * @param credits Module credits to be checked - * @throws InvalidCreditException if the module credit given less than 0 + * @param credits Module credits to be checked + * @return boolean whether MC is valid */ - private void checkValidCredits(int credits) throws InvalidCreditException { - if (credits <= 0) { - throw new InvalidCreditException(INVALID_MC_MESSAGE); - } + private boolean isValidCredits(int credits) { + return credits > 0; } /** @@ -74,7 +83,7 @@ public void showResultsToUser(double targetCap,int targetGradedMC) { double targetCapxTargetMC = (double) totalMcToTarget * targetCap; double neededCap = (targetCapxTargetMC - currentPerson.getCurrentTotalMcxGrade()) / (double) targetGradedMC; - if (neededCap <= 5) { + if (isValidCap(neededCap)) { printTargetResultPossible(targetCap, targetGradedMC, neededCap); } else { printTargetResultImpossible(targetCap, targetGradedMC); diff --git a/src/main/java/seedu/duke/exceptions/InvalidCapException.java b/src/main/java/seedu/duke/apps/capcalculator/exceptions/InvalidCapException.java similarity index 85% rename from src/main/java/seedu/duke/exceptions/InvalidCapException.java rename to src/main/java/seedu/duke/apps/capcalculator/exceptions/InvalidCapException.java index f1f6b74fcb..7f0f1677ab 100644 --- a/src/main/java/seedu/duke/exceptions/InvalidCapException.java +++ b/src/main/java/seedu/duke/apps/capcalculator/exceptions/InvalidCapException.java @@ -1,4 +1,4 @@ -package seedu.duke.exceptions; +package seedu.duke.apps.capcalculator.exceptions; import seedu.duke.apps.capcalculator.exceptions.CapCalculatorException; diff --git a/src/main/java/seedu/duke/exceptions/InvalidCreditException.java b/src/main/java/seedu/duke/apps/capcalculator/exceptions/InvalidCreditException.java similarity index 85% rename from src/main/java/seedu/duke/exceptions/InvalidCreditException.java rename to src/main/java/seedu/duke/apps/capcalculator/exceptions/InvalidCreditException.java index d953cc8b1c..075c7f7d04 100644 --- a/src/main/java/seedu/duke/exceptions/InvalidCreditException.java +++ b/src/main/java/seedu/duke/apps/capcalculator/exceptions/InvalidCreditException.java @@ -1,4 +1,4 @@ -package seedu.duke.exceptions; +package seedu.duke.apps.capcalculator.exceptions; import seedu.duke.apps.capcalculator.exceptions.CapCalculatorException; diff --git a/src/main/java/seedu/duke/apps/moduleloader/ModuleLoader.java b/src/main/java/seedu/duke/apps/moduleloader/ModuleLoader.java index 6814c25ea2..c2c6cec1f0 100644 --- a/src/main/java/seedu/duke/apps/moduleloader/ModuleLoader.java +++ b/src/main/java/seedu/duke/apps/moduleloader/ModuleLoader.java @@ -2,12 +2,18 @@ import com.google.gson.Gson; import seedu.duke.apps.moduleloader.exceptions.ModuleLoaderException; +import seedu.duke.globalcommons.LoggingTool; import seedu.duke.objects.FullModule; + +import java.io.IOException; import java.io.InputStream; import java.io.Reader; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map; +import java.util.logging.FileHandler; +import java.util.logging.Level; +import java.util.logging.Logger; /** * Class representing function to load all modules offered by NUS. @@ -18,15 +24,21 @@ public class ModuleLoader { public static final String MISSING_MODULE_DATA = "Data for Modules not found!"; public static final String TERMINATION = "Terminating program..."; public static final String CORRUPTED_MODULE_DATA = "Data for Modules corrupted!"; + public static final String LOG_FILE_NAME = "ModuleLoader.log"; + public static final String LOGGER_NAME = "ModuleLoader"; private Map moduleMap; private FullModule[] moduleFullDetails; + private static Logger logger; + private static FileHandler fh; /** * Default constructor for to load all modules from JSON file. */ public ModuleLoader() throws ModuleLoaderException { try { + fh = new FileHandler(LOG_FILE_NAME); + logger = new LoggingTool(LOGGER_NAME,fh).initialize(); moduleMap = new HashMap<>(); Gson gson = new Gson(); @@ -34,15 +46,23 @@ public ModuleLoader() throws ModuleLoaderException { Reader jsonReader = new InputStreamReader(in); moduleFullDetails = gson.fromJson(jsonReader, FullModule[].class); - for (int i = 0; i < moduleFullDetails.length; i++) { - moduleMap.put(moduleFullDetails[i].getModuleCode(), i); + for (int index = 0; index < moduleFullDetails.length; index++) { + moduleMap.put(moduleFullDetails[index].getModuleCode(), index); } if (moduleFullDetails.length != TOTAL_NUMBER_OF_MODULES) { throw new ModuleLoaderException(CORRUPTED_MODULE_DATA + NEW_LINE + TERMINATION); } + + logger.log(Level.INFO, "All Module successfully loaded"); + fh.close(); + } catch (NullPointerException e) { + logger.log(Level.WARNING, "Error while loading all modules: " + e.getMessage()); + fh.close(); throw new ModuleLoaderException(MISSING_MODULE_DATA + NEW_LINE + TERMINATION); + } catch (IOException e) { + throw new ModuleLoaderException("Logger failed to initialize: " + NEW_LINE + TERMINATION); } } diff --git a/src/main/java/seedu/duke/apps/moduleloader/exceptions/ModuleLoaderException.java b/src/main/java/seedu/duke/apps/moduleloader/exceptions/ModuleLoaderException.java index 4e474ebd4d..2c02cbc81b 100644 --- a/src/main/java/seedu/duke/apps/moduleloader/exceptions/ModuleLoaderException.java +++ b/src/main/java/seedu/duke/apps/moduleloader/exceptions/ModuleLoaderException.java @@ -1,10 +1,13 @@ package seedu.duke.apps.moduleloader.exceptions; +/** + * Signals that an error has occured when loading modules. + */ public class ModuleLoaderException extends Exception { private String errorMessage; public ModuleLoaderException() { - + //Code is intentionally left blank } public ModuleLoaderException(String errorMessage) { diff --git a/src/main/java/seedu/duke/globalcommons/App.java b/src/main/java/seedu/duke/globalcommons/App.java index 5cdb9eec86..7d27bafb1e 100644 --- a/src/main/java/seedu/duke/globalcommons/App.java +++ b/src/main/java/seedu/duke/globalcommons/App.java @@ -19,7 +19,7 @@ public boolean isExit() { } public void run() { - + //Method is intentionally left blank } public boolean getIsExit() { diff --git a/src/main/java/seedu/duke/globalcommons/Command.java b/src/main/java/seedu/duke/globalcommons/Command.java index b1146f8dd4..d2ebc7c6b8 100644 --- a/src/main/java/seedu/duke/globalcommons/Command.java +++ b/src/main/java/seedu/duke/globalcommons/Command.java @@ -15,7 +15,7 @@ public Command(boolean isExit) { } public void execute() throws Exception { - + //Method is intentionally left blank } public boolean getIsExit() { diff --git a/src/main/java/seedu/duke/globalcommons/LoggingTool.java b/src/main/java/seedu/duke/globalcommons/LoggingTool.java new file mode 100644 index 0000000000..9d0ffc4a11 --- /dev/null +++ b/src/main/java/seedu/duke/globalcommons/LoggingTool.java @@ -0,0 +1,35 @@ +package seedu.duke.globalcommons; + +import java.io.IOException; +import java.util.logging.FileHandler; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.logging.SimpleFormatter; + +/** + * Class representing logging tool to log into text file without standard IO. + */ +public class LoggingTool { + Logger logger; + FileHandler fh; + + public LoggingTool(String loggerName, FileHandler fh) throws IOException { + logger = Logger.getLogger(loggerName); + this.fh = fh; + } + + /** + * Sets up logger to log at destination file and disables conventional IO logging. + * Note: Only logging of INFO and above is recorded. + * + * @return logger is configured + */ + public Logger initialize() { + logger.addHandler(fh); + SimpleFormatter formatter = new SimpleFormatter(); + fh.setFormatter(formatter); + logger.setUseParentHandlers(false); + logger.setLevel(Level.INFO); + return logger; + } +} diff --git a/src/main/java/seedu/duke/objects/PartialModule.java b/src/main/java/seedu/duke/objects/PartialModule.java index 29bd46c978..c32c86c813 100644 --- a/src/main/java/seedu/duke/objects/PartialModule.java +++ b/src/main/java/seedu/duke/objects/PartialModule.java @@ -100,13 +100,14 @@ public void setCap(String grade) { case "S": //Satisfactory //Fallthrough case "U": //Unsatisfactory - //Fallthrough + //Fallthrough + case "IP": //In progress + this.cap = -1.00; + break; case "W": //Withdrawn //Fallthrough case "IC": //Incomplete //Fallthrough - case "IP": //In progress - //Fallthrough case "AUD": //Audit //Fallthrough case "WU": //Withdrawn from University @@ -114,7 +115,7 @@ public void setCap(String grade) { case "EXE": //Exempted //Fallthrough case "NT": //Not taken - this.cap = -1.00; + this.cap = -2.00; break; default: this.cap = 0.00; diff --git a/src/main/java/seedu/duke/objects/Person.java b/src/main/java/seedu/duke/objects/Person.java index 8ea4b4dac8..4c44c1500b 100644 --- a/src/main/java/seedu/duke/objects/Person.java +++ b/src/main/java/seedu/duke/objects/Person.java @@ -13,7 +13,7 @@ public class Person { private int currentMc; private int currentMcAfterSU; private ArrayList modulesList; - private HashMap modulesAddedMap; + private HashMap modulesAddedMap; public Person(String personName) { this.currentTotalMcxGrade = 0.0; @@ -60,11 +60,11 @@ public void setModulesList(ArrayList modulesList) { this.modulesList = modulesList; } - public HashMap getModulesAddedMap() { + public HashMap getModulesAddedMap() { return modulesAddedMap; } - public void setModulesAddedMap(HashMap modulesAddedMap) { + public void setModulesAddedMap(HashMap modulesAddedMap) { this.modulesAddedMap = modulesAddedMap; } } diff --git a/src/main/java/seedu/duke/storage/Storage.java b/src/main/java/seedu/duke/storage/Storage.java new file mode 100644 index 0000000000..8424e1eb13 --- /dev/null +++ b/src/main/java/seedu/duke/storage/Storage.java @@ -0,0 +1,37 @@ +package seedu.duke.storage; + +import seedu.duke.apps.moduleloader.ModuleLoader; +import seedu.duke.objects.Person; +import seedu.duke.storage.commons.LoadUtils; +import seedu.duke.storage.commons.SaveUtils; +import seedu.duke.storage.exceptions.LoadFileException; +import seedu.duke.storage.exceptions.SaveFileException; + +public class Storage { + private static final String FILE_NAME = "PlanNUS.txt"; + private ModuleLoader allModules; + + public Storage(ModuleLoader allModules) { + this.allModules = allModules; + } + + public void loader(Person currentPerson) { + LoadUtils loadHandler = new LoadUtils(currentPerson, FILE_NAME, allModules); + + try { + loadHandler.load(); + } catch (LoadFileException e) { + System.out.println(e.getMessage()); + } + } + + public void saver(Person currentPerson) { + SaveUtils saveHandler = new SaveUtils(currentPerson, FILE_NAME); + + try { + saveHandler.save(); + } catch (SaveFileException e) { + System.out.println(e.getMessage()); + } + } +} diff --git a/src/main/java/seedu/duke/storage/commons/FieldValidator.java b/src/main/java/seedu/duke/storage/commons/FieldValidator.java new file mode 100644 index 0000000000..11050f7ac7 --- /dev/null +++ b/src/main/java/seedu/duke/storage/commons/FieldValidator.java @@ -0,0 +1,109 @@ +package seedu.duke.storage.commons; + +import seedu.duke.apps.academicplanner.commons.ModuleValidator; +import seedu.duke.storage.exceptions.CorruptedSaveFileException; + +import static java.lang.Integer.parseInt; + +public class FieldValidator { + private static final int SEMESTER_VALUE_POSITION = 0; + private static final int MODULE_CODE_POSITION = 1; + private static final int MODULE_GRADE_POSITION = 2; + private static final int MODULE_CREDIT_POSITION = 3; + + private static final int MODULE_LOADED = 0; + private static final int MODULE_LOADING_FAILED = 1; + private static final int INVALID_SEMESTER = 2; + private static final int INVALID_MODULE_CODE = 3; + private static final int INVALID_GRADE = 4; + private static final int INVALID_MC = 5; + + private ModuleValidator moduleValidator; + private boolean isAllFieldValid; + private int[] details; + private String[] lineItems; + + /** + * Default constructor for Field Validator. + * + * @param details An Array of int storing all the details of loading save file until current entry + * @param lineItems Different fields of current entry from save file + * @param moduleValidator Module validator to check validity of modules from save file + */ + + public FieldValidator(int[] details, String[] lineItems, ModuleValidator moduleValidator) { + this.details = details; + this.lineItems = lineItems; + this.isAllFieldValid = true; + this.moduleValidator = moduleValidator; + } + + /** + * Validating all input fields from save file. Note that validator will terminate once + * an entry fails one check, with priority: + * Semester > Module code > Grade > Module Credit + * + * @return A boolean for whether current entry is valid + */ + public boolean validate() { + try { + int currentSem = parseInt(lineItems[SEMESTER_VALUE_POSITION]); + + if (currentSem > 10 && currentSem < 1) { + isAllFieldValid = false; + details[INVALID_SEMESTER]++; + } + } catch (NumberFormatException e) { + isAllFieldValid = false; + details[INVALID_SEMESTER]++; + } + + if (isAllFieldValid && !moduleValidator.isModOfferedByNus(lineItems[MODULE_CODE_POSITION])) { + isAllFieldValid = false; + details[INVALID_MODULE_CODE]++; + } + + if (isAllFieldValid && !moduleValidator.isValidGrade(lineItems[MODULE_GRADE_POSITION])) { + isAllFieldValid = false; + details[INVALID_GRADE]++; + } + + if (isAllFieldValid) { + try { + parseInt(lineItems[MODULE_CREDIT_POSITION]); + } catch (NumberFormatException e) { + isAllFieldValid = false; + details[INVALID_MC]++; + } + } + + if (isAllFieldValid) { + details[MODULE_LOADED]++; + } else { + details[MODULE_LOADING_FAILED]++; + } + + return isAllFieldValid; + } + + /** + * Print full loading details after loading finishes. + * + * @param isAllEntryValid boolean stating whether all entries in save file is valid + * @param modulesLoaded number of modules loaded successfully + * @throws CorruptedSaveFileException throws an exception if save file is corrupted + */ + public static void printLoadDetails(boolean isAllEntryValid, int modulesLoaded) throws CorruptedSaveFileException { + if (isAllEntryValid) { + if (modulesLoaded == 0) { + System.out.println("Save file is empty. No module loaded."); + } else if (modulesLoaded == 1) { + System.out.println(modulesLoaded + " module loaded."); + } else { + System.out.println(modulesLoaded + " modules loaded."); + } + } else { + throw new CorruptedSaveFileException(); + } + } +} diff --git a/src/main/java/seedu/duke/storage/commons/LoadUtils.java b/src/main/java/seedu/duke/storage/commons/LoadUtils.java new file mode 100644 index 0000000000..c5a4fc1293 --- /dev/null +++ b/src/main/java/seedu/duke/storage/commons/LoadUtils.java @@ -0,0 +1,107 @@ +package seedu.duke.storage.commons; + +import seedu.duke.apps.academicplanner.commons.AddUtils; +import seedu.duke.apps.academicplanner.commons.ModuleValidator; +import seedu.duke.apps.moduleloader.ModuleLoader; +import seedu.duke.objects.Person; +import seedu.duke.storage.exceptions.CorruptedSaveFileException; +import seedu.duke.storage.exceptions.LoadFileException; + +import java.io.File; +import java.io.FileNotFoundException; +import java.util.Scanner; + +import static java.lang.Integer.parseInt; +import static seedu.duke.storage.commons.FieldValidator.printLoadDetails; + +public class LoadUtils { + private static final String NEW_LINE = "\n"; + private static final String TAB = " "; + + private static final int SEMESTER_VALUE_POSITION = 0; + private static final int MODULE_CODE_POSITION = 1; + private static final int MODULE_GRADE_POSITION = 2; + private static final int MODULE_CREDIT_POSITION = 3; + + private static final int MODULE_LOADED = 0; + private static final int MODULE_LOADING_FAILED = 1; + private static final int INVALID_SEMESTER = 2; + private static final int INVALID_MODULE_CODE = 3; + private static final int INVALID_GRADE = 4; + private static final int INVALID_MC = 5; + + private static final int FROM_LOAD = 1; + + private ModuleLoader allModules; + private AddUtils addUtils; + private ModuleValidator moduleValidator; + private Person currentPerson; + private String fileName; + + /** + * Default constructor for handling loading. + * + * @param currentPerson a Person object storing information for current person + * @param fileName a String for name of save file + * @param allModules A ModuleLoader containing all loaded modules + */ + public LoadUtils(Person currentPerson, String fileName, ModuleLoader allModules) { + this.currentPerson = currentPerson; + this.fileName = fileName; + this.allModules = allModules; + this.moduleValidator = new ModuleValidator(allModules, currentPerson); + } + + /** + * Function to load save file. + * + * @throws LoadFileException Exception when the save file is corrupted or missing + */ + public void load() throws LoadFileException { + int[] details = new int[6]; + boolean isAllEntryValid = true; + Scanner in; + + try { + File f = new File(fileName); + in = new Scanner(f); + addUtils = new AddUtils(allModules, currentPerson); + + while (in.hasNextLine()) { + String line = in.nextLine(); + String[] lineItems = line.split("\\|"); + + for (int i = 0; i < lineItems.length; i++) { + lineItems[i] = lineItems[i].trim().toUpperCase(); + } + + boolean isEntryValid = new FieldValidator(details, lineItems, moduleValidator).validate(); + + if (!isEntryValid) { + isAllEntryValid = false; + } + + int currentSem = parseInt(lineItems[SEMESTER_VALUE_POSITION]); + String currentModuleCode = lineItems[MODULE_CODE_POSITION]; + String currentModuleGrade = lineItems[MODULE_GRADE_POSITION]; + int currentModuleCredit = parseInt(lineItems[MODULE_CREDIT_POSITION]); + addUtils.addModuleToUser(currentModuleCode, currentSem, + currentModuleGrade, currentModuleCredit, FROM_LOAD); + } + in.close(); + printLoadDetails(isAllEntryValid, details[MODULE_LOADED]); + } catch (FileNotFoundException e) { + throw new LoadFileException("Save file not found!\nIt will be automatically created."); + } catch (CorruptedSaveFileException e) { + throw new LoadFileException("Save file corrupted! " + + "Details:" + NEW_LINE + + TAB + "Module loaded: " + details[MODULE_LOADED] + NEW_LINE + + TAB + "Module failed loading: " + details[MODULE_LOADING_FAILED] + NEW_LINE + + TAB + TAB + "- Invalid Semester: " + details[INVALID_SEMESTER] + NEW_LINE + + TAB + TAB + "- Invalid Module Code: " + details[INVALID_MODULE_CODE] + NEW_LINE + + TAB + TAB + "- Invalid Grade: " + details[INVALID_GRADE] + NEW_LINE + + TAB + TAB + "- Invalid Module Credit: " + details[INVALID_MC] + NEW_LINE + + NEW_LINE); + } + } +} diff --git a/src/main/java/seedu/duke/storage/commons/SaveUtils.java b/src/main/java/seedu/duke/storage/commons/SaveUtils.java new file mode 100644 index 0000000000..32024fdc0a --- /dev/null +++ b/src/main/java/seedu/duke/storage/commons/SaveUtils.java @@ -0,0 +1,56 @@ +package seedu.duke.storage.commons; + +import seedu.duke.objects.PartialModule; +import seedu.duke.objects.Person; +import seedu.duke.storage.exceptions.SaveFileException; + +import java.io.FileWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Comparator; + +public class SaveUtils { + private static final String NEWLINE = "\n"; + private static final String SEPARATOR = "|"; + + private Person currentPerson; + private String fileName; + + /** + * Default constructor for handling save. + * + * @param currentPerson a Person object storing information for current person + * @param fileName a String for name of save file + */ + public SaveUtils(Person currentPerson, String fileName) { + this.currentPerson = currentPerson; + this.fileName = fileName; + } + + /** + * Function to save person object into save file. + * + * @throws SaveFileException Exception thrown if there is an error accessing save file + */ + public void save() throws SaveFileException { + try { + FileWriter fw = new FileWriter(fileName); + ArrayList sortedBySem = currentPerson.getModulesList(); + sortedBySem.sort(Comparator.comparing(PartialModule::getSemesterIndex)); + + String textToSave = ""; + + for (PartialModule item : sortedBySem) { + textToSave += item.getSemesterIndex() + SEPARATOR + + item.getModuleCode() + SEPARATOR + + item.getGrade() + SEPARATOR + + item.getModuleCredit() + NEWLINE; + } + + fw.write(textToSave); + fw.close(); + } catch (IOException e) { + throw new SaveFileException("Error accessing save file!"); + } + } +} diff --git a/src/main/java/seedu/duke/storage/exceptions/CorruptedSaveFileException.java b/src/main/java/seedu/duke/storage/exceptions/CorruptedSaveFileException.java new file mode 100644 index 0000000000..475742dce7 --- /dev/null +++ b/src/main/java/seedu/duke/storage/exceptions/CorruptedSaveFileException.java @@ -0,0 +1,7 @@ +package seedu.duke.storage.exceptions; + +public class CorruptedSaveFileException extends Exception { + public CorruptedSaveFileException() { + + } +} diff --git a/src/main/java/seedu/duke/storage/exceptions/LoadFileException.java b/src/main/java/seedu/duke/storage/exceptions/LoadFileException.java new file mode 100644 index 0000000000..2b01397fd2 --- /dev/null +++ b/src/main/java/seedu/duke/storage/exceptions/LoadFileException.java @@ -0,0 +1,14 @@ +package seedu.duke.storage.exceptions; + +public class LoadFileException extends Exception { + private String errorMessage; + + public LoadFileException(String errorMessage) { + this.errorMessage = errorMessage; + } + + @Override + public String getMessage() { + return errorMessage; + } +} diff --git a/src/main/java/seedu/duke/storage/exceptions/SaveFileException.java b/src/main/java/seedu/duke/storage/exceptions/SaveFileException.java new file mode 100644 index 0000000000..2bb985e270 --- /dev/null +++ b/src/main/java/seedu/duke/storage/exceptions/SaveFileException.java @@ -0,0 +1,14 @@ +package seedu.duke.storage.exceptions; + +public class SaveFileException extends Exception { + private String errorMessage; + + public SaveFileException(String errorMessage) { + this.errorMessage = errorMessage; + } + + @Override + public String getMessage() { + return errorMessage; + } +} diff --git a/src/main/java/seedu/duke/ui/Ui.java b/src/main/java/seedu/duke/ui/Ui.java index 8bbd702983..c692721314 100644 --- a/src/main/java/seedu/duke/ui/Ui.java +++ b/src/main/java/seedu/duke/ui/Ui.java @@ -15,4 +15,8 @@ public Ui() { public Scanner getScanner() { return this.scanner; } + + public void closeScanner() { + this.scanner.close(); + } } diff --git a/src/test/java/seedu/duke/apps/academicplanner/commons/EditUtilsTest.java b/src/test/java/seedu/duke/apps/academicplanner/commons/EditUtilsTest.java new file mode 100644 index 0000000000..0a2e70a8e8 --- /dev/null +++ b/src/test/java/seedu/duke/apps/academicplanner/commons/EditUtilsTest.java @@ -0,0 +1,76 @@ +package seedu.duke.apps.academicplanner.commons; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import seedu.duke.apps.moduleloader.ModuleLoader; +import seedu.duke.apps.moduleloader.exceptions.ModuleLoaderException; +import seedu.duke.objects.PartialModule; +import seedu.duke.objects.Person; + +import java.util.ArrayList; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class EditUtilsTest { + + ModuleLoader allModules; + ModuleValidator moduleValidator; + Person currentPerson; + AddUtils addUtils; + EditUtils editUtils; + ArrayList modulesList; + + @BeforeEach + void setup() { + try { + allModules = new ModuleLoader(); + currentPerson = new Person("Bob"); + addUtils = new AddUtils(allModules,currentPerson); + moduleValidator = new ModuleValidator(allModules,currentPerson); + editUtils = new EditUtils(allModules, currentPerson); + + modulesList = currentPerson.getModulesList(); + assertEquals(modulesList.size(),0); + + addUtils.addModuleToUser("CS1010",1,"A+",4); + assertEquals(modulesList.size(),1); + } catch (ModuleLoaderException e) { + System.out.println(e.getMessage()); + } + } + + @Test + void updateModuleGrade_nonEmptyList_success() { + setup(); + + editUtils.updateModuleGrade("CS1010", "A-"); + assertEquals(modulesList.size(), 1); + for (PartialModule m : modulesList) { + if (m.getModuleCode().equalsIgnoreCase("CS1010")) { + assertEquals(m.getModuleCode(), "CS1010"); + assertTrue(moduleValidator.isValidGrade(m.getGrade())); + assertEquals(m.getGrade(), "A-"); + assertEquals(m.getSemesterIndex(), 1); + assertEquals(m.getModuleCredit(), 4); + } + } + } + + @Test + void updateModuleSemester_nonEmptyList_success() { + setup(); + + editUtils.updateModuleSemester("CS1010", "3"); + assertEquals(modulesList.size(), 1); + for (PartialModule m : modulesList) { + if (m.getModuleCode().equalsIgnoreCase("CS1010")) { + assertEquals(m.getModuleCode(), "CS1010"); + assertEquals(m.getGrade(), "A+"); + assertTrue(moduleValidator.isValidSemester(m.getSemesterIndex())); + assertEquals(m.getSemesterIndex(), 3); + assertEquals(m.getModuleCredit(), 4); + } + } + } +} diff --git a/src/test/java/seedu/duke/apps/academicplanner/commons/RemoveUtilsTest.java b/src/test/java/seedu/duke/apps/academicplanner/commons/RemoveUtilsTest.java new file mode 100644 index 0000000000..711ecc81cd --- /dev/null +++ b/src/test/java/seedu/duke/apps/academicplanner/commons/RemoveUtilsTest.java @@ -0,0 +1,46 @@ +package seedu.duke.apps.academicplanner.commons; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import seedu.duke.apps.moduleloader.ModuleLoader; +import seedu.duke.apps.moduleloader.exceptions.ModuleLoaderException; +import seedu.duke.objects.PartialModule; +import seedu.duke.objects.Person; + +import java.util.ArrayList; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class RemoveUtilsTest { + + ModuleLoader allModules; + Person currentPerson; + ModuleValidator moduleValidator; + AddUtils addUtils; + RemoveUtils removeUtils; + + @BeforeEach + void setup() { + try { + allModules = new ModuleLoader(); + currentPerson = new Person("Bob"); + addUtils = new AddUtils(allModules,currentPerson); + moduleValidator = new ModuleValidator(allModules,currentPerson); + removeUtils = new RemoveUtils(currentPerson); + } catch (ModuleLoaderException e) { + System.out.println(e.getMessage()); + } + } + + @Test + void removeModuleFromUserModuleList_nonEmptyList_success() { + setup(); + + ArrayList modulesList = currentPerson.getModulesList(); + assertEquals(modulesList.size(),0); + addUtils.addModuleToUser("CS1010",1,"A+",4); + assertEquals(modulesList.size(),1); + removeUtils.removeModuleFromUserModuleList("CS1010"); + assertEquals(modulesList.size(), 0); + } +} diff --git a/src/test/java/seedu/duke/apps/capcalculator/commands/CurrentCommandTest.java b/src/test/java/seedu/duke/apps/capcalculator/commands/CurrentCommandTest.java new file mode 100644 index 0000000000..ab973eb4ea --- /dev/null +++ b/src/test/java/seedu/duke/apps/capcalculator/commands/CurrentCommandTest.java @@ -0,0 +1,37 @@ +package seedu.duke.apps.capcalculator.commands; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import seedu.duke.apps.academicplanner.commons.AddUtils; +import seedu.duke.apps.moduleloader.ModuleLoader; +import seedu.duke.apps.moduleloader.exceptions.ModuleLoaderException; +import seedu.duke.objects.Person; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class CurrentCommandTest { + Person currentPerson; + ModuleLoader allModules; + AddUtils addUtils; + + @BeforeEach + void setup() throws ModuleLoaderException { + currentPerson = new Person("Bob"); + allModules = new ModuleLoader(); + addUtils = new AddUtils(allModules,currentPerson); + } + + @Test + void execute_populatedList_result() { + addUtils.addModuleToUser("CS1010",1,"A-",4); + addUtils.addModuleToUser("CS1231",1,"B",4); + addUtils.addModuleToUser("CG1111",1,"B+",6); + addUtils.addModuleToUser("MA1511",1,"S",4); + addUtils.addModuleToUser("MA1512",1,"S",4); + + CurrentCommand currentCommand = new CurrentCommand(currentPerson); + double currentCap = currentCommand.getCurrentCap(); + assertEquals(currentCap,4.0); + } + +} \ No newline at end of file diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 572b7398a4..5b261ff248 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -2,6 +2,9 @@ Welcome to PlanNUS! For academic planner, type For CAP calculator, type To exit PlanNUS, type +Save file not found! +It will be automatically created. +Type in a command to continue... Welcome to Academic Planner! Available commands are: @@ -9,34 +12,41 @@ Available commands are: edit remove view + help exit -Type a command to continue... +Type in a command to continue... Semester you plan to take CS1010? -Valid semesters are integers from 1 to 10, inclusive + Valid semesters are integers from 1 to 10, inclusive Grade received for CS1010? Valid grades are: Letter Grades: A+, A, A-, B+, B, B-, C+, C, D+, D, F Special Grades: CS, CU, S, U, W, IC, IP, AUD, WU, EXE If you have yet to have a grade for the module: NT CS1010 added into Semester 2. +Type in a command to continue... Thank you for using Academic Planner! Welcome back to PlanNUS Main Menu! For academic planner, type For CAP calculator, type To exit PlanNUS, type -Welcome to CAP Calculator! Commands available are: +Type in a command to continue... +Welcome to CAP Calculator! +Available commands are: current set target - To exit CAP Calculator, use command: "exit" - + set su + exit Initializing your CAP... Type a command to continue... Your current now CAP is: 5 Number of graded MCs taken is: 4 +Total number of MCs taken is: 4 Thank you for using Cap Calculator! Welcome back to PlanNUS Main Menu! For academic planner, type For CAP calculator, type To exit PlanNUS, type +Type in a command to continue... OOPS!!! I'm sorry, but I don't know what that means :-( +Type in a command to continue... Thanks for using PlanNUS! We hope to see you again! From c4a9dc0bb0bf574ac78b1d2549532246c4d3c786 Mon Sep 17 00:00:00 2001 From: Khenus Date: Sat, 17 Oct 2020 01:52:40 +0800 Subject: [PATCH 120/450] V1.3 WIP Developer guide --- docs/DeveloperGuide.md | 42 +++++++++++++++++- docs/images/DeveloperGuide/Architecture.png | Bin 0 -> 16796 bytes src/main/java/seedu/duke/PlanNus.java | 4 +- .../academicplanner/AcademicPlannerApp.java | 6 +-- .../AcademicPlannerParser.java | 6 +-- .../commands/AddModuleCommand.java | 7 +-- .../commands/EditModuleCommand.java | 4 +- .../commands/PrintCalenderCommand.java | 6 +-- .../commands/PrintHelpCommand.java | 2 +- .../commands/RemoveModuleCommand.java | 5 +-- .../commons/AcademicCalendarSorter.java | 2 +- .../academicplanner/commons/AddUtils.java | 4 +- .../academicplanner/commons/EditUtils.java | 5 +-- .../commons/ModuleValidator.java | 4 +- .../academicplanner/commons/PrintUtils.java | 2 +- .../academicplanner/commons/RemoveUtils.java | 4 +- .../apps/capcalculator/CapCalculatorApp.java | 6 +-- .../capcalculator/CapCalculatorParser.java | 6 +-- .../duke/apps/capcalculator/SetSuParser.java | 7 ++- .../commands/CurrentCommand.java | 4 +- .../commands/SetSuByModuleCommand.java | 6 +-- .../commands/SetSuBySemesterCommand.java | 6 +-- .../commands/SetTargetCommand.java | 6 +-- .../commons/CalculatorUtils.java | 4 +- .../capcalculator/commons/SetSuUtils.java | 4 +- .../capcalculator/commons/SetTargetUtils.java | 2 +- .../duke/apps/moduleloader/ModuleLoader.java | 4 +- .../duke/{globalcommons => global}/App.java | 2 +- .../{globalcommons => global}/Command.java | 2 +- .../LoggingTool.java | 2 +- .../exceptions/AppParserException.java | 2 +- .../exceptions/CommandParserException.java | 2 +- .../duke/{ => global}/objects/FullModule.java | 2 +- .../{ => global}/objects/PartialModule.java | 2 +- .../duke/{ => global}/objects/Person.java | 2 +- .../java/seedu/duke/parser/AppParser.java | 6 +-- src/main/java/seedu/duke/storage/Storage.java | 2 +- .../seedu/duke/storage/commons/LoadUtils.java | 2 +- .../seedu/duke/storage/commons/SaveUtils.java | 4 +- .../seedu/duke/apps/ModuleLoaderTest.java | 2 +- .../academicplanner/commons/AddUtilsTest.java | 4 +- .../commons/EditUtilsTest.java | 4 +- .../commons/RemoveUtilsTest.java | 4 +- .../CapCalculatorAppParserTest.java | 4 +- .../commands/CurrentCommandTest.java | 2 +- 45 files changed, 122 insertions(+), 86 deletions(-) create mode 100644 docs/images/DeveloperGuide/Architecture.png rename src/main/java/seedu/duke/{globalcommons => global}/App.java (92%) rename src/main/java/seedu/duke/{globalcommons => global}/Command.java (92%) rename src/main/java/seedu/duke/{globalcommons => global}/LoggingTool.java (96%) rename src/main/java/seedu/duke/{ => global}/exceptions/AppParserException.java (90%) rename src/main/java/seedu/duke/{ => global}/exceptions/CommandParserException.java (90%) rename src/main/java/seedu/duke/{ => global}/objects/FullModule.java (98%) rename src/main/java/seedu/duke/{ => global}/objects/PartialModule.java (99%) rename src/main/java/seedu/duke/{ => global}/objects/Person.java (98%) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 7b05b7dda3..ab12e38252 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -20,11 +20,49 @@ The following are remaining steps to be taken to finish the set up: ### Architecture -{Exact diagram and corresponding descriptions to be added} +![Architecture](./images/DeveloperGuide/Architecture.png) + +The ***Architecture Diagram*** given above explains the high-level design of PlanNus. Below is a quick overview of each component. + + + +#### PlanNus + +`PlanNus` class contains the `main` and `run` method, which is responsible for + + * At launch + + * Loading all modules for AY2020/21 into PlanNus + + * Loading previous save file into PlanNus if available + + * Creation of entry point to available app in PlanNus + + * While running + + * Continuously prompt user for app selection + + * At shut down + + * Saving of user data into save file + * Clean up methods where necessary + + + +#### Global, Ui, Parser, Storage + +* The `global` package contains classes, exceptions and objects that are required across the whole app. +* The `ui` package contains the class that is responsible for sharing one `scanner` class across the whole app to prevent multiple IO streams +* The `parser` package contains the class that handles user's app selection +* The `storage` package handles loading and saving of user's data to a save file. + + ### UI component -{Exact diagram and corresponding descriptions to be added} + + + ### Logic component diff --git a/docs/images/DeveloperGuide/Architecture.png b/docs/images/DeveloperGuide/Architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..070c00e75c689274826421d20c76cf4ac8c8a791 GIT binary patch literal 16796 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 literal 0 HcmV?d00001 diff --git a/src/main/java/seedu/duke/PlanNus.java b/src/main/java/seedu/duke/PlanNus.java index 011f47ed1d..fe4d137c00 100644 --- a/src/main/java/seedu/duke/PlanNus.java +++ b/src/main/java/seedu/duke/PlanNus.java @@ -1,8 +1,8 @@ package seedu.duke; import seedu.duke.apps.moduleloader.ModuleLoader; -import seedu.duke.globalcommons.App; -import seedu.duke.objects.Person; +import seedu.duke.global.App; +import seedu.duke.global.objects.Person; import seedu.duke.parser.AppParser; import seedu.duke.storage.Storage; import seedu.duke.ui.Ui; diff --git a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java index adeb8a0027..73df5cb54e 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java +++ b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java @@ -1,9 +1,9 @@ package seedu.duke.apps.academicplanner; import seedu.duke.apps.moduleloader.ModuleLoader; -import seedu.duke.globalcommons.App; -import seedu.duke.globalcommons.Command; -import seedu.duke.objects.Person; +import seedu.duke.global.App; +import seedu.duke.global.Command; +import seedu.duke.global.objects.Person; import seedu.duke.ui.Ui; /** diff --git a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java index 9c8a132c02..c08b8ac720 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java +++ b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java @@ -6,9 +6,9 @@ import seedu.duke.apps.academicplanner.commands.PrintHelpCommand; import seedu.duke.apps.academicplanner.commands.RemoveModuleCommand; import seedu.duke.apps.moduleloader.ModuleLoader; -import seedu.duke.exceptions.CommandParserException; -import seedu.duke.globalcommons.Command; -import seedu.duke.objects.Person; +import seedu.duke.global.exceptions.CommandParserException; +import seedu.duke.global.Command; +import seedu.duke.global.objects.Person; import seedu.duke.ui.Ui; import java.util.Scanner; diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java index 875ef00e19..4895b3f151 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java @@ -4,9 +4,10 @@ import seedu.duke.apps.academicplanner.commons.AddUtils; import seedu.duke.apps.academicplanner.commons.ModuleValidator; import seedu.duke.apps.academicplanner.exceptions.AcademicException; -import seedu.duke.globalcommons.Command; -import seedu.duke.globalcommons.LoggingTool; -import seedu.duke.objects.Person; +import seedu.duke.global.Command; +import seedu.duke.global.LoggingTool; +import seedu.duke.global.objects.FullModule; +import seedu.duke.global.objects.Person; import java.io.IOException; import java.util.Scanner; import java.util.logging.FileHandler; diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/EditModuleCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/EditModuleCommand.java index 6570ad87e5..0b2b541c61 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/EditModuleCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/EditModuleCommand.java @@ -4,8 +4,8 @@ import seedu.duke.apps.academicplanner.commons.EditUtils; import seedu.duke.apps.academicplanner.commons.ModuleValidator; import seedu.duke.apps.academicplanner.exceptions.AcademicException; -import seedu.duke.globalcommons.Command; -import seedu.duke.objects.Person; +import seedu.duke.global.Command; +import seedu.duke.global.objects.Person; import java.util.Scanner; /** diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java index 6edca49a1f..01b2809cae 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java @@ -4,9 +4,9 @@ import seedu.duke.apps.academicplanner.commons.ModuleValidator; import seedu.duke.apps.academicplanner.commons.PrintUtils; import seedu.duke.apps.academicplanner.exceptions.AcademicException; -import seedu.duke.globalcommons.Command; -import seedu.duke.objects.PartialModule; -import seedu.duke.objects.Person; +import seedu.duke.global.Command; +import seedu.duke.global.objects.PartialModule; +import seedu.duke.global.objects.Person; import java.util.ArrayList; import java.util.Comparator; import java.util.Scanner; diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/PrintHelpCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/PrintHelpCommand.java index 090c28e177..6aa983d72e 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/PrintHelpCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/PrintHelpCommand.java @@ -1,6 +1,6 @@ package seedu.duke.apps.academicplanner.commands; -import seedu.duke.globalcommons.Command; +import seedu.duke.global.Command; /** * Class representing a print help command from the academic planner. diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java index 9816d64460..4f152df3fc 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java @@ -4,9 +4,8 @@ import seedu.duke.apps.academicplanner.commons.ModuleValidator; import seedu.duke.apps.academicplanner.commons.RemoveUtils; import seedu.duke.apps.academicplanner.exceptions.AcademicException; -import seedu.duke.globalcommons.Command; -import seedu.duke.objects.PartialModule; -import seedu.duke.objects.Person; +import seedu.duke.global.Command; +import seedu.duke.global.objects.Person; import java.util.HashMap; import java.util.Scanner; diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorter.java b/src/main/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorter.java index 89f86702ae..437097b1ba 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorter.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorter.java @@ -1,6 +1,6 @@ package seedu.duke.apps.academicplanner.commons; -import seedu.duke.objects.PartialModule; +import seedu.duke.global.objects.PartialModule; import java.util.ArrayList; /** diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java index 498e1cb72a..d21ff9a8f6 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java @@ -2,8 +2,8 @@ import seedu.duke.apps.moduleloader.ModuleLoader; import seedu.duke.apps.capcalculator.commons.CalculatorUtils; -import seedu.duke.objects.PartialModule; -import seedu.duke.objects.Person; +import seedu.duke.global.objects.PartialModule; +import seedu.duke.global.objects.Person; import java.util.ArrayList; import java.util.HashMap; diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java index 1f3404b92f..2f4dc537f0 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java @@ -3,11 +3,10 @@ import seedu.duke.apps.moduleloader.ModuleLoader; import seedu.duke.apps.capcalculator.commons.CalculatorUtils; import seedu.duke.apps.academicplanner.exceptions.AcademicException; -import seedu.duke.objects.PartialModule; -import seedu.duke.objects.Person; +import seedu.duke.global.objects.PartialModule; +import seedu.duke.global.objects.Person; import java.util.ArrayList; import java.util.HashMap; -import java.util.Map; import java.util.Scanner; /** diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java b/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java index b74c73105e..487662bd8e 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java @@ -1,8 +1,8 @@ package seedu.duke.apps.academicplanner.commons; import seedu.duke.apps.moduleloader.ModuleLoader; -import seedu.duke.objects.PartialModule; -import seedu.duke.objects.Person; +import seedu.duke.global.objects.PartialModule; +import seedu.duke.global.objects.Person; import java.util.ArrayList; import java.util.HashMap; diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java index 898b510ea3..2f7de4d864 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java @@ -1,6 +1,6 @@ package seedu.duke.apps.academicplanner.commons; -import seedu.duke.objects.PartialModule; +import seedu.duke.global.objects.PartialModule; import java.util.ArrayList; /** diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java index 217f43103c..a19a85e2fb 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java @@ -1,8 +1,8 @@ package seedu.duke.apps.academicplanner.commons; import seedu.duke.apps.capcalculator.commons.CalculatorUtils; -import seedu.duke.objects.PartialModule; -import seedu.duke.objects.Person; +import seedu.duke.global.objects.PartialModule; +import seedu.duke.global.objects.Person; import java.util.ArrayList; import java.util.Map; diff --git a/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorApp.java b/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorApp.java index e9f207e559..95d0674122 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorApp.java +++ b/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorApp.java @@ -1,8 +1,8 @@ package seedu.duke.apps.capcalculator; -import seedu.duke.globalcommons.App; -import seedu.duke.globalcommons.Command; -import seedu.duke.objects.Person; +import seedu.duke.global.App; +import seedu.duke.global.Command; +import seedu.duke.global.objects.Person; import seedu.duke.ui.Ui; import java.math.RoundingMode; import java.text.DecimalFormat; diff --git a/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorParser.java b/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorParser.java index e61523e282..0beef12b2c 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorParser.java +++ b/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorParser.java @@ -2,9 +2,9 @@ import seedu.duke.apps.capcalculator.commands.CurrentCommand; import seedu.duke.apps.capcalculator.commands.SetTargetCommand; -import seedu.duke.exceptions.CommandParserException; -import seedu.duke.globalcommons.Command; -import seedu.duke.objects.Person; +import seedu.duke.global.exceptions.CommandParserException; +import seedu.duke.global.Command; +import seedu.duke.global.objects.Person; import seedu.duke.ui.Ui; import java.util.Scanner; diff --git a/src/main/java/seedu/duke/apps/capcalculator/SetSuParser.java b/src/main/java/seedu/duke/apps/capcalculator/SetSuParser.java index bad0c72062..c80ffb19b4 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/SetSuParser.java +++ b/src/main/java/seedu/duke/apps/capcalculator/SetSuParser.java @@ -2,10 +2,9 @@ import seedu.duke.apps.capcalculator.commands.SetSuByModuleCommand; import seedu.duke.apps.capcalculator.commands.SetSuBySemesterCommand; -import seedu.duke.exceptions.CommandParserException; -import seedu.duke.globalcommons.Command; -import seedu.duke.objects.Person; -import seedu.duke.ui.Ui; +import seedu.duke.global.exceptions.CommandParserException; +import seedu.duke.global.Command; +import seedu.duke.global.objects.Person; import java.util.Scanner; diff --git a/src/main/java/seedu/duke/apps/capcalculator/commands/CurrentCommand.java b/src/main/java/seedu/duke/apps/capcalculator/commands/CurrentCommand.java index 042e39ed59..9f0aa7acba 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commands/CurrentCommand.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commands/CurrentCommand.java @@ -1,7 +1,7 @@ package seedu.duke.apps.capcalculator.commands; -import seedu.duke.globalcommons.Command; -import seedu.duke.objects.Person; +import seedu.duke.global.Command; +import seedu.duke.global.objects.Person; import static seedu.duke.apps.capcalculator.commons.CalculatorUtils.formatCapToString; /** diff --git a/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuByModuleCommand.java b/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuByModuleCommand.java index 62e196cea4..68e775dc49 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuByModuleCommand.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuByModuleCommand.java @@ -2,9 +2,9 @@ import seedu.duke.apps.capcalculator.commons.SetSuUtils; import seedu.duke.apps.capcalculator.exceptions.CapCalculatorException; -import seedu.duke.globalcommons.Command; -import seedu.duke.objects.PartialModule; -import seedu.duke.objects.Person; +import seedu.duke.global.Command; +import seedu.duke.global.objects.PartialModule; +import seedu.duke.global.objects.Person; import java.util.ArrayList; import java.util.Scanner; diff --git a/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuBySemesterCommand.java b/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuBySemesterCommand.java index 104d60671d..e42c2f2861 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuBySemesterCommand.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuBySemesterCommand.java @@ -2,9 +2,9 @@ import seedu.duke.apps.capcalculator.commons.SetSuUtils; import seedu.duke.apps.capcalculator.exceptions.CapCalculatorException; -import seedu.duke.globalcommons.Command; -import seedu.duke.objects.PartialModule; -import seedu.duke.objects.Person; +import seedu.duke.global.Command; +import seedu.duke.global.objects.PartialModule; +import seedu.duke.global.objects.Person; import java.util.ArrayList; import java.util.Scanner; diff --git a/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java b/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java index 78815dabec..e5d7c784a7 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java @@ -2,9 +2,9 @@ import seedu.duke.apps.capcalculator.exceptions.InvalidCapException; import seedu.duke.apps.capcalculator.exceptions.InvalidCreditException; -import seedu.duke.globalcommons.Command; -import seedu.duke.globalcommons.LoggingTool; -import seedu.duke.objects.Person; +import seedu.duke.global.Command; +import seedu.duke.global.LoggingTool; +import seedu.duke.global.objects.Person; import seedu.duke.ui.Ui; import seedu.duke.apps.capcalculator.commons.SetTargetUtils; diff --git a/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java b/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java index 12a932e848..23a0d78a74 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java @@ -1,7 +1,7 @@ package seedu.duke.apps.capcalculator.commons; -import seedu.duke.objects.PartialModule; -import seedu.duke.objects.Person; +import seedu.duke.global.objects.PartialModule; +import seedu.duke.global.objects.Person; import java.text.DecimalFormat; /** diff --git a/src/main/java/seedu/duke/apps/capcalculator/commons/SetSuUtils.java b/src/main/java/seedu/duke/apps/capcalculator/commons/SetSuUtils.java index 1d68794708..3184f0d758 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commons/SetSuUtils.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commons/SetSuUtils.java @@ -1,8 +1,8 @@ package seedu.duke.apps.capcalculator.commons; import seedu.duke.apps.capcalculator.exceptions.CapCalculatorException; -import seedu.duke.objects.PartialModule; -import seedu.duke.objects.Person; +import seedu.duke.global.objects.PartialModule; +import seedu.duke.global.objects.Person; import java.util.ArrayList; import java.util.Comparator; diff --git a/src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java b/src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java index bc19329f83..a11c30e341 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java @@ -2,7 +2,7 @@ import seedu.duke.apps.capcalculator.exceptions.InvalidCapException; import seedu.duke.apps.capcalculator.exceptions.InvalidCreditException; -import seedu.duke.objects.Person; +import seedu.duke.global.objects.Person; import java.util.Scanner; diff --git a/src/main/java/seedu/duke/apps/moduleloader/ModuleLoader.java b/src/main/java/seedu/duke/apps/moduleloader/ModuleLoader.java index c2c6cec1f0..a012aec72d 100644 --- a/src/main/java/seedu/duke/apps/moduleloader/ModuleLoader.java +++ b/src/main/java/seedu/duke/apps/moduleloader/ModuleLoader.java @@ -2,8 +2,8 @@ import com.google.gson.Gson; import seedu.duke.apps.moduleloader.exceptions.ModuleLoaderException; -import seedu.duke.globalcommons.LoggingTool; -import seedu.duke.objects.FullModule; +import seedu.duke.global.LoggingTool; +import seedu.duke.global.objects.FullModule; import java.io.IOException; import java.io.InputStream; diff --git a/src/main/java/seedu/duke/globalcommons/App.java b/src/main/java/seedu/duke/global/App.java similarity index 92% rename from src/main/java/seedu/duke/globalcommons/App.java rename to src/main/java/seedu/duke/global/App.java index 7d27bafb1e..8ebc0f344d 100644 --- a/src/main/java/seedu/duke/globalcommons/App.java +++ b/src/main/java/seedu/duke/global/App.java @@ -1,4 +1,4 @@ -package seedu.duke.globalcommons; +package seedu.duke.global; /** * Class representing an application in PlanNUS. diff --git a/src/main/java/seedu/duke/globalcommons/Command.java b/src/main/java/seedu/duke/global/Command.java similarity index 92% rename from src/main/java/seedu/duke/globalcommons/Command.java rename to src/main/java/seedu/duke/global/Command.java index d2ebc7c6b8..a821024d7b 100644 --- a/src/main/java/seedu/duke/globalcommons/Command.java +++ b/src/main/java/seedu/duke/global/Command.java @@ -1,4 +1,4 @@ -package seedu.duke.globalcommons; +package seedu.duke.global; /** * Class representing a command in PlanNUS. diff --git a/src/main/java/seedu/duke/globalcommons/LoggingTool.java b/src/main/java/seedu/duke/global/LoggingTool.java similarity index 96% rename from src/main/java/seedu/duke/globalcommons/LoggingTool.java rename to src/main/java/seedu/duke/global/LoggingTool.java index 9d0ffc4a11..d4ae14b0a5 100644 --- a/src/main/java/seedu/duke/globalcommons/LoggingTool.java +++ b/src/main/java/seedu/duke/global/LoggingTool.java @@ -1,4 +1,4 @@ -package seedu.duke.globalcommons; +package seedu.duke.global; import java.io.IOException; import java.util.logging.FileHandler; diff --git a/src/main/java/seedu/duke/exceptions/AppParserException.java b/src/main/java/seedu/duke/global/exceptions/AppParserException.java similarity index 90% rename from src/main/java/seedu/duke/exceptions/AppParserException.java rename to src/main/java/seedu/duke/global/exceptions/AppParserException.java index bdc56f5cfc..11f63e7db2 100644 --- a/src/main/java/seedu/duke/exceptions/AppParserException.java +++ b/src/main/java/seedu/duke/global/exceptions/AppParserException.java @@ -1,4 +1,4 @@ -package seedu.duke.exceptions; +package seedu.duke.global.exceptions; /** * Signals that an invalid command has been given in the App parser. diff --git a/src/main/java/seedu/duke/exceptions/CommandParserException.java b/src/main/java/seedu/duke/global/exceptions/CommandParserException.java similarity index 90% rename from src/main/java/seedu/duke/exceptions/CommandParserException.java rename to src/main/java/seedu/duke/global/exceptions/CommandParserException.java index dcbd223b39..1e3ced952f 100644 --- a/src/main/java/seedu/duke/exceptions/CommandParserException.java +++ b/src/main/java/seedu/duke/global/exceptions/CommandParserException.java @@ -1,4 +1,4 @@ -package seedu.duke.exceptions; +package seedu.duke.global.exceptions; /** * Signals that an invalid command has been given in the main command parser. diff --git a/src/main/java/seedu/duke/objects/FullModule.java b/src/main/java/seedu/duke/global/objects/FullModule.java similarity index 98% rename from src/main/java/seedu/duke/objects/FullModule.java rename to src/main/java/seedu/duke/global/objects/FullModule.java index c7ba248c30..eeb5253601 100644 --- a/src/main/java/seedu/duke/objects/FullModule.java +++ b/src/main/java/seedu/duke/global/objects/FullModule.java @@ -1,4 +1,4 @@ -package seedu.duke.objects; +package seedu.duke.global.objects; import java.util.ArrayList; import java.util.HashMap; diff --git a/src/main/java/seedu/duke/objects/PartialModule.java b/src/main/java/seedu/duke/global/objects/PartialModule.java similarity index 99% rename from src/main/java/seedu/duke/objects/PartialModule.java rename to src/main/java/seedu/duke/global/objects/PartialModule.java index c32c86c813..df436c59b0 100644 --- a/src/main/java/seedu/duke/objects/PartialModule.java +++ b/src/main/java/seedu/duke/global/objects/PartialModule.java @@ -1,4 +1,4 @@ -package seedu.duke.objects; +package seedu.duke.global.objects; import org.apache.commons.lang3.builder.ToStringBuilder; diff --git a/src/main/java/seedu/duke/objects/Person.java b/src/main/java/seedu/duke/global/objects/Person.java similarity index 98% rename from src/main/java/seedu/duke/objects/Person.java rename to src/main/java/seedu/duke/global/objects/Person.java index 4c44c1500b..2414486cd9 100644 --- a/src/main/java/seedu/duke/objects/Person.java +++ b/src/main/java/seedu/duke/global/objects/Person.java @@ -1,4 +1,4 @@ -package seedu.duke.objects; +package seedu.duke.global.objects; import java.util.ArrayList; import java.util.HashMap; diff --git a/src/main/java/seedu/duke/parser/AppParser.java b/src/main/java/seedu/duke/parser/AppParser.java index 0adf8d904c..d9c48ccadc 100644 --- a/src/main/java/seedu/duke/parser/AppParser.java +++ b/src/main/java/seedu/duke/parser/AppParser.java @@ -3,9 +3,9 @@ import seedu.duke.apps.academicplanner.AcademicPlannerApp; import seedu.duke.apps.capcalculator.CapCalculatorApp; import seedu.duke.apps.moduleloader.ModuleLoader; -import seedu.duke.exceptions.AppParserException; -import seedu.duke.globalcommons.App; -import seedu.duke.objects.Person; +import seedu.duke.global.exceptions.AppParserException; +import seedu.duke.global.App; +import seedu.duke.global.objects.Person; import seedu.duke.ui.Ui; /** diff --git a/src/main/java/seedu/duke/storage/Storage.java b/src/main/java/seedu/duke/storage/Storage.java index 8424e1eb13..ed99cd2906 100644 --- a/src/main/java/seedu/duke/storage/Storage.java +++ b/src/main/java/seedu/duke/storage/Storage.java @@ -1,7 +1,7 @@ package seedu.duke.storage; import seedu.duke.apps.moduleloader.ModuleLoader; -import seedu.duke.objects.Person; +import seedu.duke.global.objects.Person; import seedu.duke.storage.commons.LoadUtils; import seedu.duke.storage.commons.SaveUtils; import seedu.duke.storage.exceptions.LoadFileException; diff --git a/src/main/java/seedu/duke/storage/commons/LoadUtils.java b/src/main/java/seedu/duke/storage/commons/LoadUtils.java index c07fb717f8..3716444dc3 100644 --- a/src/main/java/seedu/duke/storage/commons/LoadUtils.java +++ b/src/main/java/seedu/duke/storage/commons/LoadUtils.java @@ -3,7 +3,7 @@ import seedu.duke.apps.academicplanner.commons.AddUtils; import seedu.duke.apps.academicplanner.commons.ModuleValidator; import seedu.duke.apps.moduleloader.ModuleLoader; -import seedu.duke.objects.Person; +import seedu.duke.global.objects.Person; import seedu.duke.storage.exceptions.CorruptedSaveFileException; import seedu.duke.storage.exceptions.LoadFileException; diff --git a/src/main/java/seedu/duke/storage/commons/SaveUtils.java b/src/main/java/seedu/duke/storage/commons/SaveUtils.java index 32024fdc0a..aeb84b12db 100644 --- a/src/main/java/seedu/duke/storage/commons/SaveUtils.java +++ b/src/main/java/seedu/duke/storage/commons/SaveUtils.java @@ -1,7 +1,7 @@ package seedu.duke.storage.commons; -import seedu.duke.objects.PartialModule; -import seedu.duke.objects.Person; +import seedu.duke.global.objects.PartialModule; +import seedu.duke.global.objects.Person; import seedu.duke.storage.exceptions.SaveFileException; import java.io.FileWriter; diff --git a/src/test/java/seedu/duke/apps/ModuleLoaderTest.java b/src/test/java/seedu/duke/apps/ModuleLoaderTest.java index 94f6561332..1c7b262eba 100644 --- a/src/test/java/seedu/duke/apps/ModuleLoaderTest.java +++ b/src/test/java/seedu/duke/apps/ModuleLoaderTest.java @@ -4,7 +4,7 @@ import org.junit.jupiter.api.Test; import seedu.duke.apps.moduleloader.ModuleLoader; import seedu.duke.apps.moduleloader.exceptions.ModuleLoaderException; -import seedu.duke.objects.FullModule; +import seedu.duke.global.objects.FullModule; import java.util.Map; diff --git a/src/test/java/seedu/duke/apps/academicplanner/commons/AddUtilsTest.java b/src/test/java/seedu/duke/apps/academicplanner/commons/AddUtilsTest.java index 6dc8efc706..bc80473e5a 100644 --- a/src/test/java/seedu/duke/apps/academicplanner/commons/AddUtilsTest.java +++ b/src/test/java/seedu/duke/apps/academicplanner/commons/AddUtilsTest.java @@ -4,8 +4,8 @@ import org.junit.jupiter.api.Test; import seedu.duke.apps.moduleloader.ModuleLoader; import seedu.duke.apps.moduleloader.exceptions.ModuleLoaderException; -import seedu.duke.objects.PartialModule; -import seedu.duke.objects.Person; +import seedu.duke.global.objects.PartialModule; +import seedu.duke.global.objects.Person; import java.util.ArrayList; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; diff --git a/src/test/java/seedu/duke/apps/academicplanner/commons/EditUtilsTest.java b/src/test/java/seedu/duke/apps/academicplanner/commons/EditUtilsTest.java index 0a2e70a8e8..5ffd31d258 100644 --- a/src/test/java/seedu/duke/apps/academicplanner/commons/EditUtilsTest.java +++ b/src/test/java/seedu/duke/apps/academicplanner/commons/EditUtilsTest.java @@ -4,8 +4,8 @@ import org.junit.jupiter.api.Test; import seedu.duke.apps.moduleloader.ModuleLoader; import seedu.duke.apps.moduleloader.exceptions.ModuleLoaderException; -import seedu.duke.objects.PartialModule; -import seedu.duke.objects.Person; +import seedu.duke.global.objects.PartialModule; +import seedu.duke.global.objects.Person; import java.util.ArrayList; diff --git a/src/test/java/seedu/duke/apps/academicplanner/commons/RemoveUtilsTest.java b/src/test/java/seedu/duke/apps/academicplanner/commons/RemoveUtilsTest.java index 711ecc81cd..651a4d12cc 100644 --- a/src/test/java/seedu/duke/apps/academicplanner/commons/RemoveUtilsTest.java +++ b/src/test/java/seedu/duke/apps/academicplanner/commons/RemoveUtilsTest.java @@ -4,8 +4,8 @@ import org.junit.jupiter.api.Test; import seedu.duke.apps.moduleloader.ModuleLoader; import seedu.duke.apps.moduleloader.exceptions.ModuleLoaderException; -import seedu.duke.objects.PartialModule; -import seedu.duke.objects.Person; +import seedu.duke.global.objects.PartialModule; +import seedu.duke.global.objects.Person; import java.util.ArrayList; diff --git a/src/test/java/seedu/duke/apps/capcalculator/CapCalculatorAppParserTest.java b/src/test/java/seedu/duke/apps/capcalculator/CapCalculatorAppParserTest.java index b52fd445ad..9199e3a071 100644 --- a/src/test/java/seedu/duke/apps/capcalculator/CapCalculatorAppParserTest.java +++ b/src/test/java/seedu/duke/apps/capcalculator/CapCalculatorAppParserTest.java @@ -4,8 +4,8 @@ import org.junit.jupiter.api.Test; import seedu.duke.apps.capcalculator.commands.CurrentCommand; import seedu.duke.apps.capcalculator.commands.SetTargetCommand; -import seedu.duke.globalcommons.Command; -import seedu.duke.objects.Person; +import seedu.duke.global.Command; +import seedu.duke.global.objects.Person; import seedu.duke.ui.Ui; import static org.junit.jupiter.api.Assertions.assertTrue; diff --git a/src/test/java/seedu/duke/apps/capcalculator/commands/CurrentCommandTest.java b/src/test/java/seedu/duke/apps/capcalculator/commands/CurrentCommandTest.java index ab973eb4ea..6c9420d0da 100644 --- a/src/test/java/seedu/duke/apps/capcalculator/commands/CurrentCommandTest.java +++ b/src/test/java/seedu/duke/apps/capcalculator/commands/CurrentCommandTest.java @@ -5,7 +5,7 @@ import seedu.duke.apps.academicplanner.commons.AddUtils; import seedu.duke.apps.moduleloader.ModuleLoader; import seedu.duke.apps.moduleloader.exceptions.ModuleLoaderException; -import seedu.duke.objects.Person; +import seedu.duke.global.objects.Person; import static org.junit.jupiter.api.Assertions.assertEquals; From 5762b32d5cc91be1cb427142ef505b900e2019a0 Mon Sep 17 00:00:00 2001 From: vanessa-kang <49282734+vanessa-kang@users.noreply.github.com> Date: Sat, 17 Oct 2020 06:31:03 +0800 Subject: [PATCH 121/450] Added basic functionality to print details of a specified module. (#23) TODO: refactoring and general cleanup for code quality TODO: add JUnit tests, assertions, logging etc. --- .../academicplanner/AcademicPlannerApp.java | 1 + .../AcademicPlannerParser.java | 9 ++-- .../commands/ModuleDetailsCommand.java | 50 +++++++++++++++++++ .../commands/PrintHelpCommand.java | 1 + .../commons/ModuleValidator.java | 10 ++++ 5 files changed, 66 insertions(+), 5 deletions(-) create mode 100644 src/main/java/seedu/duke/apps/academicplanner/commands/ModuleDetailsCommand.java diff --git a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java index a978b85de0..13289788d7 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java +++ b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java @@ -17,6 +17,7 @@ public class AcademicPlannerApp extends App { + "\tadd \n" + "\tedit \n" + "\tremove \n" + + "\tdetails \n" + "\tview\n" + "\thelp\n" + "\texit"; diff --git a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java index 0fdbb5fcdd..6766d7dc2d 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java +++ b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java @@ -1,10 +1,6 @@ package seedu.duke.apps.academicplanner; -import seedu.duke.apps.academicplanner.commands.AddModuleCommand; -import seedu.duke.apps.academicplanner.commands.EditModuleCommand; -import seedu.duke.apps.academicplanner.commands.PrintCalenderCommand; -import seedu.duke.apps.academicplanner.commands.PrintHelpCommand; -import seedu.duke.apps.academicplanner.commands.RemoveModuleCommand; +import seedu.duke.apps.academicplanner.commands.*; import seedu.duke.apps.moduleloader.ModuleLoader; import seedu.duke.exceptions.CommandParserException; import seedu.duke.globalcommons.Command; @@ -27,6 +23,7 @@ public class AcademicPlannerParser { private static final String VIEW_COMMAND = "VIEW"; private static final String HELP_COMMAND = "HELP"; private static final String EXIT_COMMAND = "EXIT"; + private static final String DETAILS_COMMAND = "DETAILS"; /** * Command to process the user inputs and to return the intended command with the correct parameters. @@ -56,6 +53,8 @@ public static Command parse(String userInput, ModuleLoader allModules, Person cu return new Command(true); case HELP_COMMAND: return new PrintHelpCommand(); + case DETAILS_COMMAND: + return new ModuleDetailsCommand(allModules, inputs[MODULE_CODE_INDEX]); default: throw new CommandParserException(ERROR_INVALID_COMMAND + NEW_LINE + EXITING_CURRENT_COMMAND); } diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/ModuleDetailsCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/ModuleDetailsCommand.java new file mode 100644 index 0000000000..af3dda30a3 --- /dev/null +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/ModuleDetailsCommand.java @@ -0,0 +1,50 @@ +package seedu.duke.apps.academicplanner.commands; +import seedu.duke.apps.academicplanner.commons.ModuleValidator; +import seedu.duke.apps.academicplanner.exceptions.AcademicException; +import seedu.duke.apps.moduleloader.ModuleLoader; +import seedu.duke.globalcommons.Command; +import seedu.duke.objects.FullModule; + +import java.util.logging.Level; + +public class ModuleDetailsCommand extends Command { + + private static final String ERROR_NOT_OFFERED = " IS NOT OFFERED BY NUS"; + + private final ModuleLoader allModules; + private String moduleCode; + private ModuleValidator moduleValidator; + + public ModuleDetailsCommand(ModuleLoader allModules, String moduleCode) { + this.allModules = allModules; + this.moduleCode = moduleCode; + this.moduleValidator = new ModuleValidator(allModules); + } + + @Override + public void execute() throws AcademicException { + + validateModuleCode(); + + int mapIndex = allModules.getModuleMap().get(moduleCode); + FullModule module = allModules.getModuleFullDetails()[mapIndex]; + String semOfferedStr = module.getSemester().toString(); + + System.out.println(module.getModuleCode() + " " + module.getTitle()); + System.out.println("\t" + "Department: " + module.getDepartment()); + System.out.println("\t" + "Faculty: " + module.getFaculty()); + System.out.println("\t" + "Credits: " + module.getModuleCredit() + "MCs"); + System.out.println("\t" + "Semesters offered: " + semOfferedStr.substring(1,semOfferedStr.length()-1)); + System.out.println("\t" + "Prerequisites: " + module.getPrerequisite().replaceAll("\n","\n\t ")); + System.out.println("\t" + "Corequisites: " + module.getCorequisite().replaceAll("\n","\n\t ")); + System.out.println("\t" + "Preclusions: " + module.getPreclusion().replaceAll("\n","\n\t ")); + + } + + private void validateModuleCode() throws AcademicException { + if (!moduleValidator.isModOfferedByNus(moduleCode)) { + throw new AcademicException(moduleCode + ERROR_NOT_OFFERED); + } + } + +} diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/PrintHelpCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/PrintHelpCommand.java index 090c28e177..11c372409e 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/PrintHelpCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/PrintHelpCommand.java @@ -11,6 +11,7 @@ public class PrintHelpCommand extends Command { + "\tadd \n" + "\tedit \n" + "\tremove \n" + + "\tdetails \n" + "\tview\n" + "\thelp\n" + "\texit"; diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java b/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java index 5aa1b1bb01..756d6a6c8d 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java @@ -22,6 +22,16 @@ public ModuleValidator(ModuleLoader allModules, Person currentPerson) { this.modulesAddedMap = currentPerson.getModulesAddedMap(); } + /** + * Overload constructor for EditUtils. + * + * @param allModules all modules offered by NUS + */ + public ModuleValidator(ModuleLoader allModules) { + this.allModules = allModules; + this.modulesAddedMap = null; + } + /** * Returns true if module code is offered by NUS, * else returns false. From 963e86d4636cf525c2748c165a963ccaecf6f5f4 Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Sat, 17 Oct 2020 09:14:19 +0800 Subject: [PATCH 122/450] Fix bug where header still prints if no modules exist for the semeseter in view by semester --- .../java/seedu/duke/apps/academicplanner/commons/PrintUtils.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java index e608dd3bb6..9019f89c1d 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java @@ -23,6 +23,7 @@ public PrintUtils() { public void printBySemester(ArrayList sortedList, int selectedSemester) { if (sortedList.size() < 1) { System.out.println(ERROR_NO_MODULES); + return; } System.out.println(INDENT + "SEMESTER " + selectedSemester); From 0d1ee1592127f9fffe673d520461b646037fc666 Mon Sep 17 00:00:00 2001 From: JuZihao <57383789+JuZihao@users.noreply.github.com> Date: Sat, 17 Oct 2020 13:36:55 +0800 Subject: [PATCH 123/450] Update UserGuide.md Add set su user guide --- docs/UserGuide.md | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 3e80959b0c..a8d631cb84 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -151,19 +151,43 @@ This is for the user to set modules that he or she wishes to S/U. As shown in the image, user can choose to S/U by either a _Semester_ or some selected _Modules_. (__Note:__ Enter either `1` or `2` instead of the component's name) +##### Set S/U by semester: + Expected output when user wishes to S/U by _Semester_. +User will then be prompte to enter a specific semester that he or she wishes to S/U. + +Expected output when user entered valid _Semester_. + + + +__Caution:__ + +* Only modules that can be S/Ued are added into the S/U list. +* Modules with special grades are filtered out. + +##### Set S/U by modules: + Expected output when user wishes to S/U by _Modules_. - + + +User will then be prompte to enter a specific number of modules to S/Ued. + +Expected output when user entered a valid number of modules. + + + +User will then be prompte to enter a serie of module codes to S/Ued. + +Expected output when user entered valid module codes. -User will then be prompte to enter a specific number of modules to + __Caution:__ -* Only modules that have been added into the calendar can be edited. * Duplicate modules are not allowed. * Number of modules to be S/Ued should not be greater than number of modules taken by the user. From 020af0b7e675bd10993e3e631e70e2fc6b78d5c5 Mon Sep 17 00:00:00 2001 From: JuZihao <57383789+JuZihao@users.noreply.github.com> Date: Sat, 17 Oct 2020 13:44:59 +0800 Subject: [PATCH 124/450] Added pictures for UG --- docs/images/capcalc_current.png | Bin 6041 -> 10062 bytes docs/images/capcalc_set_su_module.png | Bin 0 -> 8602 bytes docs/images/capcalc_set_su_modules.png | Bin 0 -> 4216 bytes docs/images/capcalc_set_su_modules_output.png | Bin 0 -> 66337 bytes docs/images/capcalc_set_su_modules_prompt.png | Bin 0 -> 12779 bytes docs/images/capcalc_set_su_semester.png | Bin 0 -> 7660 bytes .../images/capcalc_set_su_semester_output.png | Bin 0 -> 104568 bytes .../capcalculator/commons/SetTargetUtils.java | 2 +- 8 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 docs/images/capcalc_set_su_module.png create mode 100644 docs/images/capcalc_set_su_modules.png create mode 100644 docs/images/capcalc_set_su_modules_output.png create mode 100644 docs/images/capcalc_set_su_modules_prompt.png create mode 100644 docs/images/capcalc_set_su_semester.png create mode 100644 docs/images/capcalc_set_su_semester_output.png diff --git a/docs/images/capcalc_current.png b/docs/images/capcalc_current.png index ea2fd3b1af11fca495e44e1f38a37078d30a5739..837e8b1958c3a1722ec1b39ff416dba55aaf5ea5 100644 GIT binary patch literal 10062 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 literal 6041 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 diff --git a/docs/images/capcalc_set_su_module.png b/docs/images/capcalc_set_su_module.png new file mode 100644 index 0000000000000000000000000000000000000000..6fcc2363c1937e901ef9e44d7b1fb24a1665a17e GIT binary patch literal 8602 zcmbuFcT`jT((hG7daqKYBfSU&5D@8t6akSM0U>lkZwV0*kS@qWh=wjrKzab_U5Wvu zhEN2gcWI%&!L#0X-F5Fh_xy49T4`(Vot-`No!`uSCeeoaS`?%#q&IHdpwQ7)e|F=> zEfD^_6Y(AVb9IQ>7XIa?&oiyZH@>3T*6<&0gH)fY-ndbbNOo>Zi2qCi);9OKaf8

+|NJK!F#skQ2norA4vV{DPWxIGq1uzHV~En3i@ zy3cf7mqzp6yL(LG#HKM>g`(U}*|c1wIc;xJwAF9%VpXJ6yZ63|nD*dgUOKn8 zH^b-1`_HT6&C0Eos|)dW_)Snj0!f44G-x8Fxw*M>1lz%y>gwwB8qDbH-8tV~NkAcg z=6X=VoVIWsk~8J&g9#f`!AGWRly0s#`Z+;z5dH-9V$3c$UvO@5|D*e)|2Elq>)-FG z{_-B2zj;Nf*st6g(z4xpH10m>wWb6KbYVIYsb?$dgvMGEa?XcG29)PI5Y5)_aw+%X zWO*S_%UuqXHAA)t5=FJ=fZWUCA5reACgZfmL>?P#lQi>B)ocv-yD7HN%}L&)rJ*sR zwKwfNj7O9M`yewX4734@tY2Ss+SDQ^GYm5}~XwZ*XSfXd9%O zTMJBgVp@03aYmcP?ho-DJInnZ+&aTbaBsE2B2^+PeKNP$K%NnREl~ONS0wR| zJ&0dqbwU!AdK>n7Pqrq<4|*4PBL~MURG>m8i>tlCY_|-%0r4gR8lc0G~3evN7Xq|w{?>)nDe|L+JV{*NaQ3mc~} zztA7gs>r4_CrT-Ic(;1E;8h>0XI_faI{f9~44FKhz}f*6tyJE^t}f(CvQInul?8>1 z#&4Q#sRdd2ZZjuM!9#u!j`>lT_hBpSTih@Bg8GK<08GWd#lUx1W0K>G#l}=@$frd5 zXXo5L$xt@AFX}!x2&lO@aIdoIS<-Z`{Q(f8lP(5V!EVzTa|BK=GH;(ybQPVor&?zT zRse#0XxB{yNPXQ!HxC}MyK8>*XcE+^VKy;6NQc%?Gtr_={HR4EA_T3t1srxNsrsf$ zRE@^5vVofTdY)HnzBq)HZB|!<-9?YjeWFFv4j!r<9_C6(z5u%Ev+|G1Pm9Kq-7kiN z^O>sFnLj2*p`^dGBVau8tV#dO-9DT12z=-fCx7{9Y44?4N}cyXboZKg{JN5BFL|n| z9eDLEMLLz{{Kuo0rze7U8d%=L1pO=GTC9SlGm7Y(dI#T>o=I9|+|@Gx42RU;h_Z`w zf5Ef0e;klQK`6j7eEeW&&Zy@pa_n%TMXxvXd$Rf9$AMIkA#l2rVrUe2-(uS3Hs+AIruCtF_d zmk&&|%rJIx3aeq81elqidwNe>gUTozRK#XD7MSe)DHPZY=7aC|Jx!Q53ZNquadpk~ zmB$?Bbn@i>Q8?AIO8aQ7jw$e0ck~k0w0ZXSt8xFAU=c&d-(~#2IZGd3u{68I$E$g7 z7-&`}ifeWgAcE!cTatUqeuoOFMT=`5SH~2gjo*zV7CaI9h!ko}u;BgCB8F8)?3t%_ z9XUx73-*yrL$cdP%zvwV$mKP$eZ;Qi(+xS}P1IFeeBbH+p~Ac;kN@Oc4F)Lw86n+8 zPvzq+HLxei<-jy&mTb6~7QW*}@XQx$Wd8t(cvfs15cG?~?XlzLpRMd#UgTj8H`h&) z;Il>Q+~UcWr0zRjuwSw)LVYhwox|;a3dl}VASYP`3(`cs-@mUKZ8)}PB62J_RT_5X zO8S$Q3C{H4QW$B&$!Lsy7a=T9BQ@XX&L(9mYRTQhf`f7g1Sr2q3 znn#1lquU(+s5+fNa?O%*En$^gA4CNjZ0z)B-&&@JRqfvr(r23Yji8vgW3~GOVCYVg zig)*B5-REy%;C6rvgCQ(Np+}|TDoaURrJk9PhuY34s$)JO2+(0liM-MrL<_?btS`K zCgTOO%|K7-FQs{cwKW}~pqK7Ilx8rY_s7FR=N-_V=YXx1EP zhE2*ARp@j1Q1iF~pK`N11hH;sEZp438gjxovgR2tC2<5J|5L7Uz4?hc)@YW-nmMiK@QIf>Vf{b+Q%AnpC%~b zuoW56W=5R1iKMqY)GI=$&-MX%u_5PZn@B}+N0JM0@=|}n!edwF+HKZ@f9CZxV23yN zb^s>R#usuyPAyNK?8FebWidwYXC6;%u&P^ogM%b7Q_gedl9PlmbGLDSMZ?ncR7&?u z@75TV%m%NW>9($k$|?RV{pc{gxn^W>4yW|$Lx)Ca<uuL>?sPmaTi^UivOZksL0!%#!O&!96YqR-KtZuIhm}u`>l+}z-(|~<+;2VMZ6j< z_DA6a)XK$PZyh5R_anv&yV6#dOBdgzV%I|4IN#@*AeR`kB|gRMsQ+;ooX_?!;wY>q zFtGTRmRXT;)$aiWL41Av_p$zmae>xdm+=pR2vRK*3#4 zf~Vg;xWIh->~avhB)|R!hzb+$G52MR6ccEu;8atR(Wa;}?t9Oo$9*uNt@5h(D~M-) zz~-M{p04#y8(E^5D;u3!rZ2g&53KZTv=Tytyq-_fWdd;njvjJXZQnjab)8#Y*C>BU zbknxU_7=UPQ zmym6IJnTN}7M;+;fG6di&6GT6{of+1nwD1gpDws0yunpL)0~Pm`zO^#dGBl2OOX2w zMTUP1W>l%|^Ky1$i#dnB8g*ocOX^?%BcoxL70$S7=|k&0ZORePu9R?pc+A>YyG@EJ zk6ceQCOJB+Z$9`TWBf^#+lk+=F|$xM^ie5f%lwKsu@#=X$F4wI)W-W57Js0Yx*0tC z9*nAF=85BRTm#(#}I})uKQg$!5NaI<6L3LEl%XCl%`N-_UoJ}pwF^b9bLCHlj zh~sty-3-cYbD{?G{pkH#S<*!i<`1`CbpkV*dpzWJyuOjAXOI)XGKyqYYVrNRzpQft zc5IwI-1PjsRWW|?Ah{J$Yhqw^j2`0R8gW_rf0vVoZYh>c1~!&Arfc+fm{_%m z>J@oRpUXpTK*KvQ=i<^J#hBEL3c8;k{D{;|qNGp$hV|W+c-8b%_LEcZOLr|5<)saGP7lmHLQ4Ep;?<)sI2ERa_@}&g_bKE| zjyZAWFw9`(P?)G|#Q_J@DAhbY1lCRzUli0MFVKS*#4UCz}BfX8r-UrRC@^*YxQ);Q^ z%z#YAt@ttKe1=&*^%wk!TQ?t|$wqIoEUVk%P303-i?iV4q+#&E z$(r{Kka0z1?^k%rH=>1!B37!Y!43-uX_teH(^f#6oE-Tlk0HuUBK?PP<=45VNd;81 zfVdK?J6Rg5$(>ViQTJTt&?W0%Kt? zF(u2yPih{88LCJFiWxK`_8z1;`~9bTsn0~l!0)!s>{jo%P0f6kDP<1a4xcy?PAJ=5 z)L@+$U-Ebwe>wGaIR3L>G+=l#Hc2NDr@_VyKAf)Ky4A87P#b8boS zL6BtkW3s@EMbMu>q2!DAe84i2Wu(G%aMqY2!QgLc@)_rLof)5(bpbYO=H~@ehOd##B+U=&DBPZ_#TmQQc@DB4-$9l4=~>%R63F- zsfVlne+?-hj4u(`doe1gA-@hoA!IYPVZB1QX16o$#6iu@lvxJ*2#! zl`CefWrK;Mc8mgeLiH(I^!18l>URFLUaXqEDh02>+Ux*4IjeLYh7jy+F=LI(Je_Kr zl+P@H#(r_XVQgDU5aFeYw+-Vd56%yNWQ?7sJs`H?)gUnWe&pDAf@*CHLe;W!cKp`@h{x=KiKX+H}!a6@P9DB**b838ktu`J!z2e`Ml9zBy)5p zvg(;{y<;{yZo%JyWdXM$hldJIWSD33dXnsqW;GNuLQD%?RKC!*6N&TjlbpbbBun*k zdR#~>yWe#V2u*KtwsocuaU268LqgTO)|<;6a;=}0s+BY-r+6-K`tsqq&p+-6a6YeN zZnNhtA0ILDhisNINN0LJ4nlT1!-5dQ$|v>ODZfc4fnUH>)={O6w;fi*7R&bJ3%}~q zH@17rkzErEBVVk-e933lj3jI!TKjeVHx)a;h~Rx$@-ql?p%U{E^ltQux^;7?3ICmq zm>!lgNA1XpmJ;M~*^P=D(Odw6T2UP~u zD34MNZ4+J2`E_?Z0*`NOd{iI!%EU(N>K&PJmGVH)G_#Lyd#WpCYP7Ic=9h&z*cHWw zxo*BkQ1W5E+#*6DEcIMu@*8Kz5~A(kEnO3w3@jMgmWa21De5=H%|G)ZG&KZ5qn9qc zC6dVdJ!0)^rjkJ|B!pUvX5>MVYb`O}%6bY@Ud@g4<5P^20?QI|KjY#~%4vx~Rm^K& zw7L+E0GnV5-;G;eO5)26zU=yDSXea={5fCxcl{WmY~q!wz7ENgw_g$p>}HfS8)SB2 zPgO1K!1!N$ryarCLB+o6tW4x;PAKNDFi&&gGnyxodQGM5XLrGji9!v;pahGw2^Mt9 zi_aNb?UN-h5(dM)v;a&_RHH{#;Mz&Jzv!xJcWI435##ASfLk4sJ1{dAoQW7WIsYPJ8m_jaMXQO=Etayv`@A zlWxk%=y|HGtNp0`&2>qCW3iBIAjpy!boAx+6{xQZbjQ8-^7zTOrr50%>kNK0Y}t(^ zF|;{9z z`BJ+a(U1z{RosUvb`5-2W6iB34>l{9mj=_O`913w5cP_2INfi1X|cAoL%a6SF5uUapONFuUV$JYBRFm0oHpQt zc?N&p_Dx4qIgaYgs2Uu7Oux&})Xp1E4`$Tp(uM3&js3Iq?hcet%8$8HgguEetvbr) z?Uj*e0BSp13w7fZ%5=&`mZQen>w~N_VMstQ{tRqR;Ir*9hB7nebn>+oilnXZ07{7 z0kos%OMtKj+?8>CK+wZ1pG$w9Qw6^xr_{dxt+YmTM^d|{uhKc|S7)kxYXiw4qbRp3 z=O9cP?{6SSXSG5!N3jFutdgGZ?xC8Hi65J&3ZYs?m+UoKW*W4RQtK=G$GiHb{#fi+ zJ9||r)TRMUk@0T=V%Cg)_YPGlN{1fMsNJ(Ve0i|#U}C9jX3icb*Q0aSsF$qgthu@C`BBm%*_nnfUaXppU;bt2s}$vY z?T8%S`ExafW>wZ?KlpvR5~Va#0WTQ=$UUQHZp=p~5{4lX_`nc(TLofg2cP>eV7PA! z5xGhNeugEq{h$H`lbHJd)sS2(BMB&4ThaX82WO(kz(J1)-E_5;B8GNEax{vBp~|{T zqSSU9^BCY`trV}&^OiV_pRL5}Wl0`+JbDN}V&hM%avhovB%RQudicRUaCGMFE#1|4 zlK(-WB#9u>+>25iU)fEA)VEdt&2X(7{;AewHdR^`d@&2xp4T(_Z(vLSkH}24D=)rz z5|xS)=eYaN#IVXj`)CQ34~JYgTYCA@N3}k@s)oBKf6CovqYmpVNXU}(%X^gkZt5n3 z3rvRAh7W1oui>3euvki1_)R527@-A^s7kwLeG<|qS?nwQy0)e6VNg5D=HcS+7}gR+ z*<775TAmQnxR2k;1f8L+Z-Nu8A9>6i)k_i z+6%}yp-bQuYdLv?532ErRC3VN-HJ?Xrk%$T$;Y3I?Ww~ht^i}ooC6E-Z!S_VEojlz zx{*uxe4>@@vycK1-YyctCy&@A^jl&0R9!X*P0uH5xU&O#gfL!cfF_Wvl4Pv_?Z^o58n973t=?0-5D2f%i1BzEM0e*3UpipejZLx z#*BUp1hSy0S+6TK+w5&7ek4;2C-YHjJ&mk-)O6b8u_{_EZs@Nf^~Ixg z8F39<28T5c zc+IDU134RCpL!Gj5cs{#X0o6=ES^zPAD#{NzE$xW-c-qTi+88VBF4bD53xdH!;_nh9?{EZ{**DdVRIVH``ZdbVtI4 z!>MM@YOZsD#;Wi_T@o?zf0vvXwqvf#<-;nCc5?-bjNTsziN@+pVyL3JT&Xm z28^H;_?AWqGkj!~7GY@2&YeR^ zYB}N->R~~H621i_0`P}&qA!#wok5BcxIucym6e#H5q5z5T)@^($3KHiLo$V;o{ZAs z*5IkKMJvblup1Hm zHc1UnXm&jeAq|6?w(PeXm}kFG|qzY|L*;lFjje;Q;K?g7tL_}>?P WL-f?74Af}n~T301Rd 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 literal 0 HcmV?d00001 diff --git a/docs/images/capcalc_set_su_modules_output.png b/docs/images/capcalc_set_su_modules_output.png new file mode 100644 index 0000000000000000000000000000000000000000..056e64d86689d489fbd718c9b03992b5eaf48a71 GIT binary patch literal 66337 zcmc$`1yEdT*QkjG2tfkDEjS784#5c!Bm{>>6M|cC>7b2UaQAd@ch}(7xCfWUU8hOT zIp6pF_rEi9@13ftf=bcV>E8YJ-s@fKS>qfC_cG#e#Y3dqus@JY#omd*!Iedz-x?yr{zkKv)pCG?!};>~3%~e@ z!UYcQA@{AM*asKDUg{06PXEJ03vk%u*BD+5i%PCupBA5sXm5Oy{=C9VoUce{ zwC$QtkIe-}=Ej4|3z*CaeJ&G6Vlh?<*18n3MRqph;m@dHul%b#NK2XX)0>N6q_?x( z%la#AjKk$V5BE1%I=;C{hez#C-IgP76Y?XhzAA7xsU1HTkH#N~yK=xR4~;eMWPWv} zTfHWQA%RV4F94lS+Z>IFs}(kltv2*9L@d^0ZA`N&9J~*?Zf8{K2ryv6<6aevbSh%Y zKUTIl6Sv3A2=q@cOHpK!$Jx*^!d*N%T{5}IHkssveexqy?3xTGE1M4f4_>EC1aa%E zwgS2G1d#gq7G)is0s~^bhhF3=%o*CV&sIEH%1XYxc09c}ZUZCF=F*Uc`{Xr~hz;Bz z5zccWveqmy!&{6@O_-`TIP=-g8LB~>CQo-7q=8hCRP{j zt+(pC*^NXO$EvSf&}&(72Z1fC5v7(m>+UE*PAh_TMf*{X`m+w&D>h@faX+(uZy<5O%8+{+#YgVukLf7q1XP>P72jMtpDHNIejOP}(6*MJw- zXZem#C7~IahlQuTq^iZZaL0t4QNNaw-%Uk*0cDN=tAvDqLF021S%a+MwVT3${B+f# zOj7;5CgrtD!xc33C%+rZtaTQ&Ef}SgwvJ6x?@9kDeQguUv@<{3l#QfyU$1>gMvGbd z;fGk=P8sPw?p>T#Po4-yj^8 zDbSmx0__tz#qEYhsa+fFzg!ZLdhzR7-FuKAGN_>C#3b3d}^#!6@3io@eIgV)a?d!O>LQNoQ<(RyHSLTws@wNe~l}K@2X}j zByvEiK(umDK6lr6?@?M6(B=QRp^HvaSo7v{&t5Ba!n;8ibH`Rjvi8MTAgSUDrz&zA zA)LnWSEtnpBhzDu1;!N7rubp}1o5Jywpov>rw|Vc4tT<4J4+|x;C}C?;&2EgGFF+i z^T;YqR&u?k+4ETbmV?mr>89JP^p;)|>#}S*(fwD2JTAoNPB!PETXlGbEF^e3E@ybF z!PScl2NpzHSkchTvUh4!fq3H~VVQmP^es z^R&G-%x<~VY-D#L6Sly~$z?G?M-|}Km|JH?@89A8kJXxY&)JYS0>3~nwaQQEi4`Hm zMpjEX(9BOi7%UUpHz4$dZM98KPvd44k=37F>r>T)kBTQ8?T3v(B$W@J0vs^tWdur&aL-gko$^J_eS$B9r>N(1OxMc zm|OId5eMY6A;Q-a>rIpg%<*i-!T09(Oluw45u(@Fn(jWkLW+5eJz#mCi+6~{q`8!{ z)*NMMlMv8HKOE2J@f8U8B&m96fiIG`6dmUH;b~+;V-Z2o zBoZI#SHt}&n88{*O9_Xvwip`A`w1w~n|S-uq+ndVOnj>d6Lj-YydBs*IHU5lXKp&*y)|X#=G(ny-C^oO&W9kyB1_;+W z*{%slk%5IP;;4K1-+OOhEIKZPWAyx2UP?X4O|D{-YnI&n3On+JW+(MTNv57F+hB)P zM$O^ca(wqHs;vChfXG#1X!L#!EWjh@vfy10C~QS2Li>3EYq3+A&3UpFNnOWGnyWr5 zo({K+wj83m$|uJ$BAen4s~C$O8&E#&+~?{XSx~xJ@?Lz1%7wBi@9JGKLG}4zTrljj zais+6^>)rS%em5!B&nHV7)b$&tZuNsu8~TX2>{(V7s=#oPw~w=^sU-_B18`wa$Sq_ zmbV3RB+^(XiYPVqb;|mYcWn`Hhfc0blE$x9gzhvd)3g+srST_AxvsEzKV!i*x=xBg z|ED`K$qSm_Y(h#Svij#y9ePHso+q<%)kyuU@vwYV<3Z}bOWfsSg^^B;#LZc0)W+Cm zOd(0-e6m=tR_HkuQ9EqB(#lc$$X66ugeDhl5E&k(0g}nXtyQnj$!hiQG2-jFs>$I zgqZ?%d3O3gHFtGn_@2e+l74jWZJ&PBH^51FQd#01>kdxtHi$pS6q)Y8C$Pr~UYF2) z?xWpIk=Vmqx7Nu^+ss_pxGnLn^X})$p&5gDV(amg9w|9AHRhaN*@0`MucQUTIo-fq zEBpW(#oe0ElJyA8#YvTBIbWvmK)l zc(rflx>Rt@?Rn`i>V#|Yc-atnMiF(K>|S0AyI`GNH&Aj(-hOd{g=1315m-3Z?=DxK z5CnyhvEB-W!rp36CGMsx?8Y+zfVMHbYj<=TwxW`F4mcYjTW`j)>iNY*EGHcAXf$@e zJ`GU+?rt}Q-4fQ9G6j^nQ7L>p+Z_GLE|<^SE3Th?tQ7Wx<*N~NpTyqXUYDj|PT$e% zAK>~C>uo!Dtm6g}sY*kJe<#bR;y%|{G?&CcjJVy(d}&D;krX%QTap|-#?Z=ZxyNkT z^zj+KWge%+@`tRBE3-r;M}MW+?Eh<7_G6;=_(KEtJCl4&)n(!SH`DjSezcu|X!THL zzUA4o_T8EGz7MSC$M3lfi=9iBTORI1`s6OoR&8^Ab&`e=Kn>I75!q)>0dyinc@4pW zN>-N}@h{(^f9^M-?_eV3X1;KSIo*UK#AsY9Wa;oSEJ3;`h*Gl6N%hPseV1y!E1i^!G4?MG#W_Fsk@mQU)+F6~Y}h!r)A`bVH--Xq_DjxWMW^F_FD&pg=lWRd3&kV!PQ7o zG75+e+B^4GMRruq7+&^%4K$lzU5RUS`3TX|ge^et5^O(KJBx2WsiD4N8&AkXlmD{> z4afbc=H2fN(=gs>ZwIW9W~M}DeDdFNkVS3erd;3R?;n)$(mp&GM>;dRGB$gc5KqJ8 zxDJr5?Wak~_*8>Z`U;uNqB-kduZE7c!&NyT9~sB|Qw6Q|GZOL{X%Z)A)DJpps3uLn zBp&1y(D+w_-@?NLsi>+$eTMpG2^{_nCeM?;*7xrcRuT9rodsuBSa5Uig-Q%Q>|DHl zCMA8!?6N#ZED>goj`{n<>pU1>Wdu9^a0}C%{O(`#CdG+C#U3M@>%H=UV#YZ`_+I1t zgon+qO7<&Vsaq%yok)%tbmvz~4)0`zRT=2X_c@|=l~h~a!=+7VxVSL>vi&Hj<3CFM zPNqHiv5*YZPu5pgHm#oFGE!t_^JRoMovN#6y??juxJ8XrC4foPyW5#OG$*U-uPWgq zpkOP`5rUcPRbXIQX)v}TwR|I#bkcs7ZIdXfGAySjpFZN5`nxcKrJp=4g&B&yubu|4 z<(p~-V<)gfGZ)h(;&GG+Hk@c(3ae`EyDvWX%Mj+?Q(Y);YL#}M)EpIVT_&>J#5ox` z3|J9{pXdE4hHvw4k3l$ENkj*AUvDm_ZEu;g=vBwv>$$z&=TL zVQ2^2?jwJ$b1z;mA~9xMT@^21w+ZhWNFRaiTY$p+_`dey-$y(2x{wz-LtsI!sCgd!`1Qwhabnp zq<2OJ{;eTFRmP`R3?v)Fx4T;`s6Fv2nx40wC-Nu}bKWZBDk-^7w!)h!1}F&D`r9bd z`0pw4d*Fg6M5m+IY~%gk19vE#%yxVBHsI5drbklTudb+nUm%yyZ{Pc9FUCdbEqbHf znATo29qwB`0lLjcW}(re?|cR=n?T$nsFAClHB1I{Nw65{Pmxg=#B@l7$V>AxxG?>! zx|(wqG_289j?Es_FYnO9-*Jnwx#XL7G&DARRz#bq((%{ohQr?IZ>ZqK^Z#FL{13G8 zPta{;r3MpmX1GiF&{!ECvO3)g{X4thC^SN{4g%5}$hbRQ3MR4D7u23W0&Kka_mL|< zrag@*_fjdGW$%>5eD_SC3(MG8NUGCK$Iq zYu?tn=EL!5#!+5D3Bg5DMFH>EcG_2@R{M+H!)&4nh7!FhlSxKRT!SVKa4_Q*`Whc$Mzt4ZA&3IhMeiX`9 zc|+|Xxh1vq&J2sUPbC~p(U#i*C^?>td%5tviR}$3<=SeZl46jJTSw z^JI6=mR1C=gMs09y?sy5_L&4;GpcB5Asc5Se`{>?J~;V2)Zo$f*Ury*B>&VLdcxo% z@EwtY7A?G)Dkm?`zI?Qf@ar0}v>7QZ&TK>_WsL{g#XTVH3WY^PU?i1NO2Pon#}2-o zR_`VMSL0`@UH1`mJLEe;=#wt4ylHr5?T?fJN$hs}HqJ-eCe1%RMD(oMe|gg1@yn(R zK~b6IXry5wxy>yO56VOE^_A;US*3WTqD{x?r%4TToZpD?xXzv&fG^K& zboLT1Pv*g3(iN`v1RsNcg-i06@ty!vKPVEDhkatfmQ+Mi>b{pE<7$+_NBgdW#p*6$ zVQqb(CX=667x4QdqW*Gz0qN_rJG?ius%2ywwx_&-(!LJ&D`z65uJQMa+(-(yIW%A* zliHvhC~80%0|M5+5s~BmWwS2&S{%v?ig1 z#oJGi!{6TvHjtww^dE+t{``M4WBu==^8Yufu=yP`ZopEB@!YCEEbvy<+<^y`1fR1M zRAQ{6lh{JZ{gdwq&ipkL{fz&P>uAxHU#k_IIG)LOgv|mJJZ}*$nh9?9hc#2S#9gZu zaf@Ln_2KSf2`#7N6@NhQhffSqlHuI9Wi3}Uc~wM(i0dQkIh0;2e-&EY{|xn|ga5O*jt&}TD3rFc zvP!7u2`%0iKMu{7qXkQiH!+!rF+&GegWiV=B+R0)JxpMknG!o{0Mk7Fx}cuHHso0Y zt$;OsaZ_te$o5mWQkE-r3(S(VPr}+?UueFuQ0LP%?_$%9#^TI7H0QBM2ykBIo|Wf_ zS{Q1M$0OPDBp;faI7g zr_7m3KJx^z{Or|=Y2DRNCG-G(J!R8Oa2`Illt$HXKWKRaVcboh1aK7!+}uY;!ORXc zTX*pO!usvAPtpQ;Yu<}x-1u*EpZ-(>_a=LL6zKrMzJFyPa3XXV7BPhLpU?=NUVgw797z_+Ze%eqY3=ZAWIc%-r z4j`VGB>wwi!-Fv4`7^6d3&p%dZk(>x8Px%z6Xo9xMRihHYV}#23L+d9X+{#zvSN&T zk!!$#8dwV7UHm#|gy0&A-xm64JAk9(yDF}qV%ekuF#iftu}kljL9)HCdODiXm@N0H zUtX08PoQ?Z%F_NY{d$gHTC~HtHoW=Q)=f|ezIw*-kRGJ!E(Ey-%WIRZZyZd=#X&{b4PVIu4 zTsALjT%cwwfkU3EbpNgu{Cv_At$5{l)zo|lx0%`^79 zyRe`K-+R|I^LEQOKG_Fx8?J%+(*IrH)|XR8DH*KDUe(sz+CFYLdV9RGF#43unCSB# zAY~UUhrKiC;{4O!%4X$=liL(cCr-`VRDOvPT4a#%`lfSJjxf!-U=Y;mRDr%4&l9{#2Hpug1$g)siOhp%V{=K?vs!H$z{8xOcde* z)14ojJM1p8@vc_zwnH0?r_XOn@9y<0lh-J|y29UtQ{1ykFbLMuDRC_*Pxrrh4*4g4 z&+&u-IOnf_HSk&zGU7%F5|7$9Q15dtFG?=C1i#iJKv&+Ze{VmyFm&q*vbg~ry6M_Z zcOQZk8tR$QWzMYd&2#GLa$ft?6Z-1Bhp=%lE=;Ly=e;~Q_@1EcWYn|UmA1>d_YMDp z-uPlTWpuH?ZG?1c%ZL>%3A*uT=H5`^v_Dmg(grMR`?E?&N1S5+WcRR^;Xirx{|6EL ze}8LukY^dqA=^uxL}ODwXAJ--%jw zQwf5|;~15-my@vfpX@m{O4}5m*aVMJomM7+mF*WFtPg-H@)9S zd$wl9%!=8Z|AIvOXn5`&sho8q$EOt3bj!83@0{KWYbS>>ghoGL1A{X@1$>%5r*TmS zw2wjH#C;`1t5_~rb0c~aq^DTlDu#7Ev4_l^VyA%rXm z?dQki@2ERW*5BS6z!zz)xV&c!Sc&#XV3z`-Q^K0D;YvO{?6x||B4|5nxFs3t-)25F zyb!yq=+Jz!ueILnagG%INa<2)k+|hw_59=^h{e5#DS8%)m-)c?u%r!QG%uqpS&nfw zXul`g7iMh~Ox8@@_hnaV(4)!6X1+#I>1aF0_8B1nZ!}1eW!ZIony3*(l})vbZYei z@A>dB)o{5R(;{I(`=v7)0MJq%XqsrH8B@)!j1wBMtz)p7#d3RnBiNl^X;xNAH&DjYwbcNdmEB>g!b02(?woiZZ5Jna$ zjrs}SrzoWe?1>}o+K^dFfv0U%03>`ngIU;M9l~jVV2|iAE zmU^O9_vGE-X{$loPR|k+<4Y}?N@f5rJhExpYz`z9C0&Pn%APc?Lye)H!53mtGCat&IBKL$jet4nK4V zBKMfWe%Yx~52X5**41j-g=bI+3mJ6Mf&XXy*;OQhdL3T|d~D($7j&)y`XkOElnusF zSXl)wmLp!Q=KRxYUs#^hzTA;8eC8vqaX}0Msn(XPA_(k0C!kd1(`bn5Sv3G+{3)2z7k)0;vLd}a2Le;bkyKVsg(TCxQz3n(-hVR zBC7f}jkagJFzc%hkan2D#$SN{*sl_se;;!`{n)wwd5#MDCS^Q9h_#vO`${6V1=gxg z^DM2BCb0Yd`~?Iwov1JDS+R<@I24nnp4UuOTH(CR3F4saO zKQL^TFB&^j8LmF%`ZjuHV;xfZReKzw`ATtb?e2cR^fN+Xecdq}z0gbJHEpxK|2=vsY^C8WR`22u1tdx68_Wwf?b`N5biK^D zlj7e7fDEple~J^+;q6RAaq6WaQ_95BSPb5dXW{*@PhP!w4F1MTVfaiYIkzr09>j)u zo^~7B-xO7s>CwRW*e%GybjOJQkAH=k9XRtJ;H8s##via%4x;y#Dr7 z;FRr4XuG!ad${jJ^ks~$Y+k%>$+SAkyU&2xz)5ei5`96m5IXR%Sp;?)o<99`2+{j| zeIpRMfCY3Lg-uC9S2<*+?Z-+MshmP_24-GCu|BuCU>K<4I@yDv^dFzV_3)2R@Jwwc zdaw!2`n$f2a^{o-P*VDY>9LU(h)%;UHV8u*w1&WT!gbCgyn$#SFD3LIYhuT?Z&8UA za989OXCg*+r)(rpeu5qukB3j`#_}EpfTMiNXo|80MQ;~Ai@yXA_Djd>;UCo)ra3Z} zocDv8?F~~wGU&%A$)hb79Y~JHbG(uqNL5S-6~|ANZQnIGC*=|vF2pYrvqYelfXt-v zspiQQwWPS3XMHRA!Th0p&mzkD`UNe*-&OWO=gd#2ma8*|EhQ&LX$r@EYnA8tSiY>#Lj zHQ=uz)Y9x2Ta%cVHL#FX7rP1yl9=Fhjh1^Xa(-piDvPDsSCCj7Zv$@_>IcHuoJmvf zmpn50?}nchX&%ZQPRop#S%3ZE`4x21aq)wIR}E3V9L9io49^9JTRMW%;-tB%Pk#*( zup$&|fcXVFb8m^0@MM z6OQT*8@W=X-MqSvB6N{#$fkR4$Fm>8x{@SpIO<`=toql84l6dYg)EgQg2j!Oua_UU zmZAQ1h8aio+B(g-Gzv)+rJAx_l2t}>5q|CNRdHx$sgOwBQzUgRlm{w9S7_;py@x)L zuT(R0mN9C`62hTi+KN+XyMk6`+J*SBN2ly}qBE?4&p@7_+(fBDx|iVC;kCD!!&tyK z)!)8>mLvnEltX5{J^Fj%?E8CEYKv8vrY8^ivl`20(HZx=I}UofO;CvU(<^WOmNJ6L z6115Kla>M=Y>D*pc@?q(&uearX-VbCnZiT@>h48$-jNY%+fpy<_^!tUnb^|uAL)ot zW&YNY2>Ks|hgiBt;XxD%6COmNe}spEf9ZlD9P|{C#%Wq8JkEc?f z8cX?oMBm-rF^UYDAHc`yzZJ|`z8l{;V0S{^n30fO0+27UrowjGF+RkW_|4tVORxIl zkjWnOwITCG9!>7+ox2OzV_t`!upJviKW64TW0D9it`;%v2)AY-u*^V7Fo90@l2I4K zi?vIjZ9M)32^V1&K1*Yl5BM{2Z4F7D6tjv7A`pgkhTYDbyM8-Yjo-#X6X|AVe^Hxg z#jfoE*|P1De-&>Nxc*bOZkA6H9>aRng}cmREQ=hIkM=y~m|cb0Gp8%^9baKfJHxvS zO%YN;O0aQtJlBgV1%s#8U%~$dx&-p#uruEa>=9Q0*`5XMk0xz)mC|#F26co8WX^LTyMpLMs_5NsZ zSv4N`x{n9L#$jzO?Ms6dg^!j+$E3jzy2krBw2p(RGUyS^!|0x!^MY)AH*44B`OA6M z|CiKm7bs(Tn_xq^LWXs8zVu;Sr)x+;b_`*b16bG;d|pF=@!z*4yYRwa zqKdy8@JT8YKjlZ@E3I12cY}NPZlKqt1KenQFbbz0F}3mSoBs@L!kkG zQ);}^h`%8)x3Iud$li^o0e4-`MbI_ub2q;Q@R?qZT3btgTc=fTk>}Igm-c2!Q5v;{ zW%}m7W{;yjrup+85_w9k5V;R!BVT&-Z}m}waIs(qznGNp^==on?+UKH*v_t!-8<-G zQN};yKvAM+TyJxGC%Aqpp7%0z}(NXkc=8}beKuQk^fVJ2IX;{Pt-}kYXGq-WtVVTWuv#I;t z58nbU$cn)zYOc9ijflAC!?p*mD+@E7J6|Y5U1yK;>tfi^ zlAw1Je6T11SY$37dX`cAhVeb2e9yZRLi|)gp#?oYf&kkCMdd*Av5&8Q7L~WwuRUva zyWQwK{(zP5KwUEz*hLRZVH;$~Gy3;`AqHYj3G7Xia%E0s;z1^i$z_WTW6WoDBO2$r z7zW->2{D>^2Ki&~I$O2P&1@biPwMuiN@}HzyJ_)HuN`+&>l@tXo#Q%W)c1m zt%0P{o^*%IQNs($!yhPD`L}&EI?5sE)Vac>O$-J5zEJs6VIFA7NWM8%UP;esv!C9s zXO{+lXyoMnhdUn;U{(Uii;xLNFz7 zO2FyQ>|nj-GuEuYQ(ju#(EB(4K@Zl22>ZoV-Z7g87n`TYW3>&^M^E0gxkz=u+Ut@y z7nzcX1X^C{WY8(XvCxv`AkDJ4x3BiPpE@T9%4fUGLr@(yUs|$=FbK*hN0B=zl%bhp zO^VF23m&3=Qsqq3COeb^l{&9efNPeStxN(?i$8m#LQhhfOsy4!V+p!W%P0AHkbpu~WhY9Z#AsqN*u?djwqdRD}8)zz#G?eBKUF9)Qza)W$AWALPt^q;+yK`4Xx zjhbJmZCj!A-Mqy0^;3L8Dea!F>q7sc6(_Ct#GM-3h}sbV&Waa^ec=G$l=deVa#&wq zkNmZZ4)<>n{rMqU_6E#!>CP%#Efo`Mf@$u*h4}eLA^xkVd(i8Nd^--PNZf5uyS2!= z6RqJUB7rlq+u(WF_FoZ%n?!-xI^=)cw}xAp=x#U{MelqOv8(#{Mcb4kSAl`grE*$&J9n_k1@R-0 z1SpKHyVFW4YWsE>UOsBKd%wTeqfMOu0vMw3*xBMS8eT%}kFsZF;N3dSLN>oA|EcilD9kSC$_S3~ z4~G~imYwxi7h?}OuVRf%>VplYVd{K6tUzxsg2>n2ORnOI!7OEKf;drN`*+q32IC|2 z9iKF%NCa5D4j61PYK4xq*itiA`-&895!Hm?eOb4M*ZT`o&?$GEM9v;Q@fwz&4~nLM z3HMNzYd8w=&;6jvry=GeQ&UPuZi{UpeTNk$bDn`PPd-lLt4?02>rW`}a#!_2@Zz=3 zPd;Pdmep135v7t~FrR#N20m2gdkqLB+xdg*3eU;EdHM?!e>{EEr{+ODjh&cjEsmd4R_;y8PNuPfXT3i^yo0^S8S9a)Ixu8{qVylk@U0${__qrol^7|5PEAc5 z{xVQBxfZ!WZg+;wWJc6e*9S0{r?OoF4nwu+O5rAqe zRw@E#UzH+w%|(2z(%5?{y=hll;V3BUIb@HRSbxAUKif}<<`)6PtS=ZMqW)kirmDv+ zhwczbzS;V7ESZf0^(mugzmRSRlyLqwFq|~t(PD{XuEnPneTxebGzNc|I{Ax9jNG%f z@BddO@v`MdB23ShYhe2~J>Qzu9P3Q$PF6ZcIL4HT;GdBIrtw%~2yNR+y{JHN<` z>Z*^&E$eSxYu}ON-9_%D_DQ~hU>a?=^uB;(-O~bwc5Hf2QI4o=ptXY6M9m$Jr+DdJ z)^E5-Va`7+|NEGDG{o3O@o|HtWU+F<0W^pl?iN8M&uthkXz8j(e+pYxGS9<6yl!g- z1eGLAaBX>38H)HheAX_z{8P9`*ML?m9j`KY#lNDReQ4OJ^-^|Yljb+-8@1! z@8(b*<9U+2N`i^d#&Ojw$Y%9Qrkj5$%&&~2aru{Z@hdVQhV?HA9hRh}1A`c>dG6Jv zSdD#^mUt#HGCPJSy@PIg>tUOBZJyr=V0!_KNlUQl;qTuz1R$CbOxAxx;2Y!%((Cm- zY8buHpoeV{r_@AI=cvzhj~ugF5-4-8X`N~_Dki&GB0G_*639BofZrIwUAOX$FcK5J zjrGfWyWEh}ak=%NJ!bp*hfbR0V`TqHLkHGke^NuUr$m_TLD&3V(FxLWxgX@d^hPgn-^Q0&lBW~E*I;;lqRxkDHLr|`d-9|i zdTPa?gi?A8EO=c38H9l!{pI~MksMDYg0_DSvAzMQe<{n7ZwPMuWnS52zpQL;3}%|V z{g~a)(l+W$vY}OTY~JFr#Yiye>Qebqw1w!-T~tAtehGFONhtR_#l~uU^|6?38fWT4 z-EBsivOUc2v~>}NMIAQaI@F`@b=H3lCM;?>SZ1kJQuKCG{T_gbEIA`BZq=Ky7A~>n zP4jGzuN5aNXhJPgPG8mk^%yT{cCd{6bMdkq-AF{1=nBK8qO$V)UD{#mkyoq-&@OpJ%}&c>uehXhu_34g*= zQ@rl0uT8=q@?6u-FA8uGglkRhh7|OWw zNIW6H)Ca8=q5{}ju*oR-=hI_$rhyK*^p!Wa%*qjK4871>B9 zzq4VQBz5~X`Z!jB@Mo+7KPo-&SvN#p`d~&?~X7Vq%?o_U2#SYkGh44zvG9 z-oX^-^&%ugUE~|RyNKv5{EVU^xfd=az8JGPO4c2(y1SvjaPY%)!rq&XyKhdcJNlB( zp*CgLh^|zWH=B~ySCLpzI&oN(WR^zx4U{Rv)US_yr#ymxR|RY0u*opuDAiHCMv&vf zn>vu=#|0{ zt?lY7VhqqN@Ou@;DTJA}INGcl$BZs;-%<&#)46hUKHMD3ri7x{JW=Ukq<7HqH&J6b1mR7eF29siG=tcNM(*FfD=hvj!jnHZ4U+9&4ttD(=jEBT|`~-~m?Y zQ<)5U+i|)G23vg2t$n?uNJDevdRzPNcvTD z56!ARmlGqgB0U-+Q7P=mH3zplf964IsvZ?3$*kKW9|78u+bu_c@IagjlRFJ5lTNhT z(kroB^Piyg{cxafrG-CxZ%wc+ejAk0qEz>L^WzjXO}r>T*|dh0q2zdtvF?09kx7dg zJP>39q!q&!r9W;uY1+lPmDf`_ctsC8pg_rt-=jOQclm2RJFF+tBqdMq1HqOXBS}REEgHwz6Id6FnQXs_$%$mVggr)Q__z zxBRK1##-P%CyJM~s+`wmQe=KPuL_5}Hhc9lU-=Dlp~6`f9jhAdhTBDOo;9TKi@qqP zhCprZ6_agk2=fh}wvFlMU*8P>miD$G^`8_#1-a16^pqB1*7F7ZQWH;~d{_rKnruJI zppcY$-@u(&=Qt}Ms&~8cL?BV-Ti%4cx2LPN<-W1!RxWO*TAtsK zOD4}LT?t0amCyYDeFz6qKe@2g-s7u$ufXQ~%&=|nq=x-#bd2q#38;a=L@ZtJeZ=G^ z>ZfXFBxqA0=07hpGe!lD0FSgq4f&&^*f8jv1BJeMnLb0y3Rt9p9yY1hK z3?yU?FPd;r4B4&DbhcVqWy&h+llKxva?V-Ca~uZRSEbGsm`I$&b{=0$y(Fl(;RFw( z_I$H1AlL=n%AM*JbBU!?Vs@+kAv=FY z4nB@ozl#=BVRfEfnQ?_pOYqQufnR@X@%i`fYsvP0-Zvk80X|ev?UZ;qwMgqSJ?ZD5 zdB72H=zx~2-dUwy)M!YgIJ!ym9I| zgE!S8Qn=@r4uBEN1}twS;hzy~DJDRy zF>JHSnR1p*(6}7cDWHo;;cJ+a}#_1&wP4YK{9G*nh1NJ2gVem@82nH zG&qKzye#@+Az;phg9DLqB6hJ5?;CZ9OOCjuE^|rB5Mc&B-dv!Og86Y4i%;d4si4O* zrR;SmFn+me@|7=Uzhy^OWtexgfq=pi0*TV<69 z%*7fuG5mDUUX|@6mq(_%QTsX=cE^KUw}I@-u=np=&we)Og|?GIpK^^SA1zX}f~qYc zWZQ{z`3Jp{j3uFV_7r0^Djy_;L?c3oQ5^lDrFBh*Oc$A4+~-b#G^+<1whrtTP3d@N z4$s%1ucf%Fz_04_Jpm$}tLI0xzE>|WoK-q&)>k)F`EGHXL=L+dN6?!%{$?^KYj09M zhz(+Z%|o#=U=-#9qs5++=mA&+CfG-$=e}?At3Jq%az~ujtoHS@w_Od6Z*m$p(TX)M!h3JZwKr&GJvK;)`4p)cz?&na_S%#j zW8qTe3J^END-v8?p}qT(jmyNOapWoiAad!nb1A#>lQ{Es(h|_fBGd$gEA@}3n9kpbb2I^lzea68da(q@}ycNj7p-X;a{|@Im~Us_xf1Y2{)!&%viRhlxEk zhqBzww4<0T4!U?!l@vinDa&V#Fi%?TUXl82k>+6PZ((U}@HKfsHMCcfnYAH!NNPWX z)RW1K7( zgVz%c`d{#1tz%pQEa!^0idy_bInTe(liP|5q{yhg*o@g@rhuWU=0nBizibxXjYpd$ zMQo-NeT>C@@?J77$Qy zd%(rjf)z~Ysy@rtA-HU`S>_!aw>re&90hdH0sDbfkffhd}@275FzuMXe?yxjWoOTIu*KJ!T*rY7M~{ zx5d;qP!-Y{*Ic%TVfgg5_7K5Qji|qeCCe*>9%m&LU(_iH&}=klFOFyuK`g_WEiB_g`VNU}v)ShZrxvEGEPnFtLudqRu@sjeQN{!Tii+EGan z-K1(qnzbJJuRC(AH!^N}?MOtqMGl(vAPmF!-fYl8iWCzR|JVP;+*?Lfxi;+D21u7k zC?z1>ARyfWqJ&B}NK1E1cPNd(q$C9CPU#X5>F(}s*w+Mgxt?b|d%y4d?Qe`dhJU96 z?it+kypHoYx$DRTQxhXQva#8^mw*y+_UbVbG5~zEp~5|GWcn zWsm$DocryMH9CYj(>BN^F2bUyLKk7IWbxm#3_GvTnNr%Z&_hCrXr`u$eF`F}L3`CI zqk-%-;Z;%aB@&7l&1SfU?-|Wtu0!9{%mT!W0jN#Ef0knV!|qMwyg$euvckW;Br?(w zg4H*3ki3v>krz%KxG6Stzc#CC`$MVfSt0TCyTk5K*K&C1lgcXBwIZ7TkUB$X)EM-_ zK3yob^C(o`Js{sOn3xdVKfE9qf=mW{{@67G?y(faa&en=HKI<3^7N%5K`YGWcPmV4 z@(1Yydc{YN{vl{<)9WJ)oDAZ%Q*BIYoN5okJa1ZCy3xr?G*plEfGRW?B8q{WOu+Z# z9r*&Xpf8ePzD3*v`u3zW1%mNms5&H-6ak}nOMK7ukL zu6W)4!I0$wQv-_7mN9SQ<{I1g2RquZ#bwnQ9IvEV2&m`!+cv{8#HY2tzOb+K!7+VM zuRSj^dTIYV(fc0mj@?iI{L7CArJ&*;sYWxa@>zG}gZIzf!o$ zRE|^G*Ih(g+1xR$nCXZ=EGfbE+bgF1g%TKjZR$zbbf&(Au=_pF{D3hfR)9?`pSa|p zIyx=5$}yari;@w(=Y+5?le!QyqPBuSl198Eap zD5f0$ha(|c#3xCOR&N$@9x~9VxH|B*!H=(IW9_Uib)mVkkHCJ!bUL)|_q+eBh(`>tSPoP^ z$WRum!g9ae!+`hIpov8-a2;JTCq#K>|@#c6OS zR+9eo-hB)6>LQGkLP<4-5f_koXEAocwjW5xEZC1s=1RiTU;VjB8xrsYJ;*(3W!(V> z6a9Mfuz-T7-7{JE9NXy+345!Eh~%O@-$<$ilN%)iThmKot`JHbR@8zx zr9j$jO@kd`lSg?zoLPxyjlwxAF>yXi?n+Un&7S9&a%o&L_)WZua&OSw@?rxuZ zyZQZ~UkL#;psFVuS9e|C(SN(#e1r(;w2#^@lO7GVAEUet94u~$z`;_v<8gm-o+va_ zD$530b6fd_OAE`GVg2a zRj`HET~bZ$*azh;J)aZA!TgnuSrq8$br4V9&HFTV*X&--Rirv^RrVAfKJxI1)1L~P z@QVDSC$5=fmz0pox7}EdOvOr!k84pbrIu5;K9ysC8#qFt$w3;AJL z`0;p|`TpIOX}0KKljDq5q}pfT>`pgRMBj0?k@&KvYG!6sQCLcdXn^GO{SxAS70!o6 z(x;rA8Lk>nPYcCqJ8898NqB$0gfdTjR7XyjD($~gC_CLvsYqcTRtc|;Tg=r$u_a7C zxNF3L=rHiGyd-b_P@`%gm4IRtRq$-dT-HQ(S% zYDo+F?*)!!C8A&^$AmhMaU)*_P^qzPzCPbx(Jz4A2RE*5Rr91D3J;_^kh1Em#&PKf zUFeAxN`5u9gvucJ7!Tw{uD>zcUv^z-Xv}9uFNmuMaqvr+xT$-)?g-kxJ^?Z2vge$l zsf{89`TCBO2qFG>`cOcn_YfQxYakZovS=kH^HDh}2bOA`BYwya)foFb+6gxMLTyAK z^?ej2k6P*#!R}1qVsQdwP<9-@7_U*lcx?wC0mdu!E-?&D2OcWqSMaI%@QJ?IX&vTq zUH7Z&fLFkgW609d(cVw=Qw+t-U4f!1VnFIfI3SFlmJ?MSzB*nu_pl*~qs^G-^ldJ8 zgwHM3+zv%!&Rq>AD8i>#Qej@Hj(Pugt%Ki(D-LdOw5NtIl1?i1`0_{cg5+u8ij=WD zaq@X;&dHhxI5iJcVLvhQqNJh{W-HB_8bDgVDJ#0*!F4N(#z?7UMc6Cq+y z`5~|Sg43qnL+m2uqT`rk9`P{QQqx_@#o756`j#;7dw0yF;Eu#Cif5pPMIzot!w1wV zXoWiWItUTqIwCzcjLBToT_}D&I*Fz)%FpRiZ?gjC^5s#w0(i^^H>W4BUA!pO+sI74 z6bqE3V=OKBs03Qi=nn*EsRiP?Olf`@J!eG!oAev_??LPg|KBx%vI?9vFSUDb$?j;S z$q<2509Qgl?FF2Jqmqox{^4c$G~bshKCV7OP}fInq|N9J3fmH!+$!Ld-Hl@+@P~^F zt=iNiPsd@&PJ}~k3&}j0>r<`TX8J=Jy1Aezw*@j{O{2Wmm};&ap3{e`LkD)#`){?^ zjrk0Bdmn3pUg~cz)Q8k?p;#k9>fV7DlIihLj)X4^_#o%HKc%7LDGmu&&F;S?)vqHm z2Ufi1@cG|=K7&^3s!SG?B@s=V+nHui2Sy9XHX9eCI_=lxj_Xm{&Tr{ptUEv8bF`l& zR&xzCbja!xf)`ifSJr)N{;0isjPSWFmTkhwRwu*hw2aCZoZvCCdBcxY#$tv#9tY7^14DngPPZrw2hrPb`uJ?Ge!s+y zbDAObCuu$V5_kLf^c?g49{-BdZ8V(_Z`MkrEHUq1j9xIjr6)QAiH*uJ&sxAk-zTL` zZ({VOQJkKtzu!1g1OVQKLS#>bC@Kk|3!6YSE7Q%>L5%QK+#y!_5;k(i{A{eg-{Gdg zl3m3r_qd|vnKJT+&i(^f-l5^|PF+*`g@^#gE4@~w9zUB8gNd4J2wdJPy%~eHXhvzQ zHC0l=osYNziGPE%GWq_^QPelK(NFLz5Uc@4l+9+NqNq0{%G*pmt7&uU^d-)l8gei0 zyu5Vr+WbMBZ9UBt4)qfKD(^werN)FF5T)YM2wv)4)E1-4_jwdm6+rXNW7$EqE!n~U z0iG8YyauQ+VS`1ONOqnr2c99jL7x?OHd9>^d8b3dogI^(jk%tN zU%}_}^2X1Wo8ap(dIfJUv5rhl(fyp5Y#F$`i!XsI;|Yu z;32p2Qj0zcoKI}n5Sn_0wnOTfnvtk`f<5%wnpAv}NzR)2(qF@RFFCsct%RYjrpUn6 zYhYB#oPGo#;-ALD&&;`4<@U8MEE$c{o$=}3A7j#*GOx!#TYxTIBd6e#lA(sqCZ#M7 z%aYzi{i+36LMP)&y@DouZsNNOl23IRd%{|Sf?*OJbL9OAZ$0=GC|2hbl%Q+kO3;wE2~+0VKT@sl zib))4gM_%kN=q-iuu1m$b=FAo{EIXmIM{t+wzP_#GqW2u^x^X4ki^b0q|soQ-2Dr4 z$AFVpGOnR-1?Wcjgv&DyS~nDsPj2{yD6(sJ%Rladim*_J4$p_8-##7QSDC{a)VAvn zxZT1p=$`P<7ZOkgYpvg1WSNNAxrsXEJQsIr22-d(B@vuL);^^C0Q#|Bvl|JUb zDt#Es5U;BCVIXAfU)K!(9Ovw9;Ee>)cRx9^+Wj2cqf6a8N4h@o=pYpUyq=Kp`}4QY zHjKtz84I+Am-Yy!X2H8bJ%h8avcKf zElV>LPII?PrviEJA?X2IS>TTryA}!@0b&Lz&J&r4__!hj_ahEpW$BKw70ZWHBaLa@ zO>pGvS$fC&>b>|lH?pvC`%t-{j@uiGz;O#{BF{k6{L;^vyfXot{mmv(djEV^gBBWe zT}-eVp~@80Phiq;RUp9&Dr->}UXv*Y`QJ{NZMh6X|;+X%EAI7FW&n zAjgQQiNYTkA&m5$n0zvW@6sdBLNPnUAAe$Y37&3i*$#4~73?S3X36VGo-dN)Ka2li z(8%4BWUWX4L>QBEE5!ui6x3{h=-LZ@C7$W^=h;f)&EW_}ZO#!TOd;0*EMfs?$qN#W ztg5!6#VdM_nvMMQTd3*V=mVhwTWU;38P^8^d}3*d!Jk|k8$t|2>^LN()9>wYZXHcI zOol|BJ{@B@)EHTAx=`Y4Uy>#fIAa50nPTMq&8oX+G}v>QaRoc~C4@S-ZSy*?=Q0Rv zJ|kF;)wO3aCh6rPtSoi$%HdWf!8f+9_9hcdV7!pmJHk6JL|wBxA6bX}d?fiL%GXM0 zx^FuJp&z2}l$-%ud|-bDIDX`C&_h@_^7i1*dtS4N`dqpFy?K{y3h~Qs!w;kxO(Q}G zABDMs?)2(Rchwp_3ANGu!bSD2H!y4{f*ZFMPnA~9H!=9hUQ3ScEM~|i==Hg>MP6Xj z0MTXKnTW;JD{IDG=^LbZ2JHg~UQR{1&oT~tqk3VART$9H>|I9*pT-!%s@l%_74)}F zm|I9-15Y2hAA+G=U>zO8DP}Vz#4lHxCOy&i(#O!cZ1mh;+jYNmMe!wUG2xez8>t`$ z5>md3fsnaLmYE|vXMdIBWc7{Q4DdgGKGIT4vI$J4zZd1NCA4*8LL^7p2m-m+*Mmlu zM#@!t!(Oq+6!QIdBhHMnoar^T(M98m;tLCyVg*M^%`n6C%+_`q{yNt634=&2Piu8| zqbGL7nop_-)9&-W12mjPJ9YfuXt)Umz0RIdI&%TKiAk+_Q6xiFztP?KFVX=glvR<{ld=up^Ga0bLkG@(cP%KI^7T_ zF=0g7nfEJjnmOFj-tr^-rb+DxWcKr$-a4=@ZMR2Xk@_Q-m#K~T_9#+}VcZUhPRyw< z6RrO%bMc-cY@zB@YtVPZk1(5TmiaV+mmwi*lKVXiwa~Yj0#GuXcE$+=1cUVkOFKGA zGYypsfhn8Iq4H`zC$S`*h8P`%8bL^Ihn+q0!cwG>4yeS`8CYE0vkp8x2VyyiUHqeP z^uqC=te2j}K0BTSBWjw&cGizgdvvs0qa3?vh?tNg#5p(rdi;UKd<|Bm$~$BT3IAQJ zKIY_eI=L>RQlQ448!ZHRo;p?r~RqY(3`$9$jG8%-36 zFf?;gab=+{r6dsJuP?cHRZ^cmpXaS_+bta-I3?Br7f+J@wRHN}T63%u^*Ft{{v^~5 zoVnMD6Z>lU+joChUgbm3y315?;`@!b`9%GJxDAC5dj3S*6u7p05mw$7b^Qm(Z5lvs zTmN4nx7a|liepuYs$d?42hPZr=gxf}IT?$lo_;O8BN6U)N~@K*h@R}OWUF_N>jy6{ zYH6L7m9ntc%HTKQQPN?XSP)AIFCLsFelYn{49sH{(L%xD_SJvkhT0?ATmqYk$(k!O zaP#-yW?*G9rz=pdkJPTC{wFBMi|vr?E?ZRF)Na2{9?RFWLq3?$1SoettbMp-7iiiP zqIHQEMxbBjTA(I;>O+asPuNy5PYN_;Ph1zGcIx!tp1u%0esyjZUbEu$gD^p7Vv?}E z^c(WD2iH-<^TXuq157{)StPkDsqwUCE+I~QtZ+>n`&hxei`>k;zRLISSer}#BP6W9 zu(pp#Ia66O>u$_FR@UXLM|w5{8`Zb*H!AZE(r{!4zeNY&x6V0gUFnPcc!0i`=!o!M zhmS2u!>4+)Lxi-*c?XWhx&%DbQ3-D9PHt38i7No{chk@Bs_FN%(v}O)mNu;J?6}-) z*CDTX=ZbuVefo#~S1?Y1eUx{zY zKPNllEg}dA(x*KCl8qU5z|eATVO@b^i!yRy1B}O(yFH;$TXOhQTAHsUS8oLNo-@Bl z_Lu|wfJE#=@J0~%w&~rFo|K_;t3%z^+^$GoQJF#OTqr!i5KUDR4yQ=XP7ac^h7U2r z-XYx6w-1wnV1<@W<8Ii@?*HhK3URg6vR)wSTc9XG@rK?IdBW^(if#4l?`%+z`4V~M z>~Yjs5c6pxnv@=6C0;xQFxnaFFN&>L^$&{82BZmR@N=?xm9vvq43|d#dUDeBBZ9#r zlz5*fS0#s?4cT(#zbQ^+rpPBE2AKgTv>Nx&cM@Y{=c@My*s;Iwh5R=#wEv+7^eY;e z?Z^?!+)MRvPH7Z1YUT>)zK$Mup7>RVuR#A>G9fm zJMNc9?qR*`4apLN%jr+j5V# zuWWQDOuUD*T%x1i}hw^ep`)1E9S0Jm1J+8ZoaHjA1!5G1{<~s%_$e&A1?2@ z#hc3_;Dq~l+!4P5x zXQH~Hp7G_2EMrj4WncU|S!BzW@_;5c@;-w3@{+#9{JLHE|E>eokl+DrN9dUivgeM= zb1Dn#&%C6#>Nev>PGMDMU3)24-^nDhU82nL#)59iI^n=-bH0h{ODP`q6+B;FexF!l zcP+`&lCWkhM$@>+B7*9pUA{hBRkV4yqV95s?~!45V-r-9wEBMPUz?6AlYq>m2QrsCg{Q6HB?1>0nyw)ZNNpivM}gg?;KbiPrdc67BxqNVKb@25K<=O`=ux%>vA6T|wmX zE0z8KhDD>AHX~vDAHZn%`(NpZ^Gp1c^|oy zHlhjVVJ_vLG)YR4KFSy;MfjmO2KQoV-o{!`dbQJT6KzUJnQbL_?X=`G zZv-Qd9`fA{(Bt^<({_uqeJ&9ox z{+_G!XR2I6`_cfJ=oD2q?CtKJcA7ubROb@ks%+Yrne-9j=u&a@iXipy3g~~IeZOi>Kem@ zkjYA0dSpMCz5T@&H4RzTsr1yo<*;rb*7=MUx&h>K^KX8qC0nT9>1=!mrue@?ropNF zCet*m|7&F0G20#KyR*VVPoa2Pq1~Z$rTXjo?>a39p%}(QCEHa+4?ibLRjdYHF ztpp9Vfl%iGHjY|Kdd#S03*#Es&5Jd%&ytG$ya8E3EJO3WT8<`D`ZV8uWneA|GF*P~ zUwH?<@aWImvtMUmY69|2Jq%&vA>l3?_OL0;3hG`-t-dv|Xim!78Gh!gf(7gRogvtL z^)?T+x@l3a7&Uj(;$R5Q!8A*V>GXR;?q^!3Y70*&{XzKG^rUXp-Uz+vmWyg5pXg5< zP5T;01Bpuui%HwDJZ~6p%BJpHdwxFX-jSrTkJ9vc~B+LiTYrz(iI31+Pq<2lm%kUya&IX)6j1#j5 za?VoF7;DSKv)MYMOR42Ns;%$bdPm}}BwaX0PwRT&DW&c$)0~V1^i>=oP<@qm!OCKT zO7C)sQzR+X+Whfk>5O>*Rhe^LaVPY7vu`=7%}9nnQCxm#np@}<{yh?n7hP$m9s-0`WjvcxB0Au& z5APR);KM9v(AFs7ZLlDGiN3yQFWafl5@B%S{D7$Skfdb5_n_m=A!#|p=#CN9jqVj1 z?kcPn|0URwx{!N)`9p58h3)SRj z*~pRJrz-B}>pd%Ge=%w1s+e+~0S`)ticfJ>&pboIIuYXC-cN?h2AL2~#ngGE2*vIs zsoTq>oI0Fsvpqk>nzR7NkRw(M7r}PBNekcyAbx4lzMW@!3+dx2yqU)sbQbBE2lI9B z@;IA<$3LG!Rk~1x`=V9P#YoC5zNO7-9@koYtH$7KM9Sm2`%a+Qdqck1Q5-rdU|-RJ z-LPFa1hfBl9_=aKHIGI?)D@6-~xZKv>gqE`VDYsnvX} zsA0XuI}4SmVCl%Tq*evv{S$Zy87hK1{&lMcAh*UEx4Z`fJ9mYlc8C1%a#5#~MQ z!X@cDtJJu7bkTD*SVz1ey8VwtJOhe6uD~7sPQ`f*Dp}mg_j$lAPsJ@c%y-ss-cYB~ zyX}@6pg-C108V>8`vLzJ37dJ-X??h1FXc$mBrR|tSM8tfl5-uZ1UG5237 z6j2CCtJ7uk&&OA07@guEnSeto&2Y%hof+`4LL5zxWP737;8uiWG%kKKPB(6j#R{!? z^C{6B{fxAhnOBS7g_e!gcU=hDJI%U>xhEyxEN?Fc^A<%thl*+OrR3F6PsfY|NL_JP!lNr^}h z(}lM}W4hcZz_iIJ-mgq5(w?K~*FP63g8b##(%!w|*=Pr#AG~kET?jdd+d%X)IN4lC z@?vPWOpNO&A8M58i=)bjLB-lxnL8BkOErTyzna*XZu;oGHDrUaPGfn0Hj$F#oD|y= zwm8vMuDz1aCnu$U8fps*+FpC%+wq`OYkC4^Q1cH1SGSOsyV488Va5_Nq6v1_>(tbBTv}Lxh-6%&E$Err|i8d zKg-+Yf5Vly822nX<$ImgK;_s|We0M^VQ>HlroI9q*&B!5PxR-TnEWfg8_|F|?a;_! zf$m8@yde)!qu`;pA)G(dA>S>O9qgI!P_^CR6Myk<2KkBt3v9YEd&bBh`bzF6aanXu&tx)pyUbTusSX4Q7mOFD57h zakvU3mk*NgXA!MGoVOtgd_A03aX9@yzCUAybG;lQUjdjt&4u6 z<~g?=Y#KGCdEKH>S}&%cHf26(X}!et+qO?6c`;wxJ_pkZsP-cJKS#SZ_YlKnP*n*G z55rW;O`CG&n#~lQuxN4-!A2OW##LceP`_xU5mBXx=LO)_f~kD4uei03SKQj}AmL2K zFK$ik#YQWXTkHReTU(^!Q%g=g4dNm%u3mZ>(fjS>i6j~HDFPp}1+!J`Z4|zLAYQx= z;WUhb00i?`l%&NrYr=g)R5msOg#broXTZDHMQnz)rLll|>+LdEYBd(}>!y+@?gu-W zhgUsbj59Y+Wcs%?sBO7t^P?omNH;NvvAAiiPKsrImW-Ve_rD(W`H~3H=R~n-Sq&iA zf5NPT}hU@Gv$UODScF~J(vo0d8 zq!<%AhN;>$pEqsHRbws^0n-+M4N?8kB`(p)tkhjwinna7j|=#=fT7x7pZ09%d4sUZ8utS!`Qp#NRzGlw`yoih-tSw2xX~4Q@bUdU z=ZhOQBDS1$kg<>Vj9SpKYhkBsxf|ADa@;g6^mdM?(aN@}_EPK8u2R*N0bYOl!nlo| z%ux`k_I5%;)dao}XPEe^svWe4Ln?^ z+17@&=6I@d*U1u%6=$X}9JmxX_a*y@a_?j@)Uelvqa{88`v{-;`e83P(n_5ymc6t; z<9rE1({R{B(~XA<gJ#gr6!#CyCIr*n+{qmDeS0x!71C!>|`_%__43_#c#uMjp5 zv@EBahii{@oh)jR78!VIN#Y_cXs!d&+=3`{&JCw|`930_Q4P+D`4kd{vv$^Du(^Sq zv>t@%b9TDZ9%!nE!Gq$g5U@s+Ow+fkHu02*>4(A7^V=*VkQZ78x)@m)+kRKKGa`%` zu0x-`5EXtL%Q-lH^wc^kml8(@Zt*xup&{NUgP>6<*gb(&EQjtba8>4V7(m)gCeisE z@b3{vUJxTfEpe5e&OTT?bU`Xne^}x??+3U_mL%3>nA60RItg105E|MO1Jn<%VV;7o zyNt`*xE5`6^HQWzyoPQOc8zNcwH7()xh#2)`Ih`cdI36y#mOrf8AZ)HQT?iUohDvG z3iG<5{8E?1q)!P;e5?g%WL{xw#6eO6s%X5;GCK{+pmEYULTdvaE1#cKdxUSSDZOvuw>6^EC&S*nv zE( Z(qG!-Dk7NXKD;pqNleNOSlCVE+qnDD_3%D;at;r9vC_zV63Ox_UlmtVT8_` z(I4tG!s6n@1?AN+rE23cokPUgC7 zZMJSvc?xY?7auCMtU$u3G8hcUeqh;5c>pEx3QLgmi#uTECcM@me6n@O8d>z5?Afs~ z|HPyemgB^2@^gYi-Z%wyi332TIlPg_!zU{)f| z%Zc)-eLv-K{-%vqo1uVCSDSNs<0fblUq5EH6zjJzp7cM>P5hw^rwRy|`-2p(OvHgsAw~AQlLL z{%SglzicP&WF?L;SS3&I?dsqONh^YMyA=Mm!1Hwfg9X0*_4UZLn5;`=ub++@`z{@Y z7yDHjylOoB!4?eAEL7S2RL2$g9`FW1s;joqbNR%;(Dn+k=OemAI+l_rcjxs?(0)(+ zIWHVrTYfS`rl)$xFcy*qKLS>fYws`t4GSoE!cTo2aL-z~$uSO}CF;H^GLMiX7}woR zo}oHAYK9s?#M9xWbBq)xDNdT9XhW)N|Iv{kw`bJQJ#+oOZX6u^+mIxs%iWm@9@xGBmFY-_h4gy2=T3B6sGki*IFDd49^gnI?K}SGqn+@*ZiP<&IgTnop)P z!bT5QY(X=9hIK1_rl?UNh8LeqrMFm3;zfA}9@_TFZIC3_UDPuL<*0v1yxZ@XRu;;Qu%+3JM+2ho0(-sINau6pjD}%u}$nJRV1Pyfg@)9iXEDRdT&>z z$^)#)YM-hqWrg_r{HktpdyJ969~YQtIc@DKD$VGTrzheQ(fd<7UWO{`xLLO$K<9BL z;}jBB1guTwZ1D1rgh7=5PmATh#$H~0Tzzj_iR;C&9IHq6g&{w0x_LwM2Cv%SM;jX2 zh;0;Fl6~62cwQFFn7Dcq`m^#xmvGE8bpgm-Roi14=|ctoQwko!w2_aT$TmJ-WQim8TzSpo`@fSamB)B8t{TZ`IwM4SFvSzmyiws1()up-WU! z9nabrX0J4zEozKFlTeaf3WbR`BP`k|b{*$&#fMapJZetLYfsHJX%-!t^eVdKYF-{FCgMDl=+|i^5M`FF2ZRj0gu13 z9OFf#%+LgF!o3prW!*kWEsDGlYa=uzyayT^59*V-65qOIyo_KkehdHcrW(Tm&Jy!S zjgqZ84HsBEjODa@d>#!9KD`4FQ!ukhtx5g>0^j0(B0`3&YV#KDe$Rm>Ubh62B)s8l zBX8;#fqM`Z{?xv}22z5rn$GSEaMpI;-_`|)u-}3kbD6P&QYWBo`yEKLJA`0EQmzd3 zX#NmJL(~ffZQ6EDN%4L$Qd0bpTF=_7@@oB(W1xHMrFMGVhFxp zfK%5$3d4VB=vCe+ZW5K2UY&pg(S7pO`D@5pa8n{$=uxya%Yl=~EUiGN!h_GvDxprO zd)Ok78{mk06`Usi%_t9qZ{MR(EGY`0gXia3(7|)_MZIbw>`7qoyDFr5AZriy6p{-l ztq9r(pXd?iTCjC)3s^hiexlZcXvR+0Q-Jb0-+0w$-J+QG$H!uo?0!53aHLq%dbUrG zZ`1-U`)g%%=6U1C7|Yax8m14dS57Kf5KCV&OrK!>*Z8wf@t%GUUv@u_3Q`6$*K>U+ zTt^zEffp-Nmx%0AIcf;T1nBx9Z$>f$3rHrJy*h<1&fnpT+R!+xni31yI&hcH->&zm zqLsOGWLM&p_d{U9v>Uze2Q@AAc5*Ic=3udIDSoO@;Y2wbzF4{MY#oGudz*2x;C*8$ zEiIv-U)z2uDYWZ|09Iy>CpjN?ZJj8saUWz|y=$&SjUjeox{iP8-DJ$368U?vz!oQg zL;U3Fizfjhi}a{y+(Tzi+zvhjVrl{k&D!r@DYS3OF6W>X3;Xpm?49BUNl*bL;*X^B zo`r%`UV@%wA}pda=4sT7(Ixv~=a zeK&%5Y2x&uypevo;U8&YD^2yQAV%R#(X_0u8Orq+uX%o?q*@bSN$FRPOj;dn$i77f zmkcz1pVSf&lZJ%Vigi%~HkRX2hOu#se^47Q%N*WMha1fEzAF@qDnomjXnQMVgj5Yc zlp@`1M|wU(PNPVcFR%$!a>VH(1pG((4vY&#rxGmzk5?m9MkEc^$ArJvrT@gMfv1DcR9`Y?Ph zhW1UIX11$YVGp~TfBgMoC;~(Laj(LefCX%^-KDP&Q9t3fMQmbZH#10NM;m%VK2pE$ zMkY8~8lNHXq^CuOx(-F6axOdT93vWe?jMLgx5? z13;5Z5BO&QZR&#Go-KT%q;-g;uvc=zIcJjX={#v>N=))B_a>qYVWrUe_ zg9!3My$|Ala$BYrk0huCBQ)~6eLEX0_#%eZ_7?4rEas6h3YeEuce6hTJ)9)&tb2a! z&?9vdfu^<%4Gsgwyw08Ty5YABZTR77Zam?Ps5ut2q>jI@ls^?Ql^>GWJ9YyIZ_pNf zHecl)uqu9lWtE^49L1wREuWQD!`z@vPEQKq(pvvYN}f^J!@21-ckKIKl4XS`y658U zT?v)|g&dp$8;J z=7L4yuF*+N5h)4M2g(lH3jsJc2Wk4=c=mQ~D$Q80)%{q~j$YkNndoy%f@Qx|!>W*s zJf?>s!Q+FD)dz&}L+=l^&C5{IQbtLrcj`yU|KA4CUK`4wnX>bZ1u(dmLOe%a)I^A} zE)#>7_5#$Y<`4>XsJAO%&-RoF;eDcU6r~J zxzW$Iob|b|@p`0Bl%Y|LdhqG|iWS4ggQD|wsDy0+NZ6zj7bt@i& zbceW>)U_%x5-p4}cj*z|FK?RonkYPQX`@~Zw$0dr`5dU64g3?n1&s30CK~|KVE%s# z6pp4rx%SWDxNXM<1;iag&hMkW{smdIhPX3_i?;c<3-sI{zL~-9Q~YF%t3LG3Xb>q^ z56`IZGP!2!SzjJ8u7pVE5o)R`O`w5h%d6{e^uAt@{5VNkiM!BUH}yxqig81C+=0OT z>~PYx!Tx~1||VH;%yR2?H^}4dBwKln22rQPzIzBxZ2FDN98A$;P|DJjV_;55=Wby<3b!G z34BkYAa!VdBP{0Iz9)M3<9F>wK?a;>;uJ5^>mzeflr~y}0)m)nz?-7a*~r1o}T$@m}{U1MHtcObkGjeYOEn^|UCIvR{2R>L)Q^^=_4^nn82WL48-r8@iG3=x9B@ zmBS$?n-)y_3A*&>;W+i@agM`jtF3GwzDc&p{y$p#&7NT38huqJto@frL2b>nMo3iV zNl5bi@2R`5tK(jln(&7kFa*I4Q&0oP?j2_P5Y4MHpq^PrJv&8Yx`T9lRwsn=Z~8Mj z+vmUZXL>R`3vOV8JF_`w@5%@kw}t4Vf2nZ|m!%`E{CzzANMRF_ZF$UPtNz3cSL8Vj z1Syrqf97$>3B9%~?j?Pl(U(_uD1JNq%VKI^OH$;c>f~KPFb$qNV`<*^PkE}bC#}I!vA}zSa>sP+rSV1h(k}XmvuOt$|>{~my z!S?9}&O<%Z$$&@0Hi-+MhM~!Yp0DRjs#|@RP1YuhdvUghMKOA~(ri8BB5b%OisPCR z!PxI^xBR^(KmPur?8`~Q^P-)0T#7?tXFL&+#@*er40DOUx`eXIR5N5A0g9zX4K0yi z4=~^ZbUw@t>#!>`{m0^HXjN~ZN$mrb$xZqxSQ`dl%yxCI?qfTCzNH8TB(Qv~i^67S2CdNXSz`U#wze|58;f2XR zwGMTzT8Dzt(nMO?pYb};;4~Hq%yf1TM!r?&t+#sgpU*nr(24%BtVbSA$B+-L7$SiT zrK!8Dx^>xbcX1S#Upx>K<^KDf1d4An!vVT+Q^8h%qgr%gNVver%ByZ)<-XF~zd2Hl z#G;3h>%kFuF8U!OaiG7td3yTZ#%h^ayF;T$5@uJw$=o(`;V+OZ0xnXEUva4zqH`xf z|CVr+kH7bw$56}vZk2O=2FFotU_RyAoQJyuN&r%BPw%(&a&6p$_#3VVf6C5?@`3EE zs95)>>`a5N`=4ZIi9mK1)wUt}jPJ0@UFLpvZoTvy;YoM6nlDU!jb+xvf4({*y-%n% z*i}d=<*OHTy_}D}%_`faJ_z|R^ykZi8M?~odhTAMj66&bFlHjRJ(PH^*0)oTwWKn~ z+uY+L=w{XD+h@r=8yV+1&$7&NV$vL$E*702)4U_{a?2`ybn;OkH({ED zfP>PW2(79B+}bHP5M@hQbD-bxUuCLVX>!wkNQLQ1B<=)`>J>|#Ywk)94>Mvakjx%7Bq<~3mOqjU+#mWZ>?kmTf>TW zy7zvr4A3UyRt6`qs!2(xwg%Vnd$=pj=#>3y4ue`fWdC+6c^<6)5v)Obj@5$gkGm~e zEC39G!RzRB=QET#)49Wm(SrOswd#-f$nGMtN1fnIeOlL!A45bzx}}Ft3!{W~p6!I- z=8+t&zlPsgmF7tIEaH^epjYv-+8IIqk5qCn-*?EGUgVymvhldXXWE4?K(QOf(5~hs z-o)2Udp|CjomS9pbd0Axi~b5F7?$YkFfGFOl`uIY z%K3Rs!w@;2!mGtcNrRB9!ABC6zOtrY#Yy+q&S~UwbL={@Da!D6x?59Ap=nM_@@joc zHH3~;Ue(-}r*hmT`Stm$v)V~$l^>Dp)NIciQy-@6F->f@iL|1v51qr%dCa32y@9|!3eqG|N!~aL5yoLIEYU|w zs2pPr`qPMx3|3xBU6mg;py8LAavL=KTI`;%UT?JRA_0wG^8`jrGHf3@(hc_Y5^*sW-<&R7YzS%sPCyyk%V4{iW*NIja$N-KK72{JF^Jo_iKa z*OFVrdId9$6_^Q4IMQl1-y4l2yc%Q}?XT1gDhwIm(^_BLSqbEwZQYOn`P}s}drYE6 zw1^M0f_&YOeqCxqz}G|j$64f5B!9p()Nm4+^+&;;@!OSR)8_4?^cTaSW{iVYPE)HS z00shfGmb3RM)xCkQM1aR$${iPK8bR;EcyD0MxM@5;qs~#gmjXFGp;L|4ICz1Q(sqmHkl}+V3U>d;{%}E)SwbR}&C?!>NnghW z!slGoL+Y!d!w@q{rn~<(k9dqc4xJ@{D-U=Qj;k_l4)zEL2#SUmZzrzs<3bCf>}DHF zLXK_Wi<#u#wyoy-r@jM{&|0gD%oAimG%e7XM3-mKnMAzhXu*tCMQ9e@sDrSAzPOKe zA48KSR}EK`;K^1cqfP~VQN*L-x45G!-)c>RU8s391v=Ze+@&HHV}EQ9PLcB#%_kq9 zqdqOq%ea4;^Y(@R2^9JB74lniVCOaGvNQ5Gj)=&|Te3E*^tb!;;ESv8fo1%(>0UQy z-t4~7TeX^GdfM=&6P<$7_klmUNhuzIo%rpOQ9HR*1V=&~12{f8>3~tUSQc2;-XuY_ z_%mL=*n1m=rtPCVRd&7T2e3Fj*9Z;C4?Zmc1?ferDN=@yDY@{OnVE5GQ*6P$=Y!Ae z4;Q~%7lGq22h4Kwxa#-i-^?Y#9WhmWoCyTH)X>f`?spb)qirJ?+9!v{Cie!uY9CNn zn+ORJLUJ~+W9;l52MyJgpwJC({4O-dmNvS2J{EB9sW_%HkCiwTYhy|&!Bk(tP{*o5 zh@pno8#pFCrXUs5e_wrFUMA`3@`_A31%@V^fott9T5t1VnebBM;Zi7K-gq;Z6IkvQPGeB<2F~fK0=` zG>+CA$E|LV=G}`x`pnI(6bhLPyr_mqO0V`9&U&nzyy{F^4qsuiBRTOA(?i=hyW57NCm;2R+UBG-C^AWMtcU7 z(z%GrbE>|~wG)yN`32@?0Sw_&QCi<4z56_nH=Y~T1Bk}}tn;bGGronv5XE8QN5b&- z>412i+6-o2k4843>DdnPcx~_ngEVSeyQyc9k6uvpoQu9*_R7(4E zz0zrC+e)DKt9tsz=Ycc-<>h+(B|BcnWy>Yx{83R$)DI8pYSHqVh^$PDXEP@+)gMIZ zm(zc$l6c0dMAeg+%&z~E%KgnI(c#&*w|9pdwRS{CM^8_t%~3xN$HWg-9k6!C$H&Z5 zh7E>jFNUeQ>NnM_HQC8pptOm?QeSG_)K~@1zZpmM!T9?yyRd0j;n5T3*IdGP}DQP^Gmq0M|zezF;TW=s-)uv zJ40!&i~Cd>nJ%H~LbbSV)Y5)a*yqHBE!j;thEBT@tP_4gHcU21%Mp!hjk0G6Iy%P7 zq$a^dQ@jXCfzEPcHEn_~Xa@qf+Yyn>vI?-m*x0Mg4}CzRxZyD-bEUQ{Qwz&xEjQ^m z;mr=KNl_&bcWB9^eS3>M7A#IvFMC|4vkh>ZiVpPs+pJNDD_f64JcfC>b#7_79@NFy zr!JeQcO5RliHOZzpo`G*u5N1_+$eBGaF&h8$VTpEYH3HQpSZ8O7YF@OKD$V?n>Oyw zqhxno1dk#}ipYd1zjR&@$l0K(y<;r!g@#SDc^kuMx0*6!SIT5jJ+^bnRRxEIB$o!I zDXJAN^oU=2l%$tM?I1DTfA>CZbA@8X{zW63<qqLse?FWTNZ zs;c*0`&B|fkWT6DMrjb~1|_AtOS%?{bazUFbW69SbSyd+A>9p&dMAE!zx%hxIQxuq z#_%5;#9H&2^I6Y*-Jk2a=f)zpUtKtDxvolElo(;N)1p0_HpE5kro?gX>`0erEtBsU zRByWoGgy~Je>(ksLEa!fzsv4h>=PIfwEH4~-3loG-OO^aEwPuVgRZUHUtcjUMe$gNMh{iTg&KtO8jwIO%)DgMdW z>kX)u!h~c2eME$m*~4r9#dahY$X&24B_vHBCPHxI!6!0HM%6X?Bc+8nT}=goVbhD( ziUp_9mbA+?Lq;op5ZAHhGMwqJ350VvE9kOcRvuLEF-3Ywo?S8Spsne!1-M=pD0>Ss zF8Y4xrxTsF;*OZT_A=fuwu6Ud7M%%d6Bd&!NW6{mCOvAN_S=x8aS~4J-udx-YV8E8 zg>}N4l-^h5&LFYOV5T-QE>iP*@x=+wdeQB2)m6;zo9m0%t};i()7k1TX`j$0UYOl+ zF76YqXkC7xp!(<&M1h$RU;e?v_$$*r$!Q0sG$e>ujr&3SbbG$d33;b@r*6DqKvDp2 zC~E^YE9+wme)&{A$mKvNG`5TvnNN$fRXhBxRC08AMaNHe1 zu?PF^a)z4F^TQGI4m>bnY#|y*LCr@(Y#+{R3gTRD;wgyR5G{jGYvNd+ei`873~L8lwCP%7sdKj z^V?9ocVS>k1bo~;nQ^_OQL_&xGK0Dcb_ej|=ZfT6jlR#W*;1g3ZSm zGjO8ZBmG430{fYBh(iKNf5PWI86QxANZUX(_VS7q1KG9=Ue zaz+{pXYF`PW?r2av>#-QrZJ8|#Yc6Z<`3&G2KyJ?;phHln;?#RNgC!*%n?!bYdoRq z2(u2i^Nek-nMphx-Ht99_z0Pgw-6tr3&b`)7&fHKWZj<-<+-&Dh zKBOq0?e{I!y8Y`nq;tS-y|5Kp)LDL{O27gzrGHpb(_HM0}g9R#G+dHXy{ zFa)bLqrl|7g#Ih2g*u>Khc1V5#j9U@d=jY3tyXFZ-pELEmAPHGWdgmqBNOrB2YnEE zoGbG94+8UhChOxD(J)khWx!Fu|6`_p{*Nk-{f{b6|4&HVyH9X`VRpGs{+Ye{$FSGG zfAK1!`>{n;)9HYTSgu)M-p$}H)cVk%>z(8ckn;*W=6a!qL zYh+!pSr<_v6>-1hLe$-%es*Re+q<7nv_C#^9NMnbsk)YaM-H7f?mJQW2x69#`q9A zmmso%fvtXNrbw0R=y}oc#r75v{#H1*L2zw2mC3404!k4jeZb{tr05}S$>3QQpQ0-b zvk3ZwE+#HGMkRz?9bNJQbwSCsZyKcnYV1a1If96@`Vqt>vOl}%?^(jT)t$S+U z4-D3UcW(mh_TdL@nAwC#dgd3gXfTtNTHh>4O{cKA(slB?vwkZJMz$nAVMrO9wSBXV z1}?)GXD#sAgVKmr9ludOvf2U};L~!q#b(~K&x`h#N<73M(9-Ibc+Ch+zjl`|KN7#_ zY+(ztea|>I$Xao)+7n$(O5K>z*#=}Fe(aYl`}xf02rHmJTXE((GEr0CA-g;XMvUXu z8~_iQ;mJ$r|0HAl)ED~=;$da!)0iW6d4db+_3@AjTv0e8;C@x7o7F^t;4Tx!YegvC-y4g@;j6&;T=hP&6FO?-jy7V|mjHKM z9Tk_Ea5m}I%Gk+$`Xrf2O6na!fN|W=bXNpa zG92t2o?CR+*34mXO;O61{kB~sTt zy2CXb&+_gxjGo%sIb$l$eK6P|_FwGebH8*1Yll9I>4K|4BP1oN2p0(WITImLj10QQ zk7!+;aLQgV*J&3*wrmQeTv2z3t!UHbWweGL7_$A^t$T!?I`!14_Io>+I{?Q{DH%pN zzsOEv62JD#AWH<&S#lU#vZh(Z_khy+kLT-(E6tBP@5`YF+T>YY~FY(E|Q^q2xNoB8G6+a5PR>ZX9 z65I1iUJe<|N^lY{FmV6Q)@UkJsc=k5BcJua8&I_{@e#=HTLdvI5*V-d&v=e>y_cR! zE@b#1)$OCtiQg_`*O3eXj9snhs?qcu8}L&Bc!)bTv`gj9Ki=@4wxv7pT=>d$^*~#; z?r7dp?BimB2{kk$+FJ1n-iKR;J}w~=mXXcr@k%IBnis>w&^p-f({kOefc=d z<^+&}rQ z?$q5fQ+%U3^T)d4fsD5=K;LuU)ecj)n??BsSQWrkD+}*!4}u0o`T$dzWptGiQM~+! zyuRSpY&Gi!HO05By4bEFJBsZwZJ!*;+Av!Z$giMl3PM1mi+~i#m;h>Xl@mh16yV|Dtk|CkC2Nn8#UZKyWz*$KQt~mhZq78Z;kDH zHRGN@T=80=xqwt%CT@#x40+l<`Jz|Q&-lnIw)ym0-oao*OKBgx&N4EEsX;m!He8^e zzZUa7bK{od*W1zR@O><_-6TUj!P99Un^3tYCB4JMu^jSly?p5T4M%4hhQ3hzsh$}! z6&uZ-lv0E|Bsf}WhMr}brq;TB_E5UKcLT}MU&RLEfu@>CU_P!2O7E}U{gb8yoz?zz z7%}Nf2Sk%-i|1c&ZJ9W4c%im5aT#>%z8@Ncr-H=?&sEqAlA1GzRV1QNEANFl=Tdf* zHB%z3EVlYss;Xa(HH_iq0fQu|ZC>7~gbTI3Y(pE;cfUaw5gO;84te{6U#9V;oQDa~ z@T;{H2~Bm1g3E78#lwfMGpZSlI`Gp!#J1lh&;eOyF}tCg+0btj8I-sxc zGcz2dpZ2y?N!rEMEGUl2(tP=%Zzu^`RXwRf3o zcvW6 zM>ng);RQ%=mwoi(ySUO6DQ%%Uet8lis}xr(2+ba7{+xZ{;nd=^qH$qZ!Z5arRb8EO zhGZwXQ$Qj@RGp-Q zdYaw}R!Q~ExaqiU9T>jm3b+X%AC!uv7c<%*h&AR5;bdHIneBb3I_oSWjT_{YWRvr@ zzCyZx{(N0hT9>Il3uFvsd||`_6P5D%c!cx%ctr;hX?GY+0_knSDS^VaV-k&$_qM6i z=uzGkXfKu2G(Ks?mnMC0SP9>C1LnUFfAi*W=`AvhFkA9*mtgbT;2G{7d<9NfE6Ba! z0FD(4Z*&5xJjD|%og2+T6jT(zXpRluQAf@X0cAcaF@~*0D`MvWqmSXUePGwsX?I z_9G^RQg76!#B|8_^_HX;>4=sIe>coPiaK_LlPdB}q4a2@?l;*_P!LH2`QT!KZ+*tx z7+#`@t=am?B}gjiirX#CLU;g)iX*pLF!xqMKyRsiXYa5+?OP!^9`GpCJyTR~dn=^T zDW&s~pAdj9*BtYFKltR65_+jN8ew{WQ%myrQ9NEpYp9kd>z}4^F>u72o-+-GF}g&Q z#cTg5iF{B1quU5y6Q>+dHf>8(-Co>Gv!K=SW&jE^75dFr<3lNC6hHxX8urvn#}w#BF* zAdG>D0e+W`QCnVer=y1A^gX+#(|6kE2IH(*Ow{H3!fLCksS&9fZALrz7JaCPB#hY; zLtyq3Z-?r^AD4P+F|{k*E9ehJB(#7&L?IR3CerD~LN`_wBdtj`N2Z~a_%2EJROEvH zIG4+1Oclek59v{TTK+?QI;bnRde3&ci0{!;aY7yRX_x+>$Zw=(HDw~w!_P&Nr)ymQ z%189Na1;xtB>Pe;TYJhjdz$tG(yfnGEdn#z$ej4uJ^Fgl z9HmZ^mvQ1$hHl0-yx!H`k6d;y?-ex3^g*V+F6qKShiMmR=sdqaP+dk19sK1?EphKQXvhw10^hdw+-+hb|-s$!4O{c=|tv z4m*eEtWXF-Vp1gOEH@E>G=N>Kb@us3Vy=<&Hdk%|#N&5eqtpP(2#n|dE!gN}l_&M{ zxI>&7UVm3Qs4LPPi31>BQ;7$?3G9l))2QBqFxRre@(djxsQ!XnKbjlNSJ3Q~KyT?{d z?D7j;b{wrK3wLZ}Hmi>W%XCUR+wuZuPgHuOos8(w;<2-RMHzI+bDed)t3kh8Uv{p= z4ak#4JD}k18fo{@RoZ>j4InB1=ms`E?|iRtkGjqOk{bM#>xu&oxB=pA)$ErrYr(Z4 z=KW5%U4zS(v(cobgbm2@F{AA*VdL+NwhWAvzcbqY*VX@@5%K@;WrZEMC@R5_mmc~A zTVj(hq&Z)R0Ga8l>P|kl8cLpkkm1D-RLRpQ)ki<|jN#&etf@~o-uuf{HK?}NUwk;9!QQ1thYbu@e>69?t<+vdsN6Znov@7i8v;8Z~W#{RL&oObq^WnII-d9=; ztY|G66&w?RI|7Tz-{GPWk&rE=8M>nwgD5=_Yzv5V8%;k=(sptxr-H+e1f{fBOg%0x#laC8)Q`FYem&9+9O0(j(Y45 z9%?HM1iGNSew`hCT#<)0vShucaj}|5ej^9X@E^F9>C$t8Z)1492FL~@`*LM5PK%`K z!Era}j-E^kL-rrBWxJckX;rv0b=L6(3jv?~i#|UNctzUp zh+a*XF9~Jui}><+1A@U^brbTXhVzxi)4}1k6_){aU%oM(blZQF5BiU+s<>|xGuxya zCb#rXmVb4H#-q(|_Ov&DQ@^6PS<%Ips4K*=*}&6yU|8#$jl`V1lSL1X0mnsZ$G*5< zrbUSt&)7O4W#yD~$u8f5tVKbJbFMVuoTW5Mvg^oFA|sriq?W)|BpXUTP|=er3ia`P zCGOIjmot`oaG}v>@P+OILE^pCi^M2)KM~8$x&+$q5)rQl9958~g!2dPb>Pk;BdAQ) zKF80GKNo#oOV3d*DwHm|M!m0mOuGwKT>6oVNlkF6w_5ClVl@%T`BLJK_x*=Z!sNo1 zMYp);?`ZXmb67(pO^T@Pxvdi`=Rp|ZoDS*#u zUEt(TKxcD}RU1BXwIghLIgdJpCo!rLvw#gq8jN#3LAn`KI-SH5*lG)&B@5p5iM>b5 zx>7+sag0R0-T#()-YWlF>JeM5N2EB8o2O!=Mc@q^2hnULXM(;01t&S@Irg6*EyuX-IG7$3roZXNL%Q95Qdd`N?(4Uad-$@IuEy zC6y75f6F1Ny6(@e8Aq&?d*$VnZYqvDp3e6fC57$de{Wn)j9l4b6q2WvDae^=?>}Kg z`A%rCLl9`h+85FCCe8A@#5i6y!wExw^AiZK?~24O%*CvHLlX}sD4q-HW;dSmsq%Mi z@9X#VNr;P%U2})VR&Y2)sBa)_LuK2DEW4!UK43q|eN(v-Hw*#8eJqd>*>;H1#JDf6 z#PlF7uC)D=D*je?>oD6~*_yO7SVTg+K?o&x7of zGjY!ufmm2_%S6Nl#rpbK6I`tWDv*w4E)&gL;cC8-SCrf$!Xf#__OVFon)n(*F$$4Z z$#ZFKWw{6uolj~_=arp{pNOvy;p<(l^}UKYg7q!i#)*jBJc^3s+7L3$9(Zx-Aslk` z>Xt8L)b>o z+++8XgREhEZG6Yqdh|bt)=qJX8S?XQ=LQCV|A0C1dlrko(NUC z?!}wLJ)#}NO{AUE`VK==r6u1yF2UDi_o-CO1(c587Ac+0eLUeFnl3nrRVV8aPK0&= zz)Zj@y|a@~b+@zNN&yJ4o_Wb4oW?>XUB^~IE~>jPs_V<0Ij+oRV5a80p*iHp)P7)) zt;Ww<_%TkWO#*@1B-19^nWJe>S`UY+Ivklv_=O0wQd!J_K8d{L&0?yGM7^mBr8YGz zDLDcpQ(UnBV+*<~qfht#LN%qqcFIY#6j_=3u(!dp7ux6x#2v49pWw|KO4efw>s!3+ z%)xHBrY`WQDge9YZK}zAz`(wNPuqHr#*AfVEUXZzs0NLf5@|iY3jE>Tqv+%pO&$*V5EN8nm(X}_aM$w0IeVa7S@xZb7|x)+RK*xrG!krIe^a=*%} z#jOeZ=HMdyQvqc<@Ls(>=Wa?S4mi8!wuKs~qtjZMu0K^}d?6AP^`k3DT_`UyW*rUKp}|NLG|EO2kd>mEMu8WRGm+Vo!%Y>y%e%OxP9&=_?T2<|ww zX0iZsPx0aWMUsLlL(NwL19bXCSL`;&8*iewn!jG*)3y-~Fs0=jZfrLs_xC}_ryk5C zwB8Fc$eudv!#q7Hg@2{j2X&H_XkW@=f{Q&v(?1{JNpeT$j7+)dNRAF^Cn53?d}Dy= z%K(h)V}CEcddG?(j8o$X48vgDMIwFD4_2 zE7ra+OQR48ciat~kZo5yqemN{7s`ZXCfH^>8)7&L;xH}gmS!qYrAtVu`{YWfD4o)i zwaJ5i{5+-!=x-Y;qv;xvl>wURuU43`BmfDCzx9=TFJ@DvM&^h*M1w$rsfy65RG4oy zDJe5TFyXn3Bu3qgMB`*+b?1lfQhH zgczgZk5nGkU2Apa>_m9j^nCQ*7ALo2-?E#PZY(||y2FaEpKp0=zpG6pEDmW=P-uinx-d+z>SJUP zQMNsUR>{>)+=);2ozOr-b2cpnHS&B7H@PB|iZLo3DYjW~z}qBQ3Zvy>7#Q|M%1yan zB#Ixx4*hRgc|}V7sa~x)zv;QyDqne!W$W@^0v;?uF!j$*nr&e%g^d$N6jJX zXDo8BS!oWX3rKDT{hTpKSWnknzmME>z`ZJ$%wLSmoQ@!med>$>;Z!iT2x1r$dAH2jOTUM zOKMjc;hi+0E6%C@5t?!pvXi|-!^Iuf9T9_@T-kBrISq252AM1C@62P1U##sn5DZDG z5AHhn*6n8z)46@}X7hY9+ve9=B%`7hu$^Q?tc!jzytSIohyfNc8+1`3f8aOR#~{AO zJ$|puPdh=)*BMc01VmBb8?(oUo81F@> zb`y;>Kb(X;!4>B^2mwNoc9DnN(?gR9OJ8kjo`JB29`%kIDI!Ih9#C?3L_5q4+hDb__p&|DciZ9`i-q(*Iqgqj*HlA|;c~ z6IxQ{`kWo9w#3X^_Z__rC$27wh?<>bYSYPAx8LNogaJ?FtuaY@-}qaH7_4 zu$j4YRtdB}KM}ZS8|~a5x9FJ}XMyQeI4hKJ3B6I%Ocp9p5c*trO`Z}ih_7`)fzO@K z>3aao$I&1b3Ulqi*PYah?V6s?6`-`%)4XXa!QV0$w+j4=RSMXvkiVLq6W~z5^@+TW z3dptVBC>LP1a`LC;}I>(kxA7|#~{PEiq{nq=B{A~E4yn!P+-Rqp9qG=zl$76)o92i z!N?td+HF^B>N$FHWDUv&QHPidVxCVp9h_i{h&vWsvyl8oeS~g2h4@`Fy2+=%!l#u+ z>U-UyyuQRRh7f-LB{^X>DX&k9?>E8=e|qTU8phsyna-AByzkOcymd-fWBs;vUjNkZ z0He?aMt5ESS3%&am?I^_+*7Qci6mEDX*0|5=ZN+B(-BX3bCB`d%L&aAmJ)qIq?JD4 zF!qBI>^t4-y1u;c`H~w-Q)vxp&%bi=y-fW>#1&t4qX_DmK-|Uz&*q)ygX}yy@c0_p zEKqK|uSD6sFp6f~QLfDi9q*X)w<*Ecw5{@FB4YLLM1~~uPOPABZzEm<9ZS za*fMBf52$lRDJO(J9oZgZkL>^>k#%f4eq@3esuFgO%$3aG8II0t7+x+Fi+cWkVkL3ngplpy=9!n-M&~rnR=juN1GZ_qs)MZN7 zs81=EmsM`}eYq_09A$oDw5sV3zeV_wR?_=NK@PV`kFmT>7Ij~^R7f$Vtkc-&^S-PT zLnpAFBRp6bdryam=i1z-EhZNNKMX2%?=ht)fXm}N>X`~!fVI5ZGXINdN-r)MRs;iE zVX0&`sOT?}=eun?4t3%<{JHfZc5#D0e=6Nf*jRAgFcCj&;G%U1d{VaEs)?Mr7NKb)O zDG=QOCfso;xk#GnnfT<&wB!(5GVRLQPo9q{@8={FrBDHw=NR&7l?4EMfGAjt0M>xz z@`x*3*}p*`ogfiyL4fmFZF}0S<4e}c{r@NP^FOG5t4&$OFFVaQ55C(h*dbVN9%?}Q?ZAWNatp*iPUciAZu0 z$vY71SEd6d=dUCK%2DAjj>L#1KSU zNl#885qLatPFn6*lP~0Tl!PVExy$Sh)=c_3Oq@0(28Id<0wskyeAzi^N>l#kTlUUr z7=A-ttDcVMzH^+YqG|B58D2*>-uC?8#vHh7-~VzXL*5yzC~I61JX<>oB^+*e3dS?; z%Ec0i`EVq0(P>HGH?i597!Qg|bTJ(3JXr*VrdOG#_xGv&ceG_7KG&+=DCI|pXXK;- z>A^a?Kt1=TA)b}@yp6EefaC>!o4H4@u;*clQknhPF?kuYCX~t~EBh2ap{{vG7?q+0!DWc&~$2h%L%O@KloZq_bCiKe0fEMf7{?>b>i$^ZI7* z?pqn`yw;4~IB4tq>iJ!W%_frvLzU5Z-YIAeTj)9yafc;7Gr>u-kC91CH$jMIfBW#A zkOvVhB8ccsWqW{mY8+Sy$9{1(kwshrVHKB z)I2#j(aC`K=f(2-4>DT!el}~It#t)ujtwq=?OE}<)qs978WFCqb}dHu`Q&zVdALGu{SZM~(}{!Dg36zeuV_5A%I z-CjD@SL^W1x06{x=>O&;K7apRZn5PY>}5ja<) zffq=Yq_2f|^a|1BO?)42jULddH1`(2J1p99(7XwO#?#4oe^EHY zkrRO*t-;;a_|Cbb^ryV_~mMpoacD9C?Kfr7nE7+y6(p>O`zbIb)q%k^`t6C zeLM3?is?aKmpezv+dG-2*=SR8cx5|oH&jvGvSA!!M{F;qFl>gz@Xp8d`>V;EDlXFL zcUy0$3!f+oeI=_uMzD3z+Ad=MIe+bpTo$-XV=1ig`}%d?9`5WoINXHX#M5O#Ti*=9 zpG#fdeUr%03x@=nRy2DDk&$kvS&3&!G)esfckFzi)DF&U1*3(q*ZdZO_B_g}79W!$z}Fk0n0Z=vSABe+xO+yMg@r;EDxL0M zdwDtWek?--J~vd#_P8>Jk<^Aq0E{Dzl>TzT>1Al|IAeX+K85sb!B&dz;yJuz$0#qY zo=y_CI;EB~b1?c#dS|10ZQs^=_=}`ZHLoQ$K_PRIv9^FO03vpK$go2`-bw)+U`@S8 zj?HRV3zet2HK}x14(=L0Q@WE*eXEAynP3a`o(8yC8%xlk_A{bgTSv}tgJ@mI5vjrXyv6I^;zI*~Ft0`jd0r+T*j#a=X@dj8+nE12uV3uHeWnjw&*63I?QYn8QH1Nh&8A-;rXE-h4?3o5y!-Gn1-iR;2 zSZ$1~6$orHhpenW{k5;Wpt`Ak1-Dy5@;dh7JddTIdej2#?GjO#CRJg1hA(UIMbv-c zLSDaqELla;mRu--MH(M)#RC(Wuxuv+6F1>gSztAJdHZDSof`oT=fP?yZ8C#D(1XSF zAbUz%y%kXk6>#J1SlLXI4plp8Rm4d|iuW12!>y~HZKU0WQySt4aW@wbfFP2@a|>my#zvn;>>ZDo?%2W zJ;8#Xm$hV*<#g08TIq}#n%vr^0NFQ&0^YhIE5yG4tA?hbF4$!oB9U_an-a+kMYL4N z-ltjTUcEkfre@~TYm*`hK;RB}x9Gln|5R>9mY*yC#W$2tN{K1$9-bL}IXqZS63ZyW z`IdfkfI5%G-o$^ji0=}&i2q~zuUaLd67aKt2!wha&j8LQvf}m+KTBytZXT>mOWkAL z#n!C#IqUWeDz^V_p)SOT2JXL;5h5K$5)7s`&X{k=wmS6U&F}<+=UA1Sv;+Ry8!c|0 z|K1yg?F>y!aPRh++75){ch{P{1eBO*a!4nvg!(|V>2W2EY?p8ajxQAO&t>VB0^I)=1=;t-VAQSE|z4ojbd zqEo&&SodQh=#O%j1RR3_cHh!I5xwwkKh?!bAx$2=bHXh~X4Fu8r$jqv`+Wcb=)%{n z1)_tsuW*0cEFRq-|1Os(Whi`8B3(A7&-^b)g#=(AK5jNE^eEz$<%;olzVqLfmv7)n ziS+}KG6B+oT}ivQ?_|K}dZ_Hgg#EP| z`I-1A4%c$B4c5{ZN+ME^isL!o##9<68u|h(8*Uv7w53z;g6WKGnHqVjM_U5u9VWPI zBs>lRE4jR9<>@Q+><{K)&6izm`JvD6+wv$PEAWjD>{JE8jz}%(kWbgR!AKOZt|$f} z-`d_R)%`evjZD}9c!&w9e|U%qp+%Qe4O}ZXCm&v$z^UEXpZZRp!X0x)Pqz@I za8MxF|A|7}&z{2q-wl@)@c+c?@ITZ&zyCYve`}(6fT5C(%nl&Yc*dvf{6z>>0l2dQ zSJ8o&ehu_l92xl7YxaE2AONp`VC9I*g>BN6+c4P{;Byb8gx1_^`cx*CFzNe+#A z*~5pMX4$VDs1{!=5Pn~ieG|aMn!~thtq*uCY*k#=d~Ttrw>)R};i|i&1&l#0txow( z3{-_LM_Q^32_JEZ7qo5D9oAKTwQ~EzW&c!TD0zQYW94PGmcsFxnji?vYe+=Lm2843 z)CUXl15_BbcW#0Y`C6-4u=w5R8OACFe?B9s4o*y5DBl1@?Zqu(U)F9M-h5QFVe^0| z7h1+%hf`09Ae~6cPul`lt#%oSpTcWoYtU1+eDH(BE;rG;N3JT2{*A?Ejn*~jafoPJ^ zyPQA3oB<}RO|7LEDqA_*6KMxU%f3S8*#v3(&*F;q2+@#sit)fF9hmn@x8IR^4ltP5 z+Y&D~#?DwtD{nO6Ys!|VCz61%Qa}-igonIy)|FNKwum55eW|x!iZJDe&60*DqR#VU zg?{g#20?;!0@y0hk9uizF(~k+9{BpZ_Eun0s&k%7JcPoh_6BOONl3Pa{>P6Ez=v;kATyUplEL z9C!jhPKdbELJuz5%Qpj6&}Qgoz2c*RVx0uT@{gP0b?TNHQD3hTtd2@ai z$0$AProYZU@f`LVMFc%DsvdF5B0^l<)^n&BBLdZE+WgGGFoA&V& zjYJOZe1=^han(>N`*%II0-5iC{y9=zZ)HI)+6mNu;0Mz@`VYda^Z<~X?9pRD!c>|d!s89{ z(%hDGx1hxp99){W8+(siQ^WB?bMXs7FRdHeZ3)S|27pMA+ZH8lom=#TSDD#Y?lIKZa)N@Y0B?*0 z$rhuEQ&F5lvf2m?=|#axy?LI)5p(I9e)7dVa(7@ps0Vs`O8(A60-PuC-lVUOD1WwksJb31?vSh_U z8d7$P=XWFQapL@6qW-FDPYW5>?Dr}I;YX0c)a)rvInGaSPLN#iBu8y5#Z%oeFQysI z_>IL8ul^$xkhsVb+Okakx)gTHc-nS{urq`^X!!tpr%e2Gpx|Yv3tNz2FC0{^gan{< zbU$>eX*WPm^6lZ>8l?p+to#dIv0X-_$KN|+3!k_6i5#yH(lK%Bo6iQurqOe0A3YaP z72D7LeprijsJ=SS&3p4$`u$@)SgHQIwC-H(oKQb_gc^veKdKweQ*MDGQmD#U0sAU= zIQyO{#3_fM+1j8}s%%zPjJ)1-5s*HFOJZPx(Kxu-IJK0j(O#VTte(zWrXlB}k4 z(*0n6x|M`2<|dE?452g;DIMqw!5Gj?9-~L!WS04rlN(<|mgf|9!)cDP8Lh5@H1VL# z6D^ojpD&m~M^iw^=Gb??A#(mU>#GN!a&A?ANvEEu-czj6$+e@$PI0OTY_+7sfEAn< ztGy!SC)xO%BXcKXOQ2iax66hn?lWSUZbW=S0+`4~)RBc!rfd7U=2)y`RcX^~wDqqo zkSqzbI@j}8Wnyd%^uNr0tU+^MG5VuqOuHZX>BSZb>*76PmEC(FU*)ma_5*gZc#$Y} zU#>yM8*O7O7qf}rk|w^8k5gK1as~8qt@k5(>v`hUU1EK7TfHZR3@*p)mpHys#B3Md zHgE5wW;{Wle#3a{`=RIK<%@M)3m?2j+N&+YU6|9z_@(zE?_M1ktXBm}J9~l!%s}37 zyTF+0Al=7$8BqA|G_g&J-i`(foqI$R(llQKqp5qjb9&)`%YI{gOGfMih-1S6Z1jj#eVOsuxY)h*>r&(#%%Yo5HYO5{&LmHy*mAka2(y4+BGY1%k zlk4sNCu+3%lKSF6k86hW}8TYr!g|jW&nRcZjWMRwCAj< zl~8HAD`KJTO`S%fIctFNft@Ip)TjIAhJw*`k%%9jwoIGlD&C1SQ0W_P&Gn*&>ACZn zxPJ&;7J@LL2exq8m#oP!%|z0Ua#?frP>rdw%-#UYlPaEsA6{04ddY(t9?J%qn@u& zK;yii74@v0W;R{t$ip{v3fED&403KJOtm`iaa~&v8Q$D93CdNW78yW`PeQa$o1Kt$ z>cxY{OF>@7=Wa$|5SBejj1wU)UNy2$z0ziWWdS`E+;{Pamw(r=tA6HOZEg>tUkUYW zsnYmJUj^3^N*+(Rb$l@Hc~%XXny8vEYHZdsBqdX92>n6D=ZVo|F9s-ApzI*z9moEb zBT&;7^ikE?XWALbHm^y=rC1MvdRKvt_Tg%h+6tr-GeK-?fw$MZmQ__zI5bU*Jts7P zg|_QD*GAdU_}6l0>{g!$M=0iX@#@J6Go0dU{Z{XL_lGI*;F!2Tp+J=BQJsWxb$1*+ z!HZ<1T?zr+jow4^jLS}>M~6eQ&T9nal72-!VR$`E7(ak7Kad=?>W%vOsWAxgm4cC0 ze8yJaOFM4rG{EA(p8ZM|9q{h(DhQiG3c`0xYKIcKu`nhi*92JFI88cL3DDf`RE zO48@m_&Z>jkuT5;HNvM6aS`BE<(V=Jp6 z!;#%ltY!nmu-(em_U`ag=75q5d|yA$!-rwf<1aiwmP6$y#ljiP|G_7qa>FJggKxo$xwu3~ogP^j0z^%6sv%`r-;jHMsGzUaiSpNuHqnz6C zR8AMu27+NX$>@QX;tsQ^jNXa{Q1_G5f?1Q(pWAws@}8Rl{;4Yiyc)m|%9K=P^jZEa zQS5YprBqlDa^}nW#=&45fB1dPXP+%-5}9j&kbonU9CsSAUo}mxaU%Gg<*c7|UB?De zWPf!aM!5|MGA+riDgh9>>o8>DEn2*bR>_5b4^aX!s8DPj$QwrHU9&C08@V}q%PTwC zI{nM#aC(h6{B!B~vkw6k(SA>qB@q8}h{9SE)*f9GmR$Bo*IbSr=D@`ZuMkD`W0bNt zPe^X`w%BXhXZ~#A$~9wW_%Lr~T@^w*S#&xpY)C5unQ2I#V~zlQtUZdk*6a%`atx8u zwu#6WtyZGB3-$|$wu)b8*F}FpbAKo>og&yhDgqb#BnH=&H$c#|D;KVhOdf2Au=UVI z=DNY2cU(}~1Tz2?OKK>&T)X*;v<^salIb?g)aP>FH*FXiuIBUl}A2@0_xAU zDV|z{rrCATw$oEe#r$|YNx?+!dnjs)El-Ilc)b_+IGG5}w$pjjKC*|KPD-~91baLr zs*lDK)^vzp#G;AvelM$^rM{K>^E8~F>$D*SI%4y{hV|&?X(;~%s0N2QIY5$- z+jCLn1)-52`vV8E36MPoJH2!W>Xa^87P+n7t~pdL&Uvu?+MTqwWArYoHPY{nb;vg* z7HGp>jnfGEyx12V61IT6d)ZXiVBU}oVzu0K>LpheyQBVbi3x`4A;byJTPcu?ErVBLiST6(ibqOF!fW8AS zkf9v3{)q#}^tZEM75Np??{fIQ^#7Z9f&WFx4dti!SNK4T=}SPxHO{I zg$g{|rZ|0hf4xb%7pB&eyD0_e{qeKBA_$GA-(j0_n?8Gfaq&VrYEB%BcYLiQ0x5bY zAyCzfXe43n5q(QVk5vcEsJuDiZVm(yc?cVrd_$XbZ{)NnhmkJoaV#$ZcUZ8D%XR)d zbgtlI%3^*$?^1)M+qZEF~U`R-{>(#%dmgT&Q zY_F@3WuWr(Cg|bLx52PP+xJXFbcjxyz|kvvF5NGlW`d#R34+sj$ozf@SOGA@j3E4g z$y&rd1{a*Zs8iot)YTdsWwYxuX z-;sapZ8g@%_RrBh5?nn>K+BV>#T@iM+4+lZfj>V^{$~Mgnx;qcPXX;!_`87iMt!rC zDmj71S9Mwa-14z=dRgP}F&3c0w3!Mfuz=TJXiB8(PRdAWV;<54OsLuVFRz}TlhfV{ z6k&;5k(=6LZ#$&lbj^@o& z%OSt;8p<*!!rrQacxebD)&&L18|uUCkdSul$bK60A}jGd0VFN1)z7ZAUld^ACI(~< z|6i0jx5AY)d^a5`!s-7h?kuCCY}++#fTEOuNP~ocfOJT|#E1eS9ZH8FASqo+NSBn- zrPR8x)zJI=3(ypxQ_EWA8;tIP?3d&LLIIA zt*$nN!Yx?LOe7@+g8L_W43;^mjociqNmdy3lX`N4wBqP`z|{x~UUJXLG0djCfM!WQ zohC9PvgfSJ7NPM>$%dM2&lfG7$7IpUPrfM(Y2bAyS`(x8;=g;1EqM)b1cy{K+}8+8 zCs*ERtuCWzG&^Y#u$Gym?GG0w&dv99I-spQpe1+KR43<6{v%(S!6^Ct7fkbBsHXrIG-t7$dGseu>xAJ& zBr$^ar*c8hr~DXkv(6wgp#Oaj3 z<8%sRZ)<8_M*opjwr2&42Nj7VwFAx|jPJ8A-Tr`pdOieiVu`n~$$VyPvwGcPulXu9 zDx#m{vlPmWAX1Rr^XcRHm3C*S;1#5t24UBFuzur2G8-}hzPB1)RsL;%KGsuU;uFi> z>TxI>GkM-o(a}Au;x5?Ywh-TFtEq-$qoUg}7smouyS`nR|9rHE?vJjo)x}Is)izE| zRoLd%EFjD`JipKQt#9X;sF6R3`pXef*PbG3D9$laPbR*@zBGpoWr5fHQGxgFXp4TK zA4Sx2M??+f8q^}c1Q$>6-d}GV2zi8uC1UPsRn5CfOm84~A(ypx6k)YSnDnmc&uW1p zGrsj;y)R^vRt}f#`ck)#lHkOj6AjL}(W~PAz+_>|)nm>(O4j#F3?>?!6dTxjMu34C z9d+2%lxdesUY%KEf9SnAE72qpzaX13?x{98P5n^k?Z}4&M>zhNMZ*BZJ1kkGu2)lZ z(1YrQ*QKPA0nv7&qG}j|>Ks)fOsq3z!vOg@s)E#PIvGs$UVVgt^Ho6*Y+EpP20yOc z;CNIvr8~=>T4HcUwU7D-HQB=-1Z-;ENf2cG;ucMSA6%3Ed&C=wTu701{B;Z(4KOfP z6r+ky68SbUHj(-2J-S_sE$;Vy5^k%Mte~9)-9qGEcvm2rRn`~u?e+i$3e}Gr53XN) zPynwAg2!4Uka-i}b-y}beW@iD4}C*O4UL)-0)#C~3{A;@-c#&MKI*{R?+P7dNeYVY z!`RaPns_HsagtGplp>Kd zRVVP-qOR(mBcWdOmN*^jn!bP?KgQUO%-(^F4ee;^x-fji^(Rmh9Ru}-1O4DwgZe!D z%Rz67-HVc4X*QeMJ}sWsC9RFH%n!CLwp0011tLL%8f(WCl#$A)MCb{^dlxRG{{^b2 zQBb`C`5mgSwHYzIoR>Ic9&Qj6=F?F0|M@2bUZ8RuUWV4*X3o5kb@f51A=&~(z5a{) zoubcs*d}zRK0Uce&;~iDt}#qJjF?(DBOAP_#~!O^w@sa7UhUd?7re(~Dj&z=cw3%9 z#8S1q_vKsNOxm{J^VQj?e6_;#`%80MH!(}Mhowm{>m+qjt{GTG*lk%38Bi*wD>e;; zvqRX)YX^y4w0feApaahGq-r_`s?^Mad#0uOx9LR>n6@?{s*51SUcY5i_EoL(X9%4G z6+(x?LSUK6co012UEVdu1ZN7Y+{ewF@XPL6;uX>h^o@{pu&EOV?rOg{yXimWYib^cMEKM1gFZ+5yDr#Se)J1M0m`4c)I=UzL+ zlQ?Sy5yu1^R?~yJ*@)t^akMm<+nN4)ojz&LFWS~Unhw|xJmK%!{Ins*F_q^V4lb_^ zDKu)=)FxHRr<_2<(E69uURbSr-OrdqH=;VoanO^~`z<3(xBZ%g>9dp00kTUWQwS*; z!D#ieg-^7Ho;I|z-P@VtX}RIH5Cw1T%7R;*23`Y}^G`HT2f$nt-V;8B3O^dw%(k0+ zwSEwL_s^~Vn#Z#o<*T{&UE=AQ3LbL3xUhueYd?s1z${|c@9255dFv_AWGFbIqa4g) znF?1I?7zVY@uI!g;z$uzD7=$1wG=bSU=*Ed>rTYLFjVki)KjG4I?Fw$8QW!F-wO7D z%0}khxxzMCb)xYVPEmKM-AXDsdE=C>R!Zkn2rlk(8o}#xv?jPesBHU(R40VYlz|L) zgA4=^c$#7?INL%=;6eL`JfG96usU{Z{!<7C#}Ep_8!_z4zugAT{U|7XcH`5+S;Is8 zooprr4U%^TA(x7;FC+{GYPS+p3&D@O3(ut*P+azaxR3f`vXZZ~=6>qx$q&QrWmk;Z z85XWxpvKXTT`^}~I~!+Ck0BDel11fOit#jsp>y2lnr$MyN?8D%XZnLvurS89E){n& zwBSrB(<6>2wzYBI@(T7sD-Hb=IRX5MPKT2uFDPSa1&Fv}l+8jiUoAF)^p@ZaP&heq zzUZ6CGOcHHa&MIPo~glCd)dJzl;A!($0gBu4t31rpa;YJ-7z{z-w>Y&g;bG9xBU(w znT#q&mWWBbNVSff6^=~Fg?J0GTz+4He2S%w{Q?I>TMDca^|{yKcH-$s;;qM^lCJ)B z)>?&^xI#kJ{|D!H?O428(=k%D>bSDm&vY5ZL2G2t`aH960(F>^Xia z_P@6dAV8}@28n@81qL}+xNU1(XrMe=$uAt|f(sbZq+KuE!_Ue$sqi0!pt9fxa-zIj zdD!7LE;SXr=BH@9*kueA^&Yhtp=E)ekrR1nB{gxLTyge!XX~S4VG}1}7Y{o9X>k7D zT*A8+sU@PV7q+z8!SAQ$dJ8dX#+~yS4p8xc1%-;>7PWsv-1$x&LFj~QX=ZzzB3oTf z1b}f2@s^%Trbgdyzdw9tUOvx0pnhf#-_58IJ=j^=k91vA8-{E4<_T6{9OYKcZmR`I zX39KS$fKqKg>L+J96AMw)W*u6KOe*OaHLF$?8ClzsG}{WX2ESWHizr>P78CJ{XLhT zfKKj%HC8*xdGHvuj8}*l{&LLfzC_L? zwzYhBK<$^nw|w+@=)SMe5smZx3yp();U!!>xO8#ylws5xcG!FWHXVsw`5zB@N+atQ zHCP|!Wr_w4@{fRHR>8wRj8ZJYk-QHy5-xm#Es;u9nQ|w9YYrjUc>nAX(VjC2@@*0n zzzBnDt2Zfrw>SMx>fEwf*W=gC5mq~fz{0zi-RuN8j(1!Kn^{Vb--^1 zqqv7T2h|B8_9*q&N}@s;=25J)!rMP&%ZD3TW!Wr06;sI>?-I1U?Q2Vqc*bXC*&f1n zmZYdMC@;R4;`u)p>=8xe**v>=2tvjr-zWIFr3<$MB3)GOD)J<{7)=hwPtmk+$Afmj ziVvV1z*OfE(wnHr;hc)K-7ZPkpLm|N4|!~4Ejr>VcwvG~BX-sU4d$bzNIfv$#17+s z8Yu7LI^?oCRtK?{Q*$k2qPt0C7Y#8-ZsUbX^xb6pKu!DQcJ!tRrO1HS>`SW6gBxJT zNDG#)L4)5^#JEG1=i4p}gFYpekD*tF6U5zAxrwEHkOfrr%eht0%W~1{5VejKE;XN% z2rsBG+?-TR^JwsjAYfA!F;5!upW>;iAsWEltYI&|pKHPeuijB3k!p31oJpN6mYMJ9 z?4h*%|Z;nF|%HsuK(9f@g2#7Vz|a54Nwn z)G1`)Uw;+plUgy!*aEkAhW@q5u4t{p;3wPvK(}LUBqi;Tx2N53TqmxS-BPDY#7^Fe zAEVd2-Fv00ap~M-z_Bea_CJAplBeM(a9{d6-1qQ-BE4+x6)=WMe5ZoOV}|>e9Cw*o z;y>wfi+|DOGb*#`Sdk~?fuNkwYuyKrJL+?Q%DwWJg70oZKW?g*?OL&gj(@6Z_j)M% z=jwfy=<(`3Exo7$0GVeFXhSw(!q*cM5}%QzuB!~T7>TLuUs>?*HLpTC`nP_xCnyQT zc-8I6S45@SbUj`~6b4;Ot9(xoNck9nES`7=?e z`}ln^Ahc>~tRPAVDenmCYm6*C5#(R=Q`>$Ca$}Srhxz@RAQww-?73_z;@OSLJ(Jk9 zhidr}Mo;O4<;E_NKcJ~m?Hv13!0Z>nQ%s{d;bHj(x1iD!H9a>N_1v|lH8WKt>{c95 zqQ~lOSF1*Qwtl;E$-H3uaeH+h^T{rC@F{>_6=;TZj1|XDt0Ss>{RcnK)eb?QhWnSJ z`u_xem`|K*dLZ+2bDdD{)iccVWY8+L-7q2%Rpq`AR)e0|!+2Dr+Al8K*78-4!66}K zruNzC*XG8JDswI%X&%+z@{#XSK25VeQD#83kG5<^t7~290Y3cD1_sykHgRjS3a$(8Qg~M)M`w9LV4xGI^mW6OT6D?gNtkZ?*Zg!n8RP%o$c*5+)k9sw6Y$BB| zu3XNt1*fjqD@6BVe09Lf)SFC59SUs{i1Tpw^Q{<`)-)Bi>fJ`Z<9Nc*g&HxVT8K(l zeZ3DJW%c-jt6e16B*a_W?%8rPxzIG^i?JHsR;GG2kv1FRlgpW4uu32o!pEVUC)~Dv z=Lxpy(*DbLd7_02!eZ6JA*Ma`QL&Ne>m|G_=n@o8stA0ci4o$FgXf8^mr(5(_OaGV zwc5wNye#U-mx~|y@*1@YfuyfjcJGsw>wEDGXzgeyHU$2_}M--rVr z%q0#1!_>FVhaAecTDI_k z*U_GeYttj25YyB|huRR+Yu&!=$ZlMDgFA{Y&6K=Cwi#~L*1IQcBz8+huZG#65J~Dz zF;cgickVrWsFrTNp7b4@DZi7aO(rHe$!?sjI}&#GR-R( zS(tM|Yy6G}4thmSp!K@PAn8p3Yt4j_`(DU~lW2T$t9XVmhLi1;FWGx*>q^TvsFgoz z2_W6ks_e1eU}XkY4*qiN7{jxEiN`I1rtsX4823RM3=yPLcW_9m->D4($o!zIa+)M1 zZ_Ac!_25uGU(Ufn9j}{hDJd5L@f5%l1ZCn3yy9*H`_xly4LhGa^t{VE=K5TTsZn8p zQo5UB6ob5NFB0QAbl);hiGM}2tfj4X#Z1fFlzm+$rI4rHk!VyiWI)e;>um<2Ta(WG z?J%j3*8b&fU2IyrL0hC_S;7VZ8s9Ar7bWA-I714VwViMGROD^3ihXZ8KB+6d1;iAc zA(zjY#cG z;hjc|6&DSS;!z^_MyB13Ys* zxdaxzH3X25FK<{vlPd#8mn+qIK=mC!WLq3NZNX9GuHI5ek_6~eO+APYqDrR)$G{vL z9_UE0mC0@s^6M6!bTY#<{reao9jzqN*c+J>BoRY+o+8%-S@3mz%pFabts{&ATi)ru zD#RPf8k~yguIXGiaBjIcu=F{i)8x5|hu;_AFK798fp7gD_FeGokP)gsRA`-3ggA+@<LUQk)GUlO8p-cJ&X$$)7paY9p)-6K)gXLEx z*YW^kEA(^A{fCNsjVJ2<`%iU`VY=?CRsK?MNW{~%Uh<`Bz8&6wG%VOP+9Gf3Xd23O z@t*wIsAvMs3X{GVX+Ii^6l<#O2gUlRhhD}hwBX7?LC^KE$u!$5`I-w4H?-31)vgRP20)lZbmx&CZm@*69YSh(X`hczYg^y6g4Yw!Cn9bE5jkr4S9SIg7dgnQ$8r z43GeWgfq--REbi@LSKL58>|QZPJ>=b1Ph6k+Nw5BP$fgr!9N2&26EWE#EH{)Oi^np z#Dq$sd;Qhv_gd-Qhh+-v4Spn{|3McoLLwz++g$nVC!c$w@mS-y zhQC`4P{;Y&K3|vJ6EwJ2j2Va;8+cwnnEx+CK3&V<_~BV!MJ9q9GEC`bz`uJCImtY6 HUC;jk6%qHY literal 0 HcmV?d00001 diff --git a/docs/images/capcalc_set_su_modules_prompt.png b/docs/images/capcalc_set_su_modules_prompt.png new file mode 100644 index 0000000000000000000000000000000000000000..57824ffd0379f0532b9ae26ff2940506ff27232c GIT binary patch literal 12779 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 literal 0 HcmV?d00001 diff --git a/docs/images/capcalc_set_su_semester.png b/docs/images/capcalc_set_su_semester.png new file mode 100644 index 0000000000000000000000000000000000000000..aa8a14f94f5707e3aa6907c92b890a501c545d25 GIT binary patch literal 7660 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 literal 0 HcmV?d00001 diff --git a/docs/images/capcalc_set_su_semester_output.png b/docs/images/capcalc_set_su_semester_output.png new file mode 100644 index 0000000000000000000000000000000000000000..52cb01c788ef98816e1b382ca33fd2556ea8fc8d GIT binary patch literal 104568 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 literal 0 HcmV?d00001 diff --git a/src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java b/src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java index bc19329f83..6a4b3377de 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java @@ -61,7 +61,7 @@ public int getTargetGradedMC() throws InvalidCreditException { * @return boolean whether Cap is valid */ private boolean isValidCap(double cap) { - return cap > MAXIMUM_CAP && cap <= 0; + return cap < MAXIMUM_CAP && cap <= 0; } /** From 3daae16e4dd9803b10b307ba9d792e8705871125 Mon Sep 17 00:00:00 2001 From: JuZihao <57383789+JuZihao@users.noreply.github.com> Date: Sat, 17 Oct 2020 14:50:16 +0800 Subject: [PATCH 125/450] Update UserGuide.md Added picture for set su commands --- docs/UserGuide.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index a8d631cb84..cd367e1e8c 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -147,7 +147,7 @@ __Caution:__ This is for the user to set modules that he or she wishes to S/U. - + As shown in the image, user can choose to S/U by either a _Semester_ or some selected _Modules_. (__Note:__ Enter either `1` or `2` instead of the component's name) @@ -155,13 +155,13 @@ As shown in the image, user can choose to S/U by either a _Semester_ or some sel Expected output when user wishes to S/U by _Semester_. - + User will then be prompte to enter a specific semester that he or she wishes to S/U. Expected output when user entered valid _Semester_. - + __Caution:__ @@ -172,19 +172,19 @@ __Caution:__ Expected output when user wishes to S/U by _Modules_. - + User will then be prompte to enter a specific number of modules to S/Ued. Expected output when user entered a valid number of modules. - + User will then be prompte to enter a serie of module codes to S/Ued. Expected output when user entered valid module codes. - + __Caution:__ @@ -197,15 +197,15 @@ This command directs user back to the main page of PlanNUS after they are done u When user exits from the Academic Planner, expected output is as shown below. - + When user exits from the CAP calculator, expected output will be as follows: - + Last but not least, the expected output for exiting PlanNUS will be as such: - + Input format: `exit` From 9a6baf21eda0cfce79ac64992b309274736465b4 Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Sat, 17 Oct 2020 15:05:04 +0800 Subject: [PATCH 126/450] Add more tests for current CAP command --- .../commands/RemoveModuleCommand.java | 2 + .../commands/CurrentCommandTest.java | 56 +++++++++++++++++++ 2 files changed, 58 insertions(+) diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java index a974803983..b15ac4a649 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java @@ -15,6 +15,7 @@ public class RemoveModuleCommand extends Command { private static final String ERROR_INVALID_COMMAND = "INVALID COMMAND"; private static final String ERROR_NOT_ADDED = "You have not added this module into your list yet"; + private static final String MODULE_REMOVED = "Module removed successfully."; private RemoveUtils removeUtils; private ModuleValidator moduleValidator; @@ -37,6 +38,7 @@ public void execute() throws AcademicException { try { if (moduleValidator.isModTakenByUser(moduleCode)) { removeUtils.removeModuleFromUserModuleList(moduleCode); + System.out.println(MODULE_REMOVED); } else { throw new AcademicException(ERROR_NOT_ADDED); } diff --git a/src/test/java/seedu/duke/apps/capcalculator/commands/CurrentCommandTest.java b/src/test/java/seedu/duke/apps/capcalculator/commands/CurrentCommandTest.java index 6c9420d0da..08040b761b 100644 --- a/src/test/java/seedu/duke/apps/capcalculator/commands/CurrentCommandTest.java +++ b/src/test/java/seedu/duke/apps/capcalculator/commands/CurrentCommandTest.java @@ -3,22 +3,26 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import seedu.duke.apps.academicplanner.commons.AddUtils; +import seedu.duke.apps.academicplanner.commons.RemoveUtils; import seedu.duke.apps.moduleloader.ModuleLoader; import seedu.duke.apps.moduleloader.exceptions.ModuleLoaderException; import seedu.duke.global.objects.Person; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; class CurrentCommandTest { Person currentPerson; ModuleLoader allModules; AddUtils addUtils; + RemoveUtils removeUtils; @BeforeEach void setup() throws ModuleLoaderException { currentPerson = new Person("Bob"); allModules = new ModuleLoader(); addUtils = new AddUtils(allModules,currentPerson); + removeUtils = new RemoveUtils(currentPerson); } @Test @@ -34,4 +38,56 @@ void execute_populatedList_result() { assertEquals(currentCap,4.0); } + @Test + void execute_populatedListAllSU_fail() { + addUtils.addModuleToUser("CS1010",1,"S",4); + addUtils.addModuleToUser("CS1231",1,"S",4); + addUtils.addModuleToUser("CG1111",1,"S",6); + addUtils.addModuleToUser("MA1511",1,"S",4); + addUtils.addModuleToUser("MA1512",1,"S",4); + + CurrentCommand currentCommand = new CurrentCommand(currentPerson); + double currentCap = currentCommand.getCurrentCap(); + boolean isNan = Double.isNaN(currentCap); + assertTrue(isNan); + } + + @Test + void execute_emptyList_fail() { + CurrentCommand currentCommand = new CurrentCommand(currentPerson); + double currentCap = currentCommand.getCurrentCap(); + boolean isNan = Double.isNaN(currentCap); + assertTrue(isNan); + } + + @Test + void execute_addOneRemoveOne_fail() { + addUtils.addModuleToUser("CS1010",1,"S",4); + removeUtils.removeModuleFromUserModuleList("CS1010"); + CurrentCommand currentCommand = new CurrentCommand(currentPerson); + double currentCap = currentCommand.getCurrentCap(); + boolean isNan = Double.isNaN(currentCap); + assertTrue(isNan); + } + + @Test + void execute_addTwoRemoveOne_result() { + addUtils.addModuleToUser("CS1010",1,"S",4); + addUtils.addModuleToUser("CS2040",1,"A",4); + removeUtils.removeModuleFromUserModuleList("CS1010"); + CurrentCommand currentCommand = new CurrentCommand(currentPerson); + double currentCap = currentCommand.getCurrentCap(); + assertEquals(currentCap,5.0); + } + + @Test + void execute_addTwoRemoveOne_fail() { + addUtils.addModuleToUser("CS1010",1,"A",4); + addUtils.addModuleToUser("CS2040",1,"S",4); + removeUtils.removeModuleFromUserModuleList("CS1010"); + CurrentCommand currentCommand = new CurrentCommand(currentPerson); + double currentCap = currentCommand.getCurrentCap(); + boolean isNan = Double.isNaN(currentCap); + assertTrue(isNan); + } } \ No newline at end of file From 2a3ef4144cd09bdffaca30e60b3a8968e0f86237 Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Sat, 17 Oct 2020 15:29:31 +0800 Subject: [PATCH 127/450] Add test for academic calendar sorter --- .../commons/AcademicCalendarSorter.java | 2 +- .../commons/AcademicCalendarSorterTest.java | 50 +++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 src/test/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorterTest.java diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorter.java b/src/main/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorter.java index 912d4ee2dd..2aadcb6ee4 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorter.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorter.java @@ -35,7 +35,7 @@ public ArrayList sortBySemester(int semesterIndex) { * @param semesterIndex semester to sort by * @return sortedList */ - private ArrayList processCalendar(int semesterIndex) { + public ArrayList processCalendar(int semesterIndex) { ArrayList sortedList = new ArrayList<>(); for (PartialModule m : userModuleList) { if (m.getSemesterIndex() == semesterIndex) { diff --git a/src/test/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorterTest.java b/src/test/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorterTest.java new file mode 100644 index 0000000000..74dffd29a5 --- /dev/null +++ b/src/test/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorterTest.java @@ -0,0 +1,50 @@ +package seedu.duke.apps.academicplanner.commons; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import seedu.duke.apps.moduleloader.ModuleLoader; +import seedu.duke.apps.moduleloader.exceptions.ModuleLoaderException; +import seedu.duke.global.objects.PartialModule; +import seedu.duke.global.objects.Person; +import java.util.ArrayList; +import static org.junit.jupiter.api.Assertions.*; + +class AcademicCalendarSorterTest { + + Person currentPerson; + AddUtils addUtils; + ModuleLoader allModules; + AcademicCalendarSorter sorter; + + @BeforeEach + void setup() { + try { + currentPerson = new Person("Bobby"); + allModules = new ModuleLoader(); + addUtils = new AddUtils(allModules,currentPerson); + } catch (ModuleLoaderException e) { + e.printStackTrace(); + } + } + + @Test + void processCalendar_mixedList_success() { + addUtils.addModuleToUser("CS1010",1,"A-",4); + addUtils.addModuleToUser("CS1231",1,"B",4); + addUtils.addModuleToUser("CG1111",1,"B+",6); + addUtils.addModuleToUser("MA1511",1,"S",4); + addUtils.addModuleToUser("MA1512",1,"S",4); + + addUtils.addModuleToUser("CS2040C",2,"A-",4); + addUtils.addModuleToUser("CG1112",2,"B",4); + addUtils.addModuleToUser("MA1508E",2,"S",4); + + sorter = new AcademicCalendarSorter(currentPerson.getModulesList()); + + ArrayList testList = sorter.processCalendar(1); + assertEquals(testList.size(),5); + testList = sorter.processCalendar(2); + assertEquals(testList.size(),3); + } + +} \ No newline at end of file From f36962782729245e47411e7a5613b75a3b8d9998 Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Sat, 17 Oct 2020 15:35:28 +0800 Subject: [PATCH 128/450] Fix checksteyle error --- .../academicplanner/commons/AcademicCalendarSorterTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorterTest.java b/src/test/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorterTest.java index 74dffd29a5..38dc914dd3 100644 --- a/src/test/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorterTest.java +++ b/src/test/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorterTest.java @@ -7,7 +7,7 @@ import seedu.duke.global.objects.PartialModule; import seedu.duke.global.objects.Person; import java.util.ArrayList; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; class AcademicCalendarSorterTest { From 10d87d18c810b54864ab259fe48dc8c565be8b79 Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Sat, 17 Oct 2020 15:38:05 +0800 Subject: [PATCH 129/450] Add newlines after file --- .../academicplanner/commons/AcademicCalendarSorterTest.java | 2 +- .../duke/apps/capcalculator/commands/CurrentCommandTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorterTest.java b/src/test/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorterTest.java index 38dc914dd3..530cbe1634 100644 --- a/src/test/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorterTest.java +++ b/src/test/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorterTest.java @@ -47,4 +47,4 @@ void processCalendar_mixedList_success() { assertEquals(testList.size(),3); } -} \ No newline at end of file +} diff --git a/src/test/java/seedu/duke/apps/capcalculator/commands/CurrentCommandTest.java b/src/test/java/seedu/duke/apps/capcalculator/commands/CurrentCommandTest.java index 08040b761b..ec3cd04a33 100644 --- a/src/test/java/seedu/duke/apps/capcalculator/commands/CurrentCommandTest.java +++ b/src/test/java/seedu/duke/apps/capcalculator/commands/CurrentCommandTest.java @@ -90,4 +90,4 @@ void execute_addTwoRemoveOne_fail() { boolean isNan = Double.isNaN(currentCap); assertTrue(isNan); } -} \ No newline at end of file +} From 3220093e0828f30d91c6cfc520ff5d263bff478d Mon Sep 17 00:00:00 2001 From: harryleecp Date: Sat, 17 Oct 2020 15:51:25 +0800 Subject: [PATCH 130/450] Amended DG for testing --- docs/DeveloperGuide.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 7b05b7dda3..ec518e1dee 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -1,5 +1,7 @@ # Developer Guide + + {:toc} ## Setting up PlanNUS From 249a15096411f549d21025be501fe620cf142272 Mon Sep 17 00:00:00 2001 From: harryleecp Date: Sat, 17 Oct 2020 15:56:52 +0800 Subject: [PATCH 131/450] Amendment for test 2 --- docs/DeveloperGuide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index ec518e1dee..8b94faa76d 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -1,6 +1,6 @@ # Developer Guide - +Before reading this document, you are recommended to read through the user guide. {:toc} From e0df34c1f820329fe58eed40db7f9d46eae296e1 Mon Sep 17 00:00:00 2001 From: harryleecp <60414537+harryleecp@users.noreply.github.com> Date: Sat, 17 Oct 2020 15:58:54 +0800 Subject: [PATCH 132/450] Amendment for test 3 --- docs/DeveloperGuide.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 8b94faa76d..acc951e2df 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -2,6 +2,7 @@ Before reading this document, you are recommended to read through the user guide. +* Table of contents {:toc} ## Setting up PlanNUS @@ -163,4 +164,4 @@ __Extensions__ ## Appendix: Instructions for manual testing -{More to be added} \ No newline at end of file +{More to be added} From c37f3e113ccbd9bd3a5411161c41ee2706872390 Mon Sep 17 00:00:00 2001 From: JuZihao <57383789+JuZihao@users.noreply.github.com> Date: Sat, 17 Oct 2020 16:31:46 +0800 Subject: [PATCH 133/450] Renamed reused codes --- .../apps/capcalculator/commons/SetSuUtils.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/main/java/seedu/duke/apps/capcalculator/commons/SetSuUtils.java b/src/main/java/seedu/duke/apps/capcalculator/commons/SetSuUtils.java index 1d68794708..0347b184b3 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commons/SetSuUtils.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commons/SetSuUtils.java @@ -68,10 +68,6 @@ public int promptUserForSemester() throws CapCalculatorException { } } - private boolean isValidSemester(int semester) { - return (semester >= STARTING_SEMESTER_INDEX && semester <= FINAL_SEMESTER_INDEX); - } - /** * Prompt user to enter number of modules. * @@ -322,4 +318,16 @@ private String getAbbreviations(int number) { return number + "th "; } } + + //@@Author jerroldlam + /** + * Returns true if semsesterIndex is a valid semesterIndex, + * else returns false. + * + * @param semesterIndex semesterIndex to check + * @return false + */ + public static boolean isValidSemester(int semesterIndex) { + return (semesterIndex >= STARTING_SEMESTER_INDEX && semesterIndex <= FINAL_SEMESTER_INDEX); + } } From 5b19737b57b45471459a495b87df03dcd89fbf4b Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Sat, 17 Oct 2020 16:32:51 +0800 Subject: [PATCH 134/450] Edit developer guide --- docs/DeveloperGuide.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index ab12e38252..48743e3bc9 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -72,19 +72,23 @@ The ***Architecture Diagram*** given above explains the high-level design of Pla {Exact diagram and corresponding descriptions to be added} +**API** : `src.main.java.global.objects` + ### Storage component {Exact diagram and corresponding descriptions to be added} +**API** : `src.main.java.seedu.duke.storage` + ### Common classes {Exact diagram and corresponding descriptions to be added} - +Classes used by multiple components are in the `src.main.java.global` package. ## Implementation -### Academic Calendar Planner features (i.e. add, remove, edit and view) +### Academic Calendar Planner add module feature #### Proposed implementation From c06dc919f8a368297d26784eaddf3855b579929f Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Sat, 17 Oct 2020 17:06:19 +0800 Subject: [PATCH 135/450] Fix bug where add remove or edit command with no parameters return wrong error message --- .../academicplanner/AcademicPlannerParser.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java index 796ad082d4..bf3f5fa36e 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java +++ b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java @@ -18,6 +18,7 @@ public class AcademicPlannerParser { private static final int COMMAND_INDEX = 0; private static final int MODULE_CODE_INDEX = 1; + private static final int CORRECT_COMMAND_LENGTH = 2; public static final String NEW_LINE = "\n"; private static final String EXITING_CURRENT_COMMAND = "Exiting current command back to Academic Planner Main Menu."; private static final String ERROR_INVALID_COMMAND = "INVALID COMMAND"; @@ -43,20 +44,19 @@ public static Command parse(String userInput, ModuleLoader allModules, Person cu String[] inputs = userInput.toUpperCase().split(" "); Scanner in = ui.getScanner(); - switch (inputs[COMMAND_INDEX]) { - case ADD_COMMAND: + if (inputs[COMMAND_INDEX].equals(ADD_COMMAND) && inputs.length == CORRECT_COMMAND_LENGTH) { return new AddModuleCommand(allModules, currentPerson, in, inputs[MODULE_CODE_INDEX]); - case EDIT_COMMAND: + } else if (inputs[COMMAND_INDEX].equals(EDIT_COMMAND) && inputs.length == CORRECT_COMMAND_LENGTH) { return new EditModuleCommand(allModules, currentPerson, in, inputs[MODULE_CODE_INDEX]); - case REMOVE_COMMAND: + } else if (inputs[COMMAND_INDEX].equals(REMOVE_COMMAND) && inputs.length == CORRECT_COMMAND_LENGTH) { return new RemoveModuleCommand(allModules, currentPerson, in, inputs[MODULE_CODE_INDEX]); - case VIEW_COMMAND: + } else if (inputs[COMMAND_INDEX].equals(VIEW_COMMAND)) { return new PrintCalenderCommand(currentPerson, in); - case EXIT_COMMAND: - return new Command(true); - case HELP_COMMAND: + } else if (inputs[COMMAND_INDEX].equals(HELP_COMMAND)) { return new PrintHelpCommand(); - default: + } else if (inputs[COMMAND_INDEX].equals(EXIT_COMMAND)) { + return new Command(true); + } else { throw new CommandParserException(ERROR_INVALID_COMMAND + NEW_LINE + EXITING_CURRENT_COMMAND); } } From 2929a7ffbbe6c668380baffafa42262a71ed8dc5 Mon Sep 17 00:00:00 2001 From: Khenus Date: Sat, 17 Oct 2020 17:52:06 +0800 Subject: [PATCH 136/450] WIP Finished Sequence Diagram for PlanNUS --- docs/DeveloperGuide.md | 30 +++++---- docs/images/DeveloperGuide/Architecture.png | Bin 16796 -> 16974 bytes .../DeveloperGuide/Packages Interaction.png | Bin 0 -> 182726 bytes .../DeveloperGuide/Project structure.png | Bin 0 -> 26168 bytes src/main/java/seedu/duke/PlanNus.java | 62 +++--------------- .../commons/ModuleValidator.java | 2 - src/main/java/seedu/duke/ui/Ui.java | 36 ++++++++++ 7 files changed, 65 insertions(+), 65 deletions(-) create mode 100644 docs/images/DeveloperGuide/Packages Interaction.png create mode 100644 docs/images/DeveloperGuide/Project structure.png diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index ab12e38252..9440ef3bb2 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -26,6 +26,8 @@ The ***Architecture Diagram*** given above explains the high-level design of Pla +### Overview + #### PlanNus `PlanNus` class contains the `main` and `run` method, which is responsible for @@ -36,7 +38,7 @@ The ***Architecture Diagram*** given above explains the high-level design of Pla * Loading previous save file into PlanNus if available - * Creation of entry point to available app in PlanNus + * Creation of entry point to available apps in PlanNus * While running @@ -49,36 +51,42 @@ The ***Architecture Diagram*** given above explains the high-level design of Pla -#### Global, Ui, Parser, Storage +#### Global, Ui, Parser, Storage, Apps * The `global` package contains classes, exceptions and objects that are required across the whole app. * The `ui` package contains the class that is responsible for sharing one `scanner` class across the whole app to prevent multiple IO streams * The `parser` package contains the class that handles user's app selection * The `storage` package handles loading and saving of user's data to a save file. +* Packages for Available apps such as Academic Planner and CAP Calculator are stored within `apps` package -### UI component +### Project Structure +Each package in the PlanNus as given above follows the following file structure where applicable: +* A functional class that acts as the entry point to that module +* A parser class that parses user input into executable commands by PlanNus +* `commands`: A package that handles all executable commands given by parser +* `commons`: A package with the utilities and shared classes across the parent package +* `exceptions`: A package to handle all exceptions thrown across the parent package -### Logic component -{Exact diagram and corresponding descriptions to be added} +The interaction within each package should ideally be as shown below. -### Model component +![Project structure](C:\Users\Orion\Desktop\Git\CS2113T\tp\docs\images\DeveloperGuide\Project structure.png) -{Exact diagram and corresponding descriptions to be added} -### Storage component -{Exact diagram and corresponding descriptions to be added} +*Note that while this is the ideal case, packages such as* `global`, `parser` *and* `ui` *might not strictly follow this structure due to these package serving a different function altogether (Refer to the sections below for more details.)* -### Common classes -{Exact diagram and corresponding descriptions to be added} + +### Interaction between packages + +The *sequence diagram* below shows how different packages interact with each other throughout the whole lifecycle of PlanNus. diff --git a/docs/images/DeveloperGuide/Architecture.png b/docs/images/DeveloperGuide/Architecture.png index 070c00e75c689274826421d20c76cf4ac8c8a791..56cbe86b718224bcbe03e6c98eddf6033c075a66 100644 GIT binary patch literal 16974 zcmeIac{tSH+c>V$CPEt`vL%EuGZ;!@7TZ|IE`%8~3-zrry{>7TIp;q2xwmuQ_c^coRk*&cIvdM*7A7Vp zHcbtLArsSqCg30Iu_Hi_#kb~WCZ^*UPo$Zri?4&DGmc3V0{`0*1%n7AvZp8nAqocD zy17YX9c}R*wk~98SDYu%1&q6pu#OInIP6~-FbE8ik_A2rMj%B|h$@uv1yYoT!4xh2 z!rS6;uKysElLi3@E}J^KVo5$^ps8yFe93}TrXNt4a zb_7;O$w3sPA@V@?Wo->39keJI4z!&ei8$boI?kR*VoZS(JV-7;4+tO5Q_@A&an8A74;{P(@0>&B}D#-dkbU}W2EvTukiLT#Y2E1_|WJi+gUocsS zG>pLoW3s288}4r}7U%6~53C6mg&+Z0{v$L1#PJ_7!Q~9q$WRCgVJoGLrC8u}J-z(uAV)LADxB`py~-I+|`;dN^02pN5?W8loR>!ji9hSk^Bfg5<6s*z-EEkK4Ee)cAY zFsQj42IH>o1TrOfIys>Xy|m3Kw%%TNQymj$FI|ut-h<$-uHmlkrl^IGcd$U&nb~Rs zh{7H1@9>}#mt=&L~_`Wa9FqRgF%jMbej94wrCU7f(XCJ>O0p{bEG z4CqD!Mg@EuLOdvPC|{rnOpw!n8G7Rs9e^f-SAAJuqO*ytr?I?&xdF)+;q9t#f(F!t zQj^8nGo*o1bO7NH?!K~q3JN5~3^RMYBiKpLQHSE}pbGVXD*!N9gq|q|7^CRf`?^@@ zxLF|8-BAi~0|eMqPtC;{>1X7KwDVysNdW8k=O2t&9V892$>DZ()n zdjmX@BoA|=P)uAD;O5>)xU3^m+Z2Jf({%E1CIXzQp^Wu4Z5`dzedK-du26)&wgt$* z+X!Lo4pr1gn!8~L+J0~+PqGHwg5*lj@gXQUxgsGHM^8Li5smaV_AxWIHAibGXcO^H zes~8Y(nG-stqFBCBpJyo$m@ckCa&7H4o;p(5E17ABj5>IZaQX)P>`*Mwx%x#iFVU< zfV%qWf(?x*I8|pHnM85Jp!}RI9KjZ@+At(Z&)$pZigswbl5iw4+ySYfVUGj@P(~gIL$C``TUJ*a=3)m| zQ?N%Ec_0BHt2xOkczeiF7(3K~K!naKdm-f)tsjtQzVcToe=W!<~}f(E-+w$Lz(!QIKm-dIaPfH z2b2q3OV8Ea8?9(aQb!OR)yxfz$YezyTL6^ejV($ZZK~*a}RmEi@LkLiyB_d z&k5~}0oI5@cV=`Xf z)l=5N)YQ#PRn-e3Z{nt_ZKkeE)bsXob3>^6$$NqHwG8!Ky@^h)WKU;PEmt!Dg`S5o z;3-f@RX<|~HxCajoR+4ew-XA1)&dqlnYqF-cIG&YsktYD>||u*1vdiB6~N+zB7$`6 zjBysGIu=?alCy;qM9$mLLQmcU3B?$hQ}ne6`er^bke|Ap3)sR?QB8|1uVGAbHZcSH zLLg@PCh}%vqO+lstUlJj&d1o$P!{6?cQkZEdpRSKYEDk}TCQ++eK&vv4PA=7z6Q|n z)%4U;l=DW*YoO(|v@y1FUU*qwh`uH;=))DN1)^$M` zshJpiLM;p&FbH>~f&vVy3imR#Koc#DJt^7AP>c$8oI7-c&;DaX`Dca*K?4TeE1qE|8z(uP;bg?c7FR}?-7KJi!P=zzBM#sm_ z6$;fLdFun3f|E%QvK&-bP0t&R0zq+LBE$f1;%b1fSNGII0$ibF9aVLmWQ>gvkj^Z-jy(=xQzceevVFUp-_qTy}iE@y^S@N)IEb=61d z1HD*190;cGhcyA(o=*CZKOV(_f?)(8RaHiuW_%bX`5!U!Ux?(Fa|`?cPC5? z3@k!9pWZ~|em(nS1XX&fG=-ak_pGIhu|=J6W=779{V5@lQ?cmSMD}(2 zc$^$@$?v;g0Bct6XmL0JAqf?#i0bLz?142Lf6cLMxsO(t83X1WVU@)=!>(I0CkdAAZBy;n zx!PpC%K3Ppg(db277-k!G(k-Jxv3pxc2?QoY9Fu%clK!~LY&;ec8>!gA(V=2Sp zIhWGXccr|j6c;1Rc|n$0Go_C6KkBY=vdYTfe6A5T_johH27LGXYr60by5 zW*=vKRYKu;LNV=mHB|oOf(Xm7c7b$GrXT%Oh~RX|@6Kj6xMwq4X$2yL=j+nM=!UR) zZ)1dz951z|AU8L&CMyfX3U5F4?b>xVR@vxxJ|Iu->_Y@Xtn$HMqP-0^*)3--nG;!N zMqG{A<9=yuwETtI=BeqFhz=}2mD7ba zCsL-))?A=orlPDD53}~P{rI(Xl{H3%j6e%Lbf$^CPwA8PQ()!9h*&b;q74fr3w-}o zFF3yZdCYS#LR8%8fpXv#DH{)!vuDrs?7Sn-?6gX3O=}jw4Aav0mv|?hbt+^Agm^vB zdl978wpbfCJ@Kl0Yu&4|EStx)6CM6*Co(uQc-Q}`)z#fCL~04%q&GiW!F-?Y+iLV` zVcO5g%xtF6#@dk?z7kKu^{_;n})T+=L0_xUXg~il(q`(X*{N|Pr3rT zW(I4SD&3%bq(}qvotXh7}fy6Y~?A{jK((a=3>sX%`g2=9E zb#fd{V9&)KvNQiiZD_#Z2>U}jS-3~-7aOks@RcmNw)0caWT2&Uwf~E{#rMj@8xXms zK&kB~xPE2-b&>ne%R{-Qc0dS&M?di@w`hBP)#a#oF6t1Oy=VNfy*_(Y7y%#iT<{X! ztz|p-xnR)J{UxzAmgE|TS78L1slA=)5~K!uzrd34;8EvHjN1 zai|W~g!=hxzBPy?s@~;|bBf=p&Hz2v#s-9FkdSPCd5dN@^Eux7HHSYiyD5pb7VD@) z{qW$0B#NCkz${xMAODWfRcyGnlyMl^E@IyP?Y&|hxClHe#wvT-0w#|+2x>xyPp$s~ zHMzp8B60jSR`v@MRw|R1iY=Gx;->;DR`)+zfU64(Ne%;K#euS0)uTg~996;yDw2*W zqcek!Ebx_*3cLF!fc4tw&Pr8&SoUwpo1bv3n!OrrVnK8SZSGM=LY1TQvT& zox)>OK?>rs>Z{}MGYDG10^nn8;=e;&xrGEegTfEOS0ZEiFC1m<$$9ISI|@QX9~0G3 zu%+EO7E?a~DlVP|F5Cqkraht;oLg%BO+_m-JsM zgCShU+%D;x84j&%@RB)A8F&#EXgphkqa3yhYp0dokK$ zL4^hFbY@TAGWXMuWMfHjs^OE16fZ2K&VS_4feUG#drNTEmz1$sYp?2u6eQ(~i{}f@ z#yV@oVzpvzBf1B}g7%j1#Y_Cs&ijU!Zk}6-XB*BeEaOov5|(h3GLY*w;&dT8I`fSj zhkN?_GF)sM%NZ@%7>RSJbJMhxJ}pGdT&&|{@ji}MM##*vSHP%Mc=_c>~e18@H$6ip3% zI_tVV&Ry-R5#KSa@1em(OsO)bdhWlzcigDE&&ccvn>@>w5BC9Ncq=u_;o4(Y z{wkNY^6OWfsvIR^-`rGp;7M|At+3OIP3TQcbu9k)WPikWWJf`7>_$(L(}&nAy!onc zLh_$GzRG?W({|lrx7K&bad{tv_^|gZd}lW~-SYg>mCh7;#gpV${Lr=k8W25~1S&RT zdliL$zl)?_NV(Ch@D%>|l=?;*Qz``9!y2D|u5i+)x;Vlx`>8C^0y??r+50+Jp<{QD zCJfbyJ#j*=s6<=NxE~r3q2z@;{%vJCe@<5X{DPRaVd6+n!$lD2l>T)Y+U&b+VcFg* zeRtlN2qy-fsSkG64On_*hH1Q${baVJSe2+dLop-qebmcIp`ohYj$dt`4fwU`^_Z)% zZR1D+ml5a#oO7o04EzZ#zxHAN@SB@XaT$**NS}nQY_==Q+MG;HQ*WA?Ib4p&>Q8>B z)K7xYT0MN@h;fA9$NcULJVE84E}oB{y44N3qpJAaq_n%c0j?7#KRbYDX%75ZyJtS| z;%&z1BL+0%cp=EOM`tzyEtvT}HGNc)Ir&@VfdAslWcVqAYIK!eI_L}S2EIUu>+Edv zNOi3};t(`Deyu|q4}I|@SLMMIy7MWW3%N#%iBqrksH$>0NCaxL4jS#c z_cfg|*d83*8fi{yWYNe%;Y=rOoQi?C*y+>^7^5wb-j(NP0LHx%Lf6$f_p1 z$?Yilz%5s*q;baB>^XNA%Uz`&t=bUbLb`-#-Q^4s zvV7m-qIqz2?%+ z&wI9bYX7Fptd@X$n#$gW<^)G|FtnULk_PcBEZm~Z*{PDY)0kMFb#V&6Rz0R6W1LP* zv+{rWSvx54aB*=&f8aJ0_nOJLymXv%lxZ1(}<&L5nqw$bN-HvcR*$B20jHe01%H;fpV{ z)GyBFno+_f@a)Cgnt<@-9;CofLwm4qI|uk%!sbngk=e^y3UE? zwMU;jcAO!vH1%Y!>G=k3JK0UvjRRO$@?C>w<%-c`;^I5@T!mmSF_6WwC=>i!8*dMV z<3@Z@iTG^^jOj)-yqXfhe+FV383I2tK|@i~|yXLAsQpx1GhzCQ{!N`94c zDtoCXtFO4;GbTwAB~5J;#heAJfH) z58(#^prbY`%1XxpqL@)cI`c!p-&0Wpyi&z`Af@Yw&?D ze-=%7nmsq?ewT(|BoY(-^+m?<2De5SIdPOb1=xPvw z?Vvb-CW%8)G=w1(1Arod^LKAVXCGlYaGUQGAg-$$fB8?R6FQQaz=+P*oYG#Q2LT!! z?#=jn0_2LyoL{~K2v~>jSM2d)j~Q$B-#cq%V|o{Ezt31x4y*-#A^V80xm#Zzu-g;jj_f9>>M9N4*)XEj{cXHF2bAc|Lx3?+2X$d0MAAa zqyfrPJf!}z?<@;LOPv4LwdBQq^xBP!i3}}8T>nQ)8loYroDiWuoe$`L*)Nc>AT!u! z<@;i2dKrLrLec2zVF2~Nvt>zuF243d3J`#Lji(zy3aEkuDiWH#O$GQ zvAU4@_LM=mCR9zBg$L2J*EXfS^;7kH@Xkv29JE?lzs4qEZj1Lw|D$G_8pUV7ozJ^F z$2ea#ogg~-erPJz=42k6z;N>X1?EElFHb36Rs01tDi}O zh-x}w&ufU(Z`~dF-esqvkY=N(Ymk@ti=L=>FPBSZ=Vv=PL(0FtxY#TTp(WY_1_{N6 zI}{olQ!?wVVzjlra-N%nbCz}^K5!tHCjP^Bm9qL<8;?ecB-;$l0*oS zt#_*u!*ksS#9)mu;$jVZLu*j;_W0L_kAC?NaEB^1Ek@(U9^Wg$Wgk@Bvkuj)>J>TP z`ne6!ampYS(R4lVYv7XGF>UCohMyV+F*|Sc?akdB3m2C#)QTCJnW2!9(9%b&-b>?| z7Dl-d1RJC9D>m~y zmt-Cvub#gnfl+@E{|Kf0{OZtiR6uf?@q!S1#T#|4{QA)5;P#2Fg7LUg3HREFpicKT4JbS96_W<#QLBla8az?yB0lxA~cTIlfI zY7%a2l;8QdoQQ3CH@knnNjeo;9)!ns{s_t|5^y~wd95bMS;AiO>=;Mhx20FuP%h{F ztTNYt-gZged#5B#oBkc6p8M^_SL@ zB6ZEGDa-9Ezm}z)_At091BsGDG@0NN%V}l%tk1rS-6BRmb=A8v`(Aqdo^EXJXBM)s%koMsW=-VWb@-Vb#gZ!3 z$s43oLv<1D2EA$n{Lib`MF$jSyYuBR?LDW}PmHRNiXT`PXuj5#Jmbiw=?lMU>SaC2 z?xdG?Vwtw|yRvzO zj_+~xD|Ra1YdrwOfN3TrHA>j)x-BPi=eI1nc^1bQ2Xa61$9QthOwnmZq*P;b`5hY4 zx9!u{j zx&VAK1Rl8~2*k^Ai=5U+jC?={_<=sk0Xqf|{X3n%5IhAW8-~aK5&(L<^dUs_$B6Jd`Tfoi(PNI`ZHV44BATr zAkf4WPD{6ckt4Ao`ekVmhz}E6cAksJfS7xsq1`g46-ss>#K-}%={T>I_8}UGUah9a z098N=QN)ax5az58PSV@E1Q6W0mEHP?5h$dJIRn^7ef(ib!5IurIz7Ie2H`&+OLU@H znix)g`0=nXcu8lZF25K^ie*# z8Av~%kqDjx2g4+aYp&=U8$VeD+|{8Yg_OU3^FEDL2wdN!w~>ARjY^ikCUK>oVNgmT z)JvOc|DthuYUGqhS|RwX;WzlQ=KB-8e|E zRXJe;FeB!9Q*!UpLklCgZFpgm$oVYJP%}-%ZJB~{9b$e`j@W~f94;8~o`y`_D#Imd zzjdQwe_dN4-+bnP7ixlag4wOmUd10Jlm4B0+tZzMfey5-LdUFw*)CumenHHx{9O(1 z#u)k1WV`zrX8a-%5;iNOd#Y!CIMV8dhfi}-=S#G~UWai&ylPgA3)`G7FQvKC?nz+w zt#zESsir-|Q!&>)&ZocIt9KNQiWAuq-Zlr%_Q&-9T2~2p*j&U?-@d;4aAo{Zbh_Wy zczYW>JHNV6o}pE6V`j=nvlm~!ZN0IdZKN*07f_ky{d4qC+4CQbthf@5yPr*^tc8E) zTW2x&@To5U2QDtxeLisPe!ACA?sx0zA+qmd5p#aIFS8K;b~}eyke0yB5kMc3fF*7I zp5~X@`+QX#A(%|SuOF?-TI(>paF~pk6gAXToJ>FA<4S z3XNxKY+TIQX%f9pgq1gr8{k@bU`uYPCLcF?`m$>DK zX9i?%!(kECPNAsPrij>~qb%6)Y@4hw4YRK$avRbZYw%WCL^u~Lx@q$*N5S)>Nt@wdZf&4UKovt{IZN*3Cbq&L&U~buer}_-|gNqb1SQg}KPc#?L>k^7$?n z+ygc;>1)8`h0o=hL(yz2^JouL!jA2O_uDP9h!3p(6`Iqwyt#p_?AN`YJYpXPGLasX z9^ZvvXXNYeu+2{IeIz_y+(rkmiA04Z!t9P*__ym{%wMgX{kr&fdzZer5k5ZRv&CX#bax4Sb~nYXUuD9$s3!YMLv#0FaLT3V55ORaRtR2Q zJu7;AZ%`zF?Q!Gh+zw*#d37DW$<(D+-(I(C3j(HMDFwLwOPvbi2a3_5o5WKAjvF!- zOTkg_w1#tERlWwO0~?=S_a6)yB}Z(~4v}=NqkKXdngPnoSw?aufGv1Mq!_Ju=sO>9 z>P)*$J_(#_7(4;OAbkc#(P<obKEK2e37{h&Qpk|TdjK9%VH3U#I9}uY z0Ker2R3MHtZ8kGBFAiyF4rg_a=kAL=Lmj66e^CNR< zMbJ z*$VY=6agW4m)5?xzx9d;3qE%&pej~6QDm!g#t}Qa{ROTbrLu>gs9dRc`P94abjEl4 zn`9T2Zhk905))A6&^i_C7=T~N#edxz*k9k66ytigTAw>>-SKez`sOF0nbZ^R6&&R8 z$X;nN%w}g=3%kV@HKW!kU}oo}_C&dj^CxZUueDFhIT`(?FIj(uwzgK>x?Po13BS5< zhibcD1#T?5`$%lfMF3-P#^qDraByGyfv{?Qow)IIaWJMTO7=wT#h$1Ts+MHWIKUrEAUV-%8x$uP+Fe1*ivadE# zxqhDqoLTAKn2>FdNROO*!7e(}i;)SkH8DrH4%;><>7B6Bf7Ihg&5Zv7{cOJY(yPtAtnS2yOT+gscLZlqq%}YO9F?FfQa^eZTzYd#hG&yphL~LPK%XY;Fsy zu?+4Wds%GwaN2SpMS8ZnwrKw$c!XZE+y`N2532LT&$(BIvH9Z1wt{zl-Yb}xI~urs zCiwB=o0Nr~XS>m`fS+q)+b6oNJ+Z;gmR-WFb-x*TH8>%z_+@tWWzhD`+jO>zR_imk z-J>U2T%)VB@kg}V^IW#8hIfw?&Rrif3wZl{^+E<4GNH8*?LtC!? z^KqR)pRs4lGquj8Cr;FQA`R^32A60YQQ@4S^H-jc3J!HHCWJJt?7qL7RU={?fQ(6% zi9$APA=)2$>+Fx6nVCy)T^xPC>M{gPWZjB*(w*0n^!uKxR&D--EbG>^wZIGIrz>pA zFYL<@t)?RVFZ*aMdP&q8V#n8@j6qX$-js=^uk&pQVFZ* zP)x~EeXMSWL>gju_a4l-GBI%%Gim|05~Q&-*YB{wwSmUE5`3`F=fUXBWihNFk7l1q z!>~aczh3|A^8KTMY9jHR$u6tGJUgWY@?W%4yR-1&>EZH4c5cI>+?0iU6Em~!;o+ic_VXe>1N~>!nJuJo(IHP0cZ0c>rRQ`) zd)J3;0`%SIO$TLcDt~1kUKNPHVdE1US+E4ZD)~S;8@HL#!1p|JkL_l|;y2MREA@+u z2@!k3Z`<~lN^hTdUeCGuZdJ1W`hu9{RmqaKNj{uI<69V}EvFW+@0=8^?gyb4LGwwr7A&1`2)CU7!cBP0Bdx9KNW zrNn0%cBz$G9|sZx2%WY7- z9LD?{8W30JKTWY+WpwuORPsGI*&*NX>|WXaD(Fw=`dds{sQ$_0*J{7;Qr%P1qQZiwR;D+s51{<;Akh- z`K%n7^BxrDRwMdvV31X%dC%MlVg?_|g1mU%xs&~tB|b8$Gt}ET3RHsXpKiHYK#=Ox znVU8aG*fB*OHb&_KT5o?w9Zu=b))s;UykwVA2^mac7_C6Qus~I6b*ygl|@Alcd)UA z+Hz-WzdQ)VQ_Xh!qTc>E0rynUOcLCiFDqv$kzwsg2bkP{S!Xk{^_FAo*P=CeH(DE- z{8oghbHHk}wD?WF*IX5-hhL$wl6CY2uz2`3~P|?AAuOHw?_wz>Vtm)t8#73;6 z`Cl~8S>1c~a%6f%i>$z_^;-9@$Kgt6<4wPL|E1+cgp*S_mx&GV7)R6YZ2uJjfG0p` zTNX$;Nx(oDa`K4~jO8O5)_xlUArkcuJ7qZ2g#OTO9?NEc02H#gq9fnrxiV!(3l3Zg z+}fK`(YZh0K;L!QT6lYvaBF{W<=69ts?S;RRXYjh0}cNEUML~Y$&Y!SzjDblSH*&a zUDU2DPO`~-{K!kn&AxM|Y82;j%L90(@)O;e9%>(I0ZtEIZyb2&TDup~)V;Ua;>{vu zrMbT6bWSdCJa(hT?#2>X@B|vH6e_^xzLy>5_!#cQf#WqM0Ns;MAaIX&Up)1=m;k4|ro-LYKE zEWumps9%_jUOLFp$r0S(AT_pId!7=|qo(BA6q9glzFuK`jKI^sKU&R89r7`4C}1@> za~hq{NTPl~6E_2+E#Y;GKO$#|@0-h8oa=^af`fX~SLUvgw9;N|F7JAF=xAT|)b=v5 z$K^E4^KD{j&v{Htbn?m4*WRmbe65r*v~sD(Ma&JcxYw2q@%;Q>p(M&;}ij#L>i}&m-AOgQ(XxHtZ>$ZvwV@nl=hLGk9i* z(L2o%VXQINaI_B`5PC;jvUKwGXA~Eq4+W1GGe=#+@pJ9%YLO-%i^QU{k}DH?j*IcB zmk3x9l7~`B^?K1Nt3vUsbLu|Q`%=5NKE0R?S6|GGxLsr(K%x!}^Dt(7e5Z0POm}}x zf%dLpBVt3repr^Sv~z4OscYS*`v-oohgW95d25#k|IRc%c5?W;|Ie83PbQw(5Bn_) zt$n7<*^oS!TR2_>RYaZJ^APNy+j|Qgs?zygFnCi}roTL=zrjl9ebn^_38fY&IF&8y z9hu8=>Dl0j3uo zqO~>Kr*+=QK=(ywZQ{B1nr5)Pf6a0>x!L?u%l)~i2Ir~-V+DG{JFuAlY@Ae0MWRdo zS|J6}^ld#Q#ged>ZG0S3-9?`4DgbI9R%nf-G)vvG}enJ7X`f^@%Yraz1b9q6bcbZ+kr_OTP64hc2Dd@;mjC9qO z)fgq14{Wac$XhIUFAT+lz8pBzRys8jr>EQkMtBFU*{L*ach-h4%{ZI7IQ&X zP9D2g3eATud@m5iIOsMM73GZLO)dSy+HW>T0e-QuBJpaRPEkS3@bI^KpH8ioQ-4a6 z+?9DCIriqoE;M|acSZG}Zzj%UZ7*78Uv$j74O-IGGAst!$Y`scB|O%n5|(dG_gcy) zI@7$p&HTP#+g6+*yImN)d|9!eUF~ECFwuMO6@E?%?(DoFyz9T+Ak|x0iCkL}*!vci zplGc~rnGJ@_|6g%J7wSU*pYbbJYvulf@S{8GU4?|6J~pSbY$6n4UX1=lxv}W2+CN$ zvD16Re^|Q|gy6PQ;_7(w;1?iz8PgH_jP=M_6O)17Zf=&6&t_22Bii}Om6F~m*k1d6UHQtpQeG8#t>5zWYPIX7 zk}vrv`0*s*3Y8&ESor+#16-`BvFU}UH@@Gv6nHroaAsG?{@YP6PER)t4J8Y-wLef= zE4(MjF9Ao(BfQ6tCMYKrn&>FNzZtw1ek2I~e6$$6+fw=>(6MDj-=8)g;EgM;Ck=i2 z7z=93eyc_-@40@GC)cR<)@^ zso}#syq3jSo^zvjQ@s|9h{F{xlo9^3kT~V0Lp<5(3+a0cryCv#u0dZMS`ZvD7a3K+ zYUh98V0Yd3KA__ZY^etrV=`2|A8Vw#FtZXLQCsE>zoqo8VFFx2Se1-Z2YDH`)8e_#3)_ zUCn=u{hV+O=zY-1it=q{_&o8gawj|RycxJ!;1&|ifZr4J$Ou4G3^u$f#Umx#_!kcH z@9@h4mAoKo4%qZ zK-HECkCn;6#awGNDVT>-m|X= z^m)E7n1aatTZR_F&B>Ei`-o3>?_0RAN|d*A82u#jA&a`a)#{9h`)XkIRb|p)j_i0-@jLSz?-^*nhoaLtjJ^RI57qaw zI2JB{xtNI3|3TBT&^BU&8Y4z6&hv(ON7&K2*Yzd%H`coc6|c%v-J@IUxA+M_`V)Dw zwJ@V6bcY#A{KpEa00DDt2Bkf~~QfjDTG>%adn+4ccjjL6K~&Ye5-&SAeS z(UsLZTAkZTMfCQc&KM&{r`t+FrX|IfMOo(VmQ?_O>y)*`3#tj#N~=vcOm zpS(ve`+0nVdy7RTrsQOPIjLe+G&QH>r{AX`c@!tOaU2~}AI7fKDR%k4s0RKcGBt<% zl5qUsMW%xnKMMnu83N(qSs_fvfDcTJ3GUf>Qc9JH`34hn00OAz5tfxb!@+a__Yh~A<;mEMxe+g>cPKwfU>C`#j91!3_y;boIqJebW@W)fCTuYoemLH!iOa= z7GyejT?iwyOT$e}X(=O@;F+PqjKE}V}E7Jg4dUeq5izqNfw()xN?t;`XF4;O_TXdomf z^KV}PpvIW%q0f4``C5wK!hS%ak6F{91Cg(l_4bnYe5|bg?X3sS+#9cD0gc#u`VH&9 zau_B8^~f^STz1{SLDaz1XMWF4F@G^$`0f!euP0X8oY`k(u@Pz--)41Rb0|v*tamnY z)CjA;#sY6VDAbz;Q~sw-{vZ$2&ZPiYkL%2ojpb$vu6*_b$FiQU0jiz#S0mSt|Lt{$ zY)`J;pWFa#@0r`&eQarp=Pph(Lf`=nSzpvE^25#|o#a``dYYQ5WH{WGo0_y#*|@s_ zoJD!2dwGD8;oRpT_E9p)bl>nxm?UhecqXydSZ=7wHT~S;xH|ToobT-r#tu^-`u!Yu z7lV|?W&hd4phMd$aW=M3`fr_dOU1xStE9(ORs+_kx=$y#vlII#Cw#btf~RRoh>OD< znh)fPtbPNf+xZ&Lfjw7=1gmr&g3lwrM=kAyPJi-XD>Ym7SNf4uKJ^~`q31Hd!okO4 zwzf1sASCend(2emew=6@Oos%>Dv2vllZiT%=(+3T%5BH4 z^CIZCp2cpHy^-G=cE_oRcTk@m76}1;)%MH5a_dLVFR#WGPWK$0nbZ;J{YJKN$q*--S&8397zKXpqe12ym~urGzM1Kf7e z$@=T_aRXP|XBKUqhtLC?VM?2Qy{D)z?YF&O&E1~pp?9Sc-pG{aST32lUQn?gi6(qi z_O^0UC}Ir-Ww?_~l07X4ng|Da0BWR>9ez@k7Ve~6S+AF^n{t)TT>;U)2X1HCHD zEO0eyz{BY`|5xGl37k|(#rm_bjj70!R2r{=4S;J+)M`H+xL7C^AC;*i4PO}eP4IXV zS%050S655W36#3vzR@is6+B{`kDHomD%M=UnRxS$687tYE+nA+Yl48Xx!NKcRERrU z!-+P*#ch{zepoxV#h>Pl8Rb||Zi4ECH@@1x0V+nzp52N7>TAnCY%SM;nxI~xg89cK z8XF%9IvisS!vo4pj2Gmsd_+ZUpCV0D4aD#f7;Fi^w`3LOOB&!UVB^5Aoo`a2Fc!22Oa8GiH zohmrJd**`_6Stk~=C-mDYtIr3-X{RmH2=G47%T$3S`=HfWNf#>vvY_{l1Y^ zmYhL|(PE+kd*k?l@XNW~eQS3x&oywnTV5+f(?=DjbfmhCtmMufS{6T@0+Y8t_`km- zpv0NX^Y{$gjm%Ug*IP*}$sD(qkwX7VD%DS!CXDMKwueq!E?a{@N8qr(4!eICdk)Cm(kW`*a2mj8T;5~?4%h6V;c;{u2f73MfNR}vS%+sp~$|3 zBox`VWXt}2)a(6uzdxVP_jg^t>-zosyRPw^=bY!9``qW=&w1|0Jwts>W(FPx8X6jA zZ7rlR4GnEG@W*tD9%!-r@!!}{@#gzWt~W5ZxIMm1PsP` zcu3n5agJU%H?p)l!5e4-p1YCki4H`9{og)dS+J}W2>8iiL2@DxH3$T_fMunjPzB4s z{c(;2_kRGwq-6mBSImg+_9O}!xYfr37mzH_3{eN}fCqBWzqfvJP%)rI&BMc$U`D{} z5`oz@U=X-8L=I@aqN{~P>xqC7z`ZNcg#Z+q1Unbf(GY}_7s(B1(U6yu2JiqwWu@UT zpdEvAz1Ip222;MlyzYD=2{Cr$oa8MG&1Lf$ZVXWnX(fYdpUxF8zNOJ$%4Fr*v zKU&4nU~hj9!rxYVf-lhym=i1lK>@VL+&PzVW$lhU;huq5bv`}qF_ z;*JB5{X=d;fKpPRzd+!o9^Q6x+Hx9(P>_QU#opWz>t_Ks$HToL-Vk#f1P=kor(x_! z#NjbUWItUm1qE|5Ld`b5r%$=OQ{D?SvjElXAg}j!I zot=T1fr$%Toouh+Vq~F1FvlZ^x?sHkGR#>Yhj%tbS;$c=;I4isQvw+)@8Ia-jrGvP zgO8?kM!P~?yv)b|;WQw!0ZzuQ0lqr=P)B!vu%4eI+F1b`K9vM&Uv|X zh_J`{sF}Gs+Q}mvhz`CKgd-Y-Fn3ndh1tug%NbA%5eRKrsG6g@KFkr0Hu5r%Lzx)J zSPhh{4p~#p&Q8wF%*2$e;qGkVB4=VJ z=ZRI*23Co)bCI=^hx_U4Izj#Yb=6&PM2N;gKPMAngg>+AsxoXRx1_F&0kNHP&}U2jDgF z>Nprd-@pRoVc@5xr(o&`fw>U_)HU4o{7rzV;W%|iJOOQ_s}P{zZf1}0^#!bvhPk#W z&cVUeMBW@mHuW$z#u|f-jVNj`b*BIiW4M~8zpNhKQ-ea(cYuHtv^{|lcr%a}-osSh zf}rQEW)C;DaC7n_nL|7^jkE&XfO&kqv}HXVjofkacn^@SyC&Mj%-z=vV+JCb;(fJD z(QfwcW|#msOn{e({}DVr6E8cUAQCKf^<+T`j%1XqshP18+25a_2lAu1xPdjGSge+p zf(s4@(l#~>a6@YQ>3VCSWVLW67<+q?j-{ssh~Nw{b;fx3dwQDUGuU3v%jt# z-qJ@82hi2m-H`$c&_m!6?v~y*p^*{#lP@7Jg1{a*zNB(cQ@xW$folaWX_8)c}X1j&TDU*n4>z zgSGq-=10Z_>E-7`Ao}P5K2yU5Od(+%!S)Jn-s+x4&J0 zj2AGsBld_do@!tS94LJVfGyQ9!4c)WEl_?sF0Mutx`Q2FUB?mOs;eu9G}Hk2 zL)1fqKu%6LH-Cz!pOYHO#2KrJ!f1O?C?|Y67FegkMJ|IQ`3}1^{{XT9Mc#-&^nl9RQGiEAM)tk|ICm3YyuAZb8xA*C(99xU*7$Xs|V`; zL{1RYuRE#lX=wOqw2^99zw1lsr~R-~uUp2;JM1G=RZqC8)mbJu4_LVsZ04bg36EZd zyO2;t@n_FlqEJLmjUGYjt8YASoTDs7EM4%bu2|Pf6QYfT;fl!OE+aAMyJ!3l z<&Hfgpsb{sf<3SX5%fl_{DS2(4HZ$hqkqNSe4N?-A%B$p)nUr>4za|&9yf9Y9j(D} z9zOr5>%UuS7;IP;&`tDCSl(W0f(z1~H|P05uYAMlx2$VchgdV2(a=r|Jrl^p^_7av z@g#xbz1tM~?9;wk0y5gfDQUuGVPm#!8Dng^1YN_g*gLy4RJxaDm2%7j)7QzK;Cc{mMf^V5t zDJu=Tb{73j_XR7t!e5s^efs2CX{js|LXYEz(lUK`Qp-fG`BkRg6Hur&->u&XbK^3f z>>1(;VJE%aBJ$}|hYEWem1n4hujpA=Jy0~^vkX>aa$y3~MeBIUuj2XJPNVN@gnhJf z>viw-o-ZqeHT=5&l@@Upkz<{4f(ev3FnNu_B^Wx*)vNZFNEL2L8F2SM$;2iQD}7A1 z+51sPOvtY`*2B%Qt5>(e+Jp%$mtYCYR;GvuKHuY`Yv0nn`zZQZBtA-*#Kz&ziIutS zovSr2ANQdzf()}`BKS(OR>!Y(^3cWDACpBQk)puzA=*Qs!87p!;3j-bd6)d;a<)MI!7E z{q}`u5Q}`5tvN40gol3~9UXoCy|i#uhSZ?e-`ybp@s%st?qP8@*`n@9w!`bUY0p&-m@&;4!Xj2pw6+okY4? zjj3MxtkJ~6?QSzT!kRwwpldvMc;{I>5zOJkBfh)c!)9Clpm-~xs9ffGZ;f(O$9uzY zf$41L*APc8{IZisqu$yF*4?Yuycuq!aN~jgknsso4TYA z_kVM6SQRcD93=QSIK>b%FXvi$^zPgixSvaHn5ILlCuSsHM_=cfxTUi54SH3vw!B); zf>SI|7O|NAdiYRf;$>(#gY#!ixcPMJCEs^vAaYev^NWdY@5;!ik@bKW|E-DLSQVbw zIsR6ML)m86zOBR0vdBZ1v@Xu+y8^i!Tst~4v|RWA|Lp3&Y9W671~spzv66V12BD{D z>^;j*gFwnZRi_D0Vvw><^#wGsLI@Qhi)_BB3+Peew;oAlV94Be>h&Gbn@ntv9x(v$ z#49}9z5oi=AARxw= zbJC|HggDD2FFsvxxSJ&|Lfg;8l`pW%+#B<5K71EDu<+( zYr1eDi@2yH;rI4v7K!_x@Lbbfv9VzZA3ik78fo1Y$W8SN**J;lkg2OH9t1a^=BVPV zJl@`R+tO952irdN!a`3C1+$L{cj95!E@RcOyPdB<8ZL*Jc4auE6gsynn50TX0<=Fbt(Dmoi9@KD4;PVaUYE!u6!8zmr=O0Jluyep17cMy{FaLw-4 zUemA*Z>qbDerkPLVRFqS=;nWSxa(JE%cxc=wZ{4}UR!zE#`IsdD)(UPCnH zS>O6GpTkJl&&$s>!hU)tp~GJw<6d(q zF1weuOxUL&osRL?Z6VsJ_OPVuZ!WV#I@P7PTp?u&n!PhE_=%Hd?^Ae5Vmhhy`8*YP z^`WMK{+F~o0~*lmsm)=W>E!#Ft>EjDGE?VYzIhUcx2*i~}))p{5;i z?B3E)zPNHvZ&vHGXEjD<&zp}A)5pmb^4oPhnCCab;)d}`5=`?*m@loSob7{W8wI)C zc9#Z&o>{fv%=6b8*kLq=ts?hc3m3FY6v{z zv1chEj6C^K{upg+uqQc8m7SJL@R(rg@uwfkB`)jvANUzTE`0BnKXEN5&OPLN-|4k( zB`h|$oO_qcN)@ndw5X3cVjEo1ueiHD@Hq3>Tx8#1();o&!3+&)(Z3`yzjtQ{j=2>TLXHDGJltokz0im- zkJkQv&G(i#hIA|kW(&+#{|00!bL<6p<19OHxx*5r#-9xMRklayqecze-w<MiSju9JJwNt4{Mb@li>c!(48F>L_MDQY3R zYJA@1y?=0dVrE2l^QP*#)4*`vpx*9T;eR2c8s3@+*I3vHX9AE=S6_!*1)jv7kMalj z^-DB*HSPGFZVyAkyx0xY&`|$G&*xA8{6Rl7(Ns7f{5G)uUg0tIgGhwkApm{H zpx@f^(Jc3we7!nU+)qG)FInzJ0TN8QKRp-#06@zC&?X}W`5y*_(_P|!_=h1#z9WRP zK&ON`RKuxMKuds5IWjxk7XdJHk%MV~qgJ46@%X5C_K2r!*_pjrZJ*-aICTKg(j&O% zgBfA|priF0&`Q+QXPk@paB#H#%-q)%g1vvZ7b*IEW1~u`Vv`r(-uT(hq78udsn-E$ zA6Sai__vu(Dyj0P9tRM-r;@Ly{2gJ(s&y1B{FlW1Wkvt_A_agIUi8u5V<}gT7$J!K zL$S;Ly-9FDBS;fm-P)?ZnE)BcIA-b{tSogVY9CPj*=uMr5tZ#I56pND-MFye=I^uw z2PCyYEX8U8pd!2ufELAPd0X`t_Zh#Ns&Yrd!4VA5p)ukE|3f_*Zb3mn+m1Tb&pLVo zU~*+F$)YrfA50gTL{?CT49bYR`SXYu$|nkEcLFRg@a)C_ zya-L1?z@ltBS=yycZP;We)W7I0fH2QfmRP5Nl^emUEXUI^tXOME&y9mNp>yi{H&Kq zES^28kE%}3R(e>r{ZJ*~q38u=$of_E%Bladtj|E%562+aAdws$z2f~(^s!C9LB7L3 z5>a!q71ZNiAcS|30-$f4%+)n2kXW?pB7G5w*=z+m1G_{US#8&8}~!#Mfdgq zi^aQ^Yy9v^{^9`Taqn7qBaxcjlE1$b<-fdJDKazu^%RL((5*NL)izE^qG#7GIe4+m z^1M8gx4Za4$&0>rKb1sNcbI3C>33!r&c%-ZA zlT)mJk4eL5_hTZTh> zvWVgl?zyuE;R}i1e=tLiye%}@ZDDtIj5Tm9VdD))al$=@AHT_*qP=o)PV%>9I4ZS} zOYCfcTlZ$j5eW0_IiV@-PPS(Sx{o5xL^=ETr1SLJf!O{?ja*eM__IxIn6uF%_rgoY zPXPZQRIhy9;lm1{O1T~_$Rll0d%{m8LjL8@^-U@l;O2}p^;7WDT!N`NNNf@7l4(JH zxHwa=4X#wXvUBl57`2f-qg(lmq)>&eyIrZY*ttlp+w^%gs@z#pbD6DN&!gkSpXomPBD%v=zDCKN}ps})g$9aJ!!K$#T6a#aCR%=o@9hu(bRQ^J52D5-W6qt zw|nO4%B3)IjG2stc2vMc%1gVb-*O5CUr^ymBiyTD;WvhCS7f-7_EKC;?v0oSb}v6R4dxeC!qUy+D4_D)#)z ?5$Vap2%L7j8zK*>oQFO=!8{_kW_sod8gNygzkl3p$u+Jr?qxRe3Knl2Bz(K$`a$Uo@n;Q?n0I8(;5PcYI<7TtZD&xZJk7 z>ill4^WE(<_qMBm1qcH=Jie8qrq2erZshv*)Z@=du5HJKXD9;{gz|h zzj)P_hbsyWKsoZGUiWUUT+h7Q&1ytQ(cOwToW3uPIV9fad=_E)NA*Y_SJtp}97a7un1U=Pt2z&2Lgx{~D zS-b|}bG3T=hVPq``NG#U{yv+DQn8HG2fS|@XQSecuD2j-cA%>uzv_+g<3U?Hl0iny z`Fft$9O3|im230aG3vjiD4uQP70lN=(IB#?tc*?Gv9c}f;sr(pOeO}n0BCkGN%d&} zAc=^3(R*6JO^^vHUd(okODg&1tfO#tH_Pe|(h>HBGWmLcoG1zwmWkV4W;(f=hym8u zW+DBCZu-cJ@J{?IG+U|D<~22eMI|fgf7%vE+e5#llyo$ds>|bNOBZwWb?f1ei=*&zx}&i>E>U@7IKOgV2<&NftY7H#RUxj72;F0#MkCJuw?#Se`?OhCz zCPuxk0VE1@zNbgn_SA3p2z5UMGM-rf)k?jX!z5R|Elm5gIzXy7cU9xXj$F1HP&svy z6$pm``Cw)NEWpd_R6XHq!ZuBwKtEG6$N?Dk0{0NZ2S18Gw=( zf0Q1XE|KZ;pYA!YXT)x$i3fIz>oH}B(~d700@D2gjD~3h`vkB2uCV>;uiVXK#0L?= zs#aL!=H=Kse|BX(Z71KiW77YiG_L(N(ulCKr@@WP8Uy09^ovwkd)v|2kBV0qc^sgf zsaG4}p>8NZ=KvYna>q-IybQY@M_uoQ%zAIGY`~z`V`pO)9X~!b(== zkIx|bc3G5szmz7X?_Aye<|%9}KEMKH0#0`~xb&;8`AG(U^4q+V^E_z5CuNN7cT1>y zh*826hCAm)mcG*FgPiLE49S2b)w#w(Gn7kGOZ#Ioe(e>U3p~>uC){o)s!X;lx#A#t zI%oY|QIt5QUJxL$3~4#%{k7lv3`Sa_Uk2Cc-CphE#r|=i?EzKE$iWqP6}|+g9W8%j zGIDO-_(v8ZCq;F<`H^>cxr>>h)X^Rg!Qh=gif^u_wCiOve0Z=LM-A6Ct!kg!-Y6K< zoUp3VcPmYI_O}eFOB)BVnWma}!-gnNEESx=uc$~ki?_$FpTEELbIm*o&;t@pXbs6+6e&!ab zkIjnoqHk9m3zoYCAjCLdD=yl#hvbW%lVH1xP0^VbE0Ee{5PU8qcMedJ-biOaAg2#(${Tpa4-^{a?@2b{MxOYL zp5$JY!uUG0UK&B>aO$AK5$pD9xb64 zzO;}U*);LfCiepWWoBSEIM%!!T^-XPiVJmpvSpvfoxIk0A!a7sj{1;$(_!)lj`wLW zGmFZmxi+b6s3avfDqTtLpp=vLTFXcHmwh--zTUPo;1}xO_{R)pHi&*t<51BZ3cc$W zY+7DDw<*`GqHgMBi~otc2_CqzNnbpIs!U)zfwP zs{sa$`76mpFKzpt%7uI?%B*!{?@0+fB)fVuy&kZx-)i+x4VRTVyD28l8BV`TK|cF-4&X3T?v#8do2OOaOicQdK28R$*(6>_n(AW(fES%Rvbi&gW55>X z?zRhi5b-yuqW+L4LOxWgIkb7Z_!QtB{Bw>}Y%FKvc^kGlM*ipYfRSnz!p4b$<}U>if-pXY&9)3D_j_ z?iTByy}zZ+oD2rkNhxh*o%6^+v?(-ip8+-}N7M}e%bGv6dw>HdK>n~-10`6Hq`KJbWg6YmcrK6~! zi*i&l0DJ;4zI9GbpCW{A!L z7|7)R-AC7z0?&{qyZl3X5+NR4P5*$?sr{E<`AwIT=F|Gg z<0A^z1IMJ550Jc!nAbZK&Ls1|U%&Wpa)%*PpdRa!3o2dy1{_#r{q-Ke>m|1;P5*aUM_Vw#YL_9I~QAx7zrbsR>h%`|ygXMVi$z#l)BUi<0=Q-edH=ci}3S>6% z-+kcNc1eWi8QWbZL2%$f`}(JzP@Ypk)`&zc_F&Q?Q`!3dY*v%#h5a=?^PMs1L2@9B z;Z5)!fg_8=WA2y}8Doa7MS`PNqSAl4T91bxrg^M?%6?UUUT(aAyKkf=)8cq=xqv>; z2kV~`4|H3x^>EVs?S%TQ8JSGhtF`@oTdC){wqkK_ln)o3y5=RU!+)z22o^6@zkC_U zOZV2Fq=s51e_t19i>s}EP;lkGT+s@Tyu;>`+m?A%7AqgmCX0RfkVOBn7bSYyb&n(t zVgB+Zt5^H7wP||KR{Z2(G_T4x5_-k;s$B=_kcT-KBBoBiI|fXVoORBXS@TDnzP#hN z>%o_oFTh<5&H8JiPN96W*3%)LTd(?V>GW3_ z`~b1ko28U*m3V}=j`*<10YSLD}O{hNWcXMoo(xZoas zlahjwXB^CZRA+Dd``mRbeZ#NUR}oO#*twokNIv_{nCCLN9gX-B61?v{o2vh14|t*C zo+f82xYkpOaVn{A_+0lDI<+)3e(l1}uOZ=dAst5B7a0bz-m~aWf>XUnNXmL zot<>GQ}JKB#hCxw=|$`*x<}=%DYXuWYx+EXp_eX86`RcIlpw zG*%tokmo8j4KDh%zC%==9h79UIabR2dShH`&> z<=p;G90>76Wo?z%GbAy(m>)m#i-zX>!BH+ibz(x~z?OE7Hy~so=-%TJ?R?KiY;l=TX7X|0xH-DEtnEM_lr}m>t7pvMw0s&E;#Y;sjYsG21`|rk;Cb~0YwF$yT zflalEAv1HGbXhWHVqmbj^>|=DedyZwEJiTzL8~k2cYDu@(!TWa_yg9Nk-TRsg@F#t zm#&Kc5@U;JGumxgIU70?M~P2s2)zqKW?MKnDOk-El!X|5GBh14cl=CObNz~hPBq)9 z& zP>mbfyJ>IziIcG~jZ9Kl=hPBr!D!F&2B=)MHGUBJfLie@>Lgu#&k&Ki*)5p#G(O>) zcURSYw&~*9vFHb{rUsO05#sUK@}^G=jEprkH5JhUh#$o}I}=pZk!OoS{EN85am3eW zb$K2;Dq96C6484*UusS30>`A7`4UxaNwJa7R}drO(MnG@icLZlW)s5U9)|&OiFf+9 z@)fNl=%X3NHyTLH^@KHEBipYHeG8C~n!JLIcB4!0+eW7E(n(aM?fe{ynWw!$-5hQ; z$mDq~#xr&-*ha(YrQeSPp^#q~&yC=vnN&fW+N=`YU`B@a>INUQ@pGlVQ{7VJ?minjhsP==Qzr+FQkd zwsHQ)y2p5V8_;ITft4?JjvA*QD@dC~IPi{{tDB80tD6T8^Ligd7bW_=>?7JWj>bs%kkH^NJwD@Ic8WP0vy5v6o?g(m>cC&B+GVQib)v z>3;tsftsO2?g>Jq=Ba{}uyE&#+}VKu;QF$Pr$>NC%k}N4)gk^rVhI21?Iu&NkTq=z z1W_2WWBCU=Ms^44wT8)s#(74>daewl`Pvxl$zSxAhr#>RjIiWJVV6!?n~|*ichfMJ z3fW$-U5P2B=!qHyFmh;if_c&^cj#1s3{!9F+f}LllGA@~>w(*{BVw(87y&nrY+eW{ zmDau(o3~<&U%xBq(pmCGkn)yQxsmh9YZEMn0x%UI$ccLmNScLLM(WaZ*+Q3wZqQl7_%#8;*-r26ktR9vOzatmb8l1rJH?pZy3JT+Tz@{8^E z!RBtx+dI*Bp|aX}kwJ3JcdM24)75Pe@U3RxZ zYDV!8@4d|koUEfr45nNA(KfI?>}VC2 z(Qf_Qp?)R^j2vN-D9G*Op2@(y3toMFKCiy`9T>FRkV|JVH8U*Ja0Ko3Qd47X&_z?V#`zd?4hS@GR{5t%{iF=J&9LzMhuH)_YY zXI*0Us$rMF$Tl$qGCZk_wl(=Hn81xEA%fP5SZ41%w|z>8EPmEi?7s6+q#+kpQctj{ z{$>V|%GsMabj`B8P6@<=By-+0qs&wJ++m_EpBf(KCwra*~Mv!WY%Y77n4npNa%gZ z*5tIh_kNJPxQYyxx=5MuwBNF0?C9|BKXlDz6n}mhT3u3!-rA9Hf4QSP^(pSf(~8Fq zT^YbT;YTXF2HVn~4d}AKNC&NkJc~!4FDT1rUivKpO_tQGho z>c1rOynpev?%d-MZdF~hHJ{#EKFK@x%jJB3o96jmc=Ur6Ny5Y|8v~1bs#BO<<+9v z&O~Io_kQP4e>lrfe;DsMOO210${jm${i{bG+dr)8Eh}7GS$X49Ia2Qv*m&n8vvhTp zOU$)Z`F2)|!^L+YAuH)y?EBBjwWjjG{_;C$%`UtJth9L}*&5~VFNoNi$?eppci^2z zWchn9+~@Re^K7|X);M11mvn{~B)Cel!aACs0>ol=0|gzg)(gxO=z8;GQKh^xL1wEb zen={-hk4b8FF^oIws)9@A{`SP9dB(W3%8#`R1fsjRd;7aWx7^@oAolyrsD*@Y#oDS z)|V+f7x*%an|h6r>M!qHA2(3S_;7Kzv&257Yxlv1?Vz<`n0<`$UQkDU8*cJ z^RRzSiu}fPv*YQ(((0SBYTv-`Or<4Ey%xfg&}JCvK*Y1E_5O{;#nq~UP$GAB`HK%k z>f+1^mPO^g>S{|IRTfzSH?8LtoSacYc>l5w_idXCjGT&An7$&BW5+V`d2xc*chm3P zv(;;YKbxBviwesqft!l8G1Ccy&4aF@RXR&PKXL@F!o1yc%9y%T5EbPLBQMQ)6M8RR z{bktBx?<(UH|jT1QiQ*-OKDI1nmQZs1=TN!2wFVQofEDaf;PMQ2#<* z`xiz6b@wXbYofp=98ob+{=oCo&+pnJWv#4njan}t&6h(PQdCCDV0mrpoj!a$jf!SH zaa*JJ#rr?m(!L@kf5F&uXOU~mDdC?-SeJZlY}i~1Hp12>Q5QG;?MeM3W~Rwkv-hi8 zFC*-eM@C3*(pv|)xE0szl814cml9-~=?GMPg#EtC%f)xdO6O1r^3n+Z4Bs z7qf=f68nB4&Q$63ZL={MiR(WS*i0ALltU)aO22+y)eSHzxsA!w){(kc^W`~Dk(+T9 zp+=@$@448KP@I5v6?Xgk&UCO2D~ugk>eUX(cGJ*Mkx zZD-ZDn&f*A*us-|+Fj2M$UDw{r4OE6w(Sk%bA1WEW-2+^!MarV^POf!jN@HptK3CL z$N0QDo04vzbmrHqrLt~;9Y6jn#aE@7s6YQw&*v2_uRlK$GF{Zxni>}P@*ShB-WZTOtZpw|-XP7SZ1uZyEmH+RcERJBdqIVVP! zY9<5QDJnspWzbLVvtd7@DQ<6ZRcok|0b!zZESFmri||#5c|#O+DPxO!np8N4Lp`!& zYWiwnY~0iL*_=z1fjBIO%znraJQ^Xi?$a%O-co(s+VJE41LjkP7(pA@lH) z7scFac@S}8krAxNn$3;m=FBrDa$i7woG$Ox$~eMyYtbu9WWDo5{MT-f2@vV!L+f(B z-H9?DzDb)-clGSELL`O}YGQ_d|M07U$Tdry8rS@k?7ROnHsujum_yn-JUZTQcB_7w z^Je|>@RYjlY$~Jp>rA`+9dJ|JJ%@6TZ z%1(=733l_+3SfIJ%FO)0**S%4_6|t|gz)K|nue?=C4s)Ld)RlT!*rHslJe_2e!60? z#DH5@ae=A%S40?6!*WqL>d78;liLa3=K{=0JaVczU#J=tUsV)4a=E`iBI=h{E{D}$ z`ZlGCnN6h=^iRU)?|ca#vU?z4itNW|^&f*QR;^?OuygD&^N!l`u z=G0A^Q@^ReD}PNqUW}jS81P#Law$g35xT52w7`$=C}%@UPx8cZRhr|fZ|?@;>Q-tYmgyf=id9jVcr8gDDbvz>a(a^g(F4%(>9PPiC|KA?VgZf+JjN49BgH zc&U+?$oxzqvCaX=-8T*tIM>Ov%D1thx%}T%Ou+IIBKOK2q=NEkF1&twOYkpQ(M zNgNHNc|%4n?Sg5gR$g&+btPwY5wBYn#*KLA%2T_Av#S$#0bydS+jEgPLhT|q{@}Ds z+x=vLkahLoXKatJ=EM&2n9y}{_HGX5=6<(93Ir}-AJ5@0DQEzBy>?*){~Fn5NydjO zO%TN1lhW0evfKzxlrxBl?5M4+rfX-1;|fn&>HQwOFN<7ZTFV2HvQ_e=zF7j>L7D3> zKAsh|a5*#k<%|ilT!}@_-M}t33s2@t{NL^aNO4xZaRWYdu$p^s{>lWqX1xFZ@k@dm z)Zp2@WyR1ef4H@FyV+j!8N~_SZMM@EmLg0b-EV95=3MxUQ|Y;cM%KVvi_6Q|wTY51 zGcH1wo${5o8v5?=jIIM8I8a};3IplRqH{YXBrd!R8Xml3V7dLn4(s2wjV%uXbvC#u z#Ixk{J3MYk4rPwoo%Y1;&eE-a++iWk1;<#0fBf>b{D;HU>E9g0-aVJO7o{!2WxBPa z{S8H>8f7EDWgdSmIu$+}&1<;cX6*IYit5Pxyc^h}kLga=#3$NX=H_^e%A_nKT= z-%jW*oB?*1J!K>A*~4(j3cYhNzs;(LQ80M~68RL!{{oF7_ec4ddb3LEY_2X{K5yk1 zu_(D(1ixO{(b2VDA3Py;&kgI46cMeI7Ok>5&N1Ek1vFW^9d5B6sjxPevvrsuiwup3 ztsQvBI_iliH~=i-W(-HMdid{nt{YaFlKplgS(}r)&ktJLPBBK_F9L$|uDZ8vT*FO7 zs%!hFvFkoOf)Fj=Q5#)#)70k+hmW0N_>tjMu2xBa?he~KMHGAL8C0@o>B;s}OA&4X z&kYntz(_@ex5I-v2-2Z&(>K3dr?T2;M=I%S;YsdnUT3F%AcwK}Ahyxx0YJ;kXOb*z z$isKN-!Ix;CU|W6e}j=pS&HZ0N5!TyyN~abl%xrm+IkjMrq3%Of_@w*7P^^iDs{0o z1oXdST~&Xq4Zzat+pry%ZN7va_WvH-?p|4?nSMfMQ*J(rarub}vyXS{yQYS+eWF=% zLVO}efoNs5g~he1-UI(79@pee&qE-waVuM}@BR&{V4lE%HISkCsdY@yCqv*1+6__B z&AK}*BE7Ip_YO#lxMC0J0tjQjKPeSQ7 zw{O`iw@bSBa8;t1B>N(TCoYOu*ylG6QRhT0F9`_>+1O=e?g2@L9oIVR3e80s@-VsH ziFcYFF<2y=>GLUXG>nhE2^_f%JgoDMuHyILKUOBn3(~&-G3Ao!*}V6%9qA$>C#0gH z?&7i^(j$~u)%HS;QaPzH*i+`=^0>yT?1UQ@{)Umvr&F9?Uw}o5y?7B0eB^XOv>2U! z)3ucz<qtB)Db)~R4x?L@Q*rs8EjO2? z$2u!;^StaGb@AioZ?ur*$Kphd)W~F9sobY4T%U=@&x(lihTr$oxeMTxd{fdTxArnzP7x)ed>nTQT1990a1qD!T@{+5+7kNpNnh@;c^KSHPlWPdjGIhHuF z^Z3*Y=N_=qe}1nv;us;@^w?=)V(j?OW8q02h$ojZOr?S;8R{wLnqzrmohHLn@45xi z8&OT-1tH#QZ0LF&8W}v5q5AmZXEmnRB2?e&r$2w7cJxSSS5%++_MYk1pFjwRIDl_N z{)9F_(9(RGAAuD98|mBxgaY)hKAy)8S+buFh6#NM%LV@H0*y9GA6cw^BkcbGq2hoe diff --git a/docs/images/DeveloperGuide/Packages Interaction.png b/docs/images/DeveloperGuide/Packages Interaction.png new file mode 100644 index 0000000000000000000000000000000000000000..14e915a7059507d4f6055f5495276f27632f6c55 GIT binary patch literal 182726 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%0AVqYx?60nph$v(!i6XCZzH)p=X(QF zOlO&dv8d=BF2x3FSXp(YczwGK1=ob(q4s`hPJ35WoH8+RlG3V6rNVVGAIP~bdXA*7#pdu7V9>S72 zsC6`X%e>(ks2ibG)wcF&-AjD>GPymvpT_H6g9ocC_gIy7I-AF(MFb$)z!KDtu0L2| zTf1zFc?wbhHM7Km?jiR`_`%zM=XuY1Km7}4-@I8pch1&tw%)4Ml0)EmW7}-aNh=XJ zJ6YV}{=6X8yftvzCdNOYy8ZgB#}lG?)#j`9^zG!plz!Bqmc}P9PZr?&mq#~8Fcn90 zw6^;ahd5nTb(KLS-fU~3K5|3`qAvz9LeT`O$c>g5KneDsDUX0(8JwoXt!)VivTP_n zO3;_m$UsG7A0`NK+T-nsq{zMI6i6qVAJlAE-lfO8-EEQ-7f+%=0mfkyw$k&i(hWef zrxm-fZQ$wk<9j?gqLy1@7mkJsIpSy&y|gr?BhJNXS0$cR33oH8AzL*N3_%^lH{~v@ z)GMhUcO4cGtlttUt$G$*6F{Zkoa2CM*Kw$P4*lum!t51Qhjd<`yLn5teT$=$`&J}k zDo%mw=7p^3MBLhW>Q3!@p&_s0Nky+J`jY)+CF~pK6Q^(F;tQvF3NdV6pEn2X55gjz zvQqHx|8XVbzhA6KOq@Etyi{!NY=kAck4}d1g1b}?=CAttk^OuEA?{!}Fjmx=Jz?zp z&kJz&ozMIN1%KMHQkZVgsmiVAz*PBL&yicRqq%b5tNy9Y#=+Yl=`1F)0R4@sG{?iX z&hoMSFA=H&HLE-J`wH^t*X2b;FT8uB%ZhuVwEGnm6mGKeEe`ZoyOq6!URqh)eN(2I z!%;hNc=zCE-80btzWk=OTiAGNxI!{u<8ypQiyf2J>#&T&kh4TQ(4F4Y312n{&W3x7n7mO{{-#7alr$8TSl)o# z)DkU!YMqL}anj~_A{!nNA>{3NR6B|J%A`FLv(&S=#%NNfp~-k^d+e2|-pr}{#lfP_ zJOm+j{nXN@_3{YQprqi+?3L%$vX@*`x_h31c-hx_Az!DUTmkFu{9oFXLb0{cA6(3k z7zS^LN(`Ip8Im!WqA0xju1WgEUt3;DgiP0Wk(lkVK}AlnL+OawMt}OWl(lWn#purn zjD`Zt?3Ok_@lJcq7FgkXrXyPG{c88z;r6UIGDe3FcmwJ)+o<^<1 z7shhRy`^GRUY}*U7P_)!2d)i;=!e~m7I9RA74g%Og)Zs>&}#34KKTCv-sD+Vyf@Wi z5OAX?ouD&3J*O^_q-h}Jr3_f8LD5*26z_4Gk!U5uSFkc?W>$GTER4|3Tj+-msI%8+ z-C}PQucKdf(URdqpE*=|&=zcZR| z_uIW?qTR4Dv)?e~@rUUBZMs`FFV>~U{dj*SS0?yqB0d8%)(JOp5y{+H*gDR6Wz=O_ zd_>X8!Q*LBeOdC;!p0X2D<(c{^vtxjM4+H*x8yt$p-;OI`H=kKg`m23!z#8`yGCLa zG>#+5J8{j(mM<)qvAjC6hLJSr69q$ABX~u?CPpR}EV`(5mhT0IBTtRk$5Lsc*CGodz3kn(szdcPjM4J?y{LpfZR*bd1t5!DeA^$1M7j`uAv zo)vpROHumB+F4IjV;SZA@!r?)C7YfKt#TDbOdYl{M~wremnvhV1>U(?c1@b6+bOE{ zhIytwkK8&T!ogqYuHm9-JGhUB@A)Toek;`IY$QwK!=axJ^U-B%S4cfvcrwQ1!x>o- zlr>B*>>CAsa(PF`3ojMyjslK?A1yKRN>`m(J8g}6!X1uoKLKw1C>O;LJvo^ii$1S* zcA(_b%sviWmRR98a81C13}ednH~Q@02)mDJDNy!T^5nW&_|_V!k6;$MTvlUcey9y)g{AkWh3L;AZg=Ik%pOhpF zl{*G7T;c~_(G+xIS7?dI*}L?CwK5Puf`XzQ$O6jKm*unSsL1L76YC^Sj`lFvSAaJM z-SO03aoSYX76+GoE0l-10rjhO8kZVeaj_;f4%RqoB?ZIofS05tMWDqG1wdm)jLGsm zGCr^Rd_l~d7wv*G_XV)1PC>WlHiH71EN4dNSw2naoz}NGYe_RpUGRs4NK58rZW{0?F**t?rd@1=X zXhep#Oxk#|aE_5V!$(vP2i9v?1!^c$sZJI7{8VD&4zyYXDqbtgo)}UFzdJexhb(Bh z9p{Gzt_p5;s`hXSQywT`Lf1*C+$Xn64g^&G4@k^MaqS~N1WnJ6*j!haMaR$qVCECn zzvsw_?z+mpp%$mdO%E5OHkW!QbyY*HR7o2K58iyDftz9G5}AUf>-?Ye(tDA zSDk|7{kz+zkV_m8kuf3Z%-dh}PC~77W+0}IpoXo9d)M*L zpKD&qarJN3$2*jid>M0`HO2SjmT+roKy6%OYk=A^K^mruSR}_r+lT%9{N-=$ZXjzh zZ@}o6#DGkBzToqy8&T>6fGfTQPo@me*cc8FOhYFMvWdQ5bdI-t)Jm166uVtaVo;?_ z199B=K>W^&Sm@pv_|O_{4rXL1Dv@9I^}>kvdRZ5^k;7{4$Uvi@rFRg8T2Ox>5FB12dr-%Hi&6-NLK24#4I3iv@-#UPyre2}Iw z(uMmpXqs8y*F5jXFOEn@UvWaCnZ0O7%Yc)en(sV19cix&RbJ8FDVFt31H3T_;sWeZ zz+OB5ho$DC&V)sU8QTg9HW`%5D)`ZuRMTWKLSvH$p3c^IyRvs~`viWs%rG^R;UrQl zLmgxJ@SQSs!dQ^9!u??L0rKNVRHoIS9O&Rf(~d_%{P7_Pq~ZVppB+_x4m0|K76fk3 z@vM~^fGw+O97mrVq@le5{jB*hle>>Jb=j^vBZ|y%uLZ#Z7eop1hE&>l64u<_cqVvy z-E%>Zwn1j4uK*H^h9w`{ZQ~x3`d$hWMAdMkq^y`y$;ii7jW;<=G?La!+#Gl3@yD=I z8{e6)t_U3%qp1Ep+fEq|J0evYE3&U54K0sSv_agbi3%aXbOV>qJIG)=|IG6 zt#3V;iD@n1XqEj&hCVuR6Hgnu?W&S~>$+8LB1a{!+H%<37BKcFEX+qq@bhIaCKFR1 zjv#sD;pnJ0&KC-=D??-B;AAJjfWyJZSM~YwFkD>R(Ri`Uq$iS1QMKh#GN!;nM_0GY zdwV>gm`Esl;<~ACjTbs&Fdb;yWOz3I= zIOwUOukYz0DY+2d*T=-J_Kcm7Fiu3kZFem<099YjcTIlb5ZI|E>ePmkAV!LhKfdKa z(s}5xP_95`9Psq*+*kJr0r|aMgSZb|f|8ly)DrTh2YXrH6>?Vmc+(#RbuZQLLu37- zuV_t7s%JIca65TW@+6iLoP?7`6hUCexw+y>FIic=j83-{iMqO8@Mvl$$nMW3Tzu9T zO-%4uAks20@Equbj!|ZBTl5U387>eL5a^|Ixa}w8ea8%rkKZ>Ga#}l;d-w8nh?b_N zfvDT=T#qi_Tsi>oEY0_LSS2^^ZurfRH0MTx&D+CQKMopJHW=Lz1bjhqHa7lvYgHZ_ zOsr+=L(l1W{OgsizK)E{$O@+kTQeOC%lGE26`j|PN9krvW1Hf5xa9MhaU^X`3WUp_$ZP! ziH2d(jr|1wQaMFT=ZS)(I97J{P85akaqrd$Hx<^?2>X&E77_!E3U@Q(>otZzp?4NR z>r>;avgTra7H8+T^BL^WkFQ>KM>ehf8q33>rw}*z0d`uWihuV@6`WQUZxAPDw-ED1 z#eDJXmv*?Y^`z$KrK~rf?>bK?_;ZcAJFVOyXi~G_;xGU zaYs#hnsptH*G5<%Otoz}YERrYn#ssgQn^ig;|%Q<)1Aeo(aQmupfq39#exUkQB^gq zI#O?R16^$Xk@Dfy&(&_jYcub4znqF=qzihl=-$d|MTMrzqwegR2MGAspR=;Uli6OR z(PVW81{-MrR+}B!eOUe$a&{fd4*Vn09{AdK1sc!#Is-?1aiAoc)%FM9)<);zMQOesef#O3Mxd$_WhnaT)J(Oqn|deRP`p7n8G}`koc{uI zI#txTv%jaG;bn-H&g+urF=Fm0@B!}XjwGCesUM`7%Q&E~;@#c!pG|8g4O8JUk zuBMOn&l%iXF|`fV8c9(5Ui}sAjel8;GtjU&|10xaK$%yT&-v>Ddd2|rU&_bCLKdEA zIX{JVW|B6E_3AQ(Ztlf)wR7{Oq{FP=ha;*&^_qF3==O|WXj$V4$Im{Ki5%VW48!58 z(JF)On7Fh2Dj3(ZG|E^|(i%=3n~HvHbgd zu7L3~>xh(_&`o=`Y=TGRNlXL8FGW%3)nX&|%>tO27?QZe|Yp)rYSwyg9k(`omPP{RE+b-oe-}DtOl?p;iruv#OcJ5i_bq0TEFmV z1$8&WCT0PJ9=j=K0JddQtuUNYPYb9udZU2 z={=EUK={2qBM<)d2V6N#?^$zZV_utLSvcNWR@B-X_;$kJk4upehfWZ)tf9x(u8#$m z`-dAUD!HTDTBeMT6C!&-B^~S9J&q489(50R^n7QDQ567g_uwIhJn9 z^v5nb$Cod0uhgD((Yf6W&ac7sL8jtm*hd=v+GHg3)p8dT009aVq!riv3NA{Z&J_6X zWTNH^l?4No__G&h5#zwEKKj-a*5(P1BqW!(up%mLTPNwRqYhUzV!m6-HzY8G8iV?k zkb8vNF0=2T){wrP_G_d>rf7_BF%F*w(GIuL0U67^`UqJxOJX!AnBe!ODx*xOHj zM$1R{w^~?nsDiJhH`WF9hJRy5M}Wf-^N*=NhkhcbbhjoE_K8|tmb<@KY6!er8=9W^ zRI{@yG83U{a@D>osqXl-KDwcr=Z;@JdchU_JjzY;p@x|uPZlKas%`hv?Z&EJ-t^-J zD57grf-K_e%A=X@;=254NnV;ldM^c_2my=$8bNdlOz3GfSm9S8O-849Kk!Cz1@ zI-jV+t-fLX@{vP&8esWEI;;ebsZR!r>B+|@#=o`H5tHE%IAe6#z*ftAb$i@>kAj1! z?=`=vsp}(W;{GpZvQPbaLky6TX@GI~@yuK)(M}THy9u*rrjh*d`)W=8OrPqd6H)Sp z=c(;3Gh}AZ@0k@oC+kSguPk2KF9^ zsGa%wn^w#gYYoK;dLu9@VerscUP9Vv+I+{Xc-+wuA4ZPG7$)wu4BhqM(tipReNz)e zL@vuOkJwRDZAByE9)i9j*?Zq43~@iOOl)}s_*HD81PK{Q5u%lK+detK42=dVBrftG z9pXatBNX24&i`8@E825vMn2QSGAMf=Dto!LC<9Rgkk6j2TUZ#oX!SRR)=}O($>dj2 z_R{>tLiK5<%a z?y{10b4g^|PX8#Md2*QE(EjuYw#)1!IT%CjkdFIE`UCt!tqj0Fbfy;n`z?c$D{lhm zo$j|V^Ahy}e=6VLqy_4z6Z~$skWn9%m(>bL?j>|~d!G)^@~vV9SJ)iXQ@C&T`+RXj zCj!|9Oe^uPMMWonu+5~PCaZ>lhh@DdNp(3Tmu&vBOvhiX@D&iPKdByGcl3uv_uj7& zFe#AMe3i_Wp?z*VVoB1i;!I8_>bkC)Bo&NOy7dIgGF`o2oBNQ|1SifX^2_?;L25 zOd$cKWFm>&4NfoIUMyydL)bRqET$U+;Ufa%S>Fo!^4pxC9&Q%#zN_)d+FcCNB2@g# zU6rU4nX0Bo`$O*Ry6)TIMOzkGmdeU$viZ<8)^7tTZLj2W#CQ1x(flEcH2-!Jy9@yQ zhYJ2Yz)B6bnaRI>4Is6t(vs&Yi)D0uEk`PISwV%Ip*id?X53ol*^NOiRfS2nmIge#r=b4|EYbfdurl&%2N#V}P+9E&Z~LA_;KRCR z!v%_8t0#btdQXsD7{-9%_P>Xbn+B#oD+3&h5(F8&N1ku~6(Cpw0J;I?__Q>X^&CIGNWk3&7wCad~0jA!zmek5qIAXmun3l3w|o4^jo_nS`JT^!a?El{j4H zx&YH611Skf{J!5}o_&#=NdB01S^2UcpC#r3cY|~!>dD*^IB3G?*bxl(X2TFvI2yC& zdQDG{o{xZFpWXsIVY*N?SEHwZxBBk^1Sq(n*Z@nZ?2Cb1%dpC+>_weAv%$O_DQV7M zA1z%cdjSFpq=5pl86qYJ$5QAEnWB9(jPw$c^oksdTV+IY%9wDb0Rv|c6*z-SjkFT- zYo0+3^QM38;SCqarQ-d&+|X3m=ThjmBA%Y-%uMu|{sb-!2X`(LzW{>KpyB*v{TXZ5 z8xSpyjpViA!yzqxU%-K>xUwQH9fCY!Ya1p}+e_q=CE-IBR>?qgYA8rfG)j>+5QK#P zLZUBUcNcY6~Lm&e}lma!BmZW`^?LOsi^C2_z@z_l7$}p%1iz{=hQOh1v&+}L?rme0V z3L?Ksr_R*-7c%K`s{ao#0nM+cyXA-Il!r}`eyG65TDiMcjL{?W8l{JdV8X8PO5c9u zFnATILZ)>1#R4#`VFX2#Enh+*pr+I8;AbFC3k2NftrWsDeflDFrf$+7^!#9 zeChHLl6A!aVR;ksGiATnPjcsrX{)7u2EluW!oi3kpBtCfQ$ZQt7V)cN3SQYhKu7a~Giv#ka~4sfMzc@@)UzEF5Q)XMnfTA4v&| z7&K0qU)p?}ri{_IPr{#>2x%WYA1jhpyRW{fMXRFT(H0jMgDA5-# z7)2w#1M>xDZF8`qNTz~>Ugtbl0I-Vm6GlC_h5GO?JmCMo$Ixw3(7_de0*8yNwXzPL~E%!mI zj48618-9LSdy(7khy&5c8y31{)+tIU&Ih@#Ixx512!$Bf6AX72kD-L}44eQg;7RZl zKnH3uuYzHy0o3Q6j>*_Y4xhng>8q=b0EBlL#_npa{jS*%9zn929r$v$GMLEl=ue}KPy5RkZYTr?v<@Hx6R21!%Zuvj*b6e$X?=%guf`|cI&CWk-5yG^up65; zjxd`Cee5U=d$K&q@0gvZ(JA>rsKcS4X{WgKX1(IP(mgyuLw^ZF>3@26+?>fj9r-U8 z@R##hn8X7k9}xlg;t$H{BAI3c7MZ!>qtq5gn4a^gS^$MmVPwpF!l2zar>x+{0oM275;{O z{!WLvj8N16!db(>-uHEd%(a#qf`Y6ki@^*U2faQ3Cg=iDYO5&nn3?~&qP`jXH0~Z0 z4RAk$IDav|PWEp4zhH=vzB*ze28=&8ed;bQ@n=|=I`aJwdCVoFRM)XzsQ(WuL;yJ~w^Zbb|1wDc7@OtF z{AVI~cYA$)`VY7Hh*Yv2n?f)IC za^_Ag7u^j1BJjT>z~dj?{Qr3aN6&(7 z2v*Hdxkt}%jmzICgBtF?dJ*m?pi*k~@sD<%35aQX8!0bO`qo3Uf~uR_ro_F*iavCN3QCnA zRCyd2G0r9z z$%(jkBQEiLv5ueqydQ5ka-q?rxDmVX8!zV%%hK&Nqw|;o0l;&R-ED93FP(eYgNoC37 z*P%cZVziA4AgV@d_0^jI=BIZM1zlkcnnhJJSNZZ!N<3XSXl>c*E?xGtO-gx1JoZ0~5B{PizP=N+sz!+RIL3^wCEhA(On zmc&3m7Fm&0J$qk;g>SXbgVZJ^WkvdkB6**I$_`vWKQKV?^*yWzkSLLBV{x0Py|Rdb zJAJ@ugbHCmSnAc?_*0TEh7Dr&Sri1+qM-c~>od>xj~?l$k12v-bF9gXd4%uL_PbC1S(c8UIg!S;2;;F>iY!AKA^ zhZL>9ShJ&2@q&Q$HX?@u1Ehs$`UdpY&Z%hw4|2H*IuUo{br;H8jkr(+adgOVRnCLC z$Q0JB?eKNiNP9fRC^q4$NIlyxp*=M}u*naeLo|rE@PYpLwZewz=X#XJOGI!OB@WsU z8uB1_J8yUA3y{ftV7;p-McUrbWJfN)ys3F&M(Np0&s9fwetYdQ^tW(Dh98zu05EQs#cf@16t61CByi_stnAS2jK zLpZ3y9n>gJxO8a(;sAl%>Z>!gaL_z%BN2N)eOPEDiD0ZKnz#Gr_+_=nU5SOc@Tb4- z2^EA@VE{CEqUbVo;tpvuM2gMkJJ$eBiTKT8p5&2=gXq*Ozs3Wa z+Hjor+V7d35N-@OC$dlHT5fE+TRC!JxF9f8*q+|7y>N2aqQI47d!M73%xY#IAu3K< zeNaedj}i6!__`J5i?w^TeLaXJPa8#X={N+}meR6>SmrQ(l`V`@Ice;w^5oV5=1O5N z&-B6A|IOd$A6;s~r9Yas2vpWdrX*Y}2mBDM{HWg$W>yWSP7E3_Lkn&l*^2@x)$ucJ z|L%pu;RnH3&$--}S~0w8?B2nBsPwNvz+qS z_vWS-#xz8k%yEZqbG4u+FC4$;HS8Herh@Q%p zfaf=xF;DKBvDfAw+1{A}*{m!^OCV=Az^5ynZXS4i{BVz#DI*{#a7Q+k)PQS5iT@VV ztB(?W$eDxnJtQk23b63V;8d_k9n9Z!oG>v-Wl(UgtaR-7-Yg~8oM1+Sst{XAFB(Nj zyFA6@!B$CB4wg}sQHZ}eK^co6qm+$L>X`%PBTGL`OSqM5(4hTpaL?NKdf~MOx^3xV z&U#80zS7N0t0;h>I>y2gOOj?Yptyz0W~PBPvhh^Hv$6pyV!;H{N2HP;4F3%@4m!Z1 zzR!veC8YtQbyQUBzkh3}x?N*4{R8X5bu@?hVUUAV0WgLa7GAs{7yEqr^=LJ3L0em! zv!beMx9#*)*F7*;HZhX?YB@QEfeioS;QK@P?M03Pf1}3RvtMgZ6xVsPS2sk|)ei3{ zI62#L6%?Gs%t;!ak(0NQMJT^l8PuMnhNg1T?ZB3nzKRUZ7Q`@MN}V4(>;--32o^Wt zLFIi^tG>s^=4{5qnAhUBS5$N?qhWu(a?{Wlb$&5cGQ(N@L%`_fJR@CEKGYfhyP_iO zW^|P8y?~K~vFH#P(_{4Qae%8n0m5u!VfSg28A}0Blf3!o#ma(8WAtu4*qxbdgm8Fz z(C>F{klaqtyJjCTCZUkICj8i(@?95pt5Q@l)&sf3jFEJKhIi&m7-eg<$~O}qsqY3^Wntf;1j1Yk??()K`jTAt?Hj7T!9s1m ztv{5Yk|P?Khg6}c_>S{ye!hq9r|Te`M5VawpFfo*qbNlgggGRw+4~k9$C9aev><&uSKtR0{X0^4eVdUGv zA)h)$mFVb7hserB)yWk;EzHjsaC`gddUu^vId*L5(fMKi&wh*dr2PoL=j!;IM{~+a zUwJfrBc(IfA(Igf&l?idpncwDCU*M*9N-A$G}c6 zK_b{3M_Q21?&->oDiIt~Km!ZSnqa#5)TBIBe-`tC&Gz6n4&)h=HnSYNT`NGW;d00s zn=w3$_Y?u))AtBd;p!17kewGB({|o={yGpmtFJQcJr$LoLzsHm`{P7#Dmo&0lUbj1 zBUA{Iv4|w^fo;@j08t)70{ftIY??zv@jzFlpqvsAt|gEf?1^l;^^1;Kxl2B8M<5Cn!E_>?FjL$ ztEsPNLQu$Ibb9vdwXy5j#p=(WPxci7w@O)gxs|4_Zinl3!k};1D6-IZ;38NFTvD{B zsbxlIeWHtop06#)KTiju6kK)YWop42*I?7U5RS_bukrWq8gRoA^gfhnm#GkMoKc{)Z+-~sEM8P*XJrNWj5!&1X_=?R zi!Bd3MUTaIq}upbylbMML^A)u^`_vU3L(+G1BDO2&#nJ>gPV7=Q*ZQARFrDVC*fy= z!EJ+cEyD9Oa5^S|PnYGVr{Po|6D3(0rAQ+>mXjwfF3^+P-e`=H4ik9I#hBpZE6AIw z{!B>jKL1D5F$3&%HZ9b!kCnQ>9en#t>+3;7Pbq{xsC!&q;-{BR?oFSV@qzStoi`%b z<70PI4eUyO*eP8%<{9%MM2dPfKddr+bsWCz({BDmD~|I(DRSO!t(CEGu_OIkx;sz5 z-q^P-K1iMxO(pf}1zhNxx(i8!^7+6z8o^hK*%=zC;5l)JB|@)gX}iVy`zDa_X(#k~ zRH9M{zWNTo)$bQkK|x)~(b9#5=uE*QRpKZu6dg`dJjdtYDy>t92&Vrv zCY_;I%t%PO+;AynOj~!@#7DGNuY70@Oq!2V$OL!D0*1~6z7A)dV$2;}SAn+xBQwWT&BXC6{1Z%6NuiVt)jP0^;4>0T>dED*$fI$Hf8 z>FAo<&{FqgQ?3GwKA4OHQf{Af<~9XNOw>7#&^*q9_588Kha&JswdHvFCQ%7?+i)F` zMrKJ@2m z3cs&6p~QG}f4>)89(fCE-a5;=&YFx+H|gknf0gbq3EhlL%K zl$7wj$jQ~ej(W5#F@OVogp50P4PP=xg-{3_j-7Ob;CQLP!B6yYWL276>cm`(xRsqX zW*ddbTCG&D57oU~_&CkoeRT1i-BjmFuFn$x0oz5406X!mHmh>hk`^YN1wHPBX0Wrc zFP49`_03LC5x)3F?71LGAzE*3Rd>}{El;Z((6&Jz8Sw4tkVjqP?Ie&s_PIl(B`_e( zSDo@{*ZVa7nB_d*yKz&O!{4TLwa}VNKvWC#e97)GKzt;Ix{8b%Je8dCye7xgS8(V1LapA}&AFW(w(I)V7zQUNL3}O{uddHAUDQdEMn&6srxY8{uR~^|u3j{t zZ-(ei%Q=;G$H29mOTw3vQ-8hIn#67Y8KFhQ(YOa4TuvuvaQpkKR12FV{&VtFhuu~` zw;S7S0Wsn@SYOx$J&teUq+X2~goTso@1hTLeONM5 z7oHnd6UiyEnG|JWs;oppGEqJgQZcfQo~niQdYlUxJ#ntUgMBqF!czvy}(ACwTjZMaP`$6GJ zW_b7oi(-=414iBsLLq_ULa%(v3x49=^v5hk%+~H8+v``fam{bfZjJ!3-^BX3#b7jc zqZpSC!}(hJCm27#Pz{?L`;7 zqp9<3(5+f?Am{Ya8J#&Jpi!2uK53akmUOe*S%N@x1+vq!11^e!koP@XVW*#=G5r@@qZV z6X+h3YQp41M8-mnv=1d~Yl;;C{wq7`JB5XlGw<2)AL^cDa`nYXN2Vmz`9CqGU^qS* z76nz$mF``y7kXvZIKDdm{VPEpE>AIgG{B66_N|Fj(8;uIVZKfkB=eT8jb*lSJ8FEq z=OHZFMFD>se{2Lz&02&7+^yLWMmtFMT;ZK?GGGM+gW&+q_qx8wPHOVJ2V{6Neqhbe z?gBl`8lnAx*K)LxfrNg-4{w?c|G5$!OzL=}ZjyvNpc6a5F502q=RJ6=5(oa0VVb+V zxImjD0vo@2$*7^@EtSZtcI2TGnH21S95>-1kHH{htwO@IO_R#)=U|6)}_1cjVL`eZ>nT~e{YRPsUDv*lJ%@2ttM zkz}{6c@ze4=`Cy`<00Su=X!SjyyUP|Ep(f*E5(?uI|(5kaS<{5DHGl`+{QaYR4B^Q zZ{&OJk^Z@mGa<9R__g>yD)=Bg_@|_48P83Xv&L!+RkR2Ly#jhnoDtTAJ*N1&0nwlbAeD zimi%MD3i-!?fB2({I*IUX_}3E_TS3cI4!BTm$D zw-x@ROKHL_jqE}~RkU`uyFiv=34A6%WaU5PLi|d(oYCq%I~NZ_b%s0Wy5N%*nfkGe zN*~$k6-hYqL@I(A5Q(B%nJnFSOcT_+83$MJBUv*-Z1|XWs)$acX=$X6gQQh~I0BI( zQZW!ql}}gWi;fKnD)+C1N8C=UZGDP1&(UzgXp1Kb?q<{@e*RlQAifeYa)GgJh6|7S ztwp#_H+U@faZyuo!AM177z(eSn^)76koN!UBV+g~;~%oPyy)gd9n@2vvE!@YLeGPP z*Hu%O3hkcX{BlBQ#WDG{gT~5Xz;;G60+J)Zp@yqJ{>i6>&r?Mya^JJ57fjk$&CPH2 z&_@8h*#YZbR?sw1QYXp15tkMHMXIAT6PdX5@BtnWSKZ;Nrzc^{?h|E7QC-DmTNN(7 zvha?jjnsvvmH7G9x)lAEr|04V6<|f?WZZ+F<+~Eeq-R-by`n8Z38A)bFiSw3UT;&N zo@Yb5Euf|mm}(CSQFN>IWubwwA)F^mi=EAhfBk;_?DlT@rp;*h>U65LJYM`ntATUF zfa|%~?d0oFbetng8$)3N{B36c?>h(ooZ%;-Kp?Y8hBj?TC$E5uP9;E(9&9Y%4&*J# zi;7*X_xodGs8{l;O=%{6%d%!|qFI~usDoUeNpPbWxy7&)E#R-&k@>a2hCSo^q-euC z5&FP;Mdo)mb#tp)4az$L-zuLxts0yxp&ATv?%Ui3M?0n2J^`F8OGZl@@~Ar>e-&EL zMRFS7+&fV?ywA98b6r83eCfN!YvSABL5UwBd~rB%BZj~6P^UkmG<8`@mAP6zSfXQ7 zTSEQ7=a;1i*?9CeDvy2Mi)RH^+Z{r^qGo#eQ9tzQnUE7#w`_fa#6_Au<*TRiunIA& zP*Epe{6^Eg5Tx{R1DD89k3+KYbGm%@kr}d~X>xKui&ZKRiIpj4up)*@gz*YdRu(C=gSwDEqWLaUe> zU*u|4;dHHrI8rev7w3UubX3D=zF|m6VPmLeHvmWMiqzjfV7W_s0Zmoe#2l<)7nQ6M zK90(Nf2BTkddEI!sV#D>%~02QMI;U>sVTv+Vq1J4GxmKvc6Ql)>U?IFD){aud}bix zMC5Ev*rB3^@|%kMUE0Suz=N7`{E{RBXs)xSk7~(Xc_W^&XTvt1vQZ&&@5bWb=RuJu znmP%tkT&8Wp=z(^P?xz9Uf=KESMWb<>}u24k2!-RsSxLY9P}O!Y)T!76)DWlgLxkn zfQ%nJQ7JJ9*rM1R+mw(Ec}Rdf?Ey;bacBjq(*PYvZG{$g#E+=Cu=Ty3tA%o@K^|ZL zLV&2shl!^d^)Z^_2poGD5Jy)^6ORpdkx5Ut#?OOWrFn<06JyEp)2@;}&im5VUq1Tk z-h>rOWf{JHFd*CeE&YoMhZyN|k|ZLV_2+f^OME)(ADBr+MU1F@OxJle^}+(mD{RH5 zDHq@7(0N$mz~#YtLF2PO-F!AbGg$$P0rXt*f=MxQijv%{@&IqwBo9ohkRsi~?dk3M zhEnJk^q?NCMr>8~2SbLoSm+F|_WKpEr#xS+?cyHzW5WeS@V4_kBGv5)(~qMW&m~~> z7#-}m{DycDOOeU|Wh^h!`8)=?TF5ShX)Op{PAQ}ew2bMg!hf5JBc8qq1)m;;5DCqC zCa)Yd?l(SMX;sV~)dNELvhdpns=-HB6eh6K$`rrGASJJ`(<|i{elYuF;mEjbv)q~Q z?^xZhk2Ou1*6er!*6CWkaN?98%e{j#J#;u#{$PF}vXq@))8qTiM%g|(Ffb688W;c7 zma@8$AaI9aQ3!dO zcSj!Bg;bi0yY(uq&h<8f94J6oh>$4I=mtVgGKFW%9RjtWn9py2;1alWATm?B&=Ym= z3EQZj9CFM7xvgDYl^dWE@i;6$xnbi@N7+(0LQ@sI;6iybmhd&c-)JeRv2o8mU09p< z$*RW0gqAf9`Q>^Su#JT!GAgRLQH^YNqpoz`J8*`SHf_BX0siDv5a*7TwHgVl{LANo zD>X6xd&$wc_X0K478VeEy#<4jvg#FosuxamZ=Jj6ON~jsywIhGlznu&hq6ZeGz7sC zILx!Zoxb)>YG`D@r`cas<^FKwT)Ea1jcz&_Nk!k0#J%+Oyu9K&YI@=WY7ToU3Sr!M zMYrno=2p?N%LL`i@Q1BMJ4>gQT;~)WB3>AJ?BL8`_YJTj#N>@PRUdn!(R*atd2d2b z@4I+O@X_FTPOC??iLzXBB^i4bBAj(3i$;3X(h_q)OC;T$eEyJ!FZCJcasU!qP0q#c z^QOqGKV4Z_E1rFQ9aMiN*_%b^R(DXGHaDH=qN-A2b~-?j#tu7qG)K+)Wy^O#xP3&j z^7zjC?m5bVF8L73uZQt6$V;FXxOHa8fGzV#- zaGWi>HeuhJ_xHsx)Pe#(b6Ne4C6?g~l`A#grMwuJwjsQ)t0T*h+Ukn+vhaC|x$5CX zlBM!cILwWU0mmbGD`-Nbi16oSMa7R#UOM0|nu5N~Cf?)G8R8Jc+(_^8r#Jd!k|o|P z%tAX~pyZBJzsjQCfO7E%NamMJbe_kz4+t@y0lvki2A2?;k zGzJ%_3?nDxN&tHJGGi;LFmTavO*S%#WBI%`&6!SH^Y?aTC4VC&0YMTTmG8J+BM}~+ z&NCuDT4w%>5S;8R_+);2=E_<#l4@Sg`-aTsdzap$RXM|hd9TB8Kfiz{!!Se>b-RUI zUuPPPw;Z0sr==tF+4c2GEnXL;iU?r`G4?_^o92n?a)sDj#t{ z`uen6Hg?GDBp9&bQD!HKQ^yhTZIf<-_HIgOG z2TVP{ z3w5tyAf786nAS#==8B;gZPMsN44~2B*s8TC9yj{b&Zu8{HoroEV-zNoFXC+b1{8&Hc#i8RK=){HGx+>n>aATl=<; z=*mOsmdjvKXD@UpWnjGx1x2v58=JB^-^*hZ1B)&|*U{%@@0TD9_T9hP+ujhz$ao}0 zXRvildEoF%(85X2g~fg>#~74?)?GX$Rm7(N5mv!qKk=MdB5R-zqa)_kK|#%2aIdSU zuV^o3g|Igvhl`-x$Xmaxfxxfn9CNTd)R~DrqaO@dO@ZR192;B31xWiN-+3z~@C&iD zR$JVjkx!owp2jgq-SpS*s=bUX4ys%1$DShjjyEWr?0Q}NG@+@K{>cwySj0g4R3xJH z4|B(@C4^(jE)>PYGB(nD;58)qGoG(fhg=J37HhQ=BoRT>bmF`4*{v1N;&t{ zrj)_M@O81fTe<0~$PJq;s7*v~w9r7mgd#QE!`w^jOXE!WH}0g$clAYK^cumvR(iP? z>lW2TxoW!7eIGUHq-A$jn>PfcT$l_6MR=KP%U^F=GtD(@Yf0uqpYv>$TmbUcK1Q%Q zvCLDlhhjLf@N41|+l$z?>BQp_VFI0JDMH)tDs$U6Pwz8`5Y$}X!f_YumyoAx+)kHj zw2e*R3mDKp?;uC$R~1&DhSJZr@$mkn!C-HE=PJ$bFq^y>eEpJNW4#{qOJ*9F=HIQV z+lr6<-4|ZRO=yKei-hR^efJ2X3G@Hq>Ko(h3c7wzY&2@D#k7~@4>-eeqa3T>g*Usc-)9t91(eC zF=6F8_h`ouHTJMTe-zZN@9=vwY-BE2S07RbX z@I_}fv~<1QyiuS=4a4mZ-_GxdxIOno@n;xvcIBV%OoB+Ui^-D-j?8F+C%MwytPWDh zeB5dDeF+xC#^WtAeEnnV2ITWm(o(7Sb<&vTwVE_HFq3v#h!`q7bS{r&kB_WiA#P`y z{%Mk*zYJF+o4?BK;;^E8Y?KeA3EwWW#)-ml^54ONbb~D5Ki*{JdEiLOeI=1nEllNn z?UM75aJ^`kqd(M2l-t&l&MEZUs5P!GM}4?+ae`*W3NF8cF!3*)Oi46jas``kmMLB* zm)qULwWYz2RX%Vu-x+J%P+Ec$b)6q~Tk+Kak0WzyvPfQe+g3oLAA`8p#;w&5X~XTK zn`WHh(lcM?XqlPgj-Ov(u<*HRE+PDnEasz*675!2FfcjJr&cXh12lpj1U>zU&ho$b5O6FS-% zvq53vx}Buaa+11o-bLM54V+xLO$DlA`Ti4P>_N&eJq_XbLuJ&Xy`;}y?MeHtdAM~E z#F*p31HQw^74{-hnuD!<{L$y<3R@$6aIL#m(#q2TpNmmlYxOPkVmSfvgFDTqhl|$u zIuw$t3TnO;7~7{_AaRRwaY)I*nv{9db(x2O`*7q`(~yx%wL zKMX&NE1G*VSAX=V*Y<$E_M(jgTik3e8dnST{x!yZSBA|5KBUSNSr}=yfSJw-GmjqX z>?79dCacX9R1zj)k9_WAoo3k+!IrZ3JwXn+%#@fOz6I~ zbCu#1&xcr={ZADUr_7O24wEn5osoJnhc40VDZFhi4y61KXcvk)*w?l30jaoHD&)ot zc1i3~o<2FDpHNT?Zqz$~09`(CI)9HnPCco?#6hK2et0#J?vekYm}^GV({g~vniZ0i z_juHK)u9pc?X0&*o+&4=Zmr|iQ72m!X34BAZtWA17dc2+oV*+mVE-bOFB>_cDre2s z!#1U3hV)^dYmm+LUMz+?_Vh5DDUr~M8J%&w;DZH?1HOvMr*Wa6T)kaS?T!R>k-5p! z53!>?`Q#nM&D`v9z07QrFOl@dJp2)b@|`e^X-&54nnNBU8N)8HaTvYvm4S`Z>?T1q%PJoT|4?ll(TM)}uyZIgfe;`$lL%5TvLp z4z#-qs4IyC));ZZ7gibjRbkE^DRTYP)pg*ZEKHA*(#WPDay&SWEmeU%1hNGw73wA4 z?B<8S-|o`s%ULRqe8oi=-}_bclWU7SLQkw}3JT1fpSyc9){&@jm=!n_h_3<Kqp=t>R;(V&)qHBvuhKN<=UJ!{7$LOq_ys6b|1{a;6rYcQPHpY4J#3Bm;!V z0wgs$yI@6IS!4<#=MWqIC1qcS-X^M*yR9&A8vma9^gDd~#Lb%SlbmoRx-*BRGUh~) zarF7gzAkuNl?<^Q@m1akX_{nSnDYx9DLErM1TgRN0`0h@ZLKD9Lt#-CUalNLJP?&_ zipMKT`s=s>l1mmTLc0S_V#M)61;+}g)Q8-mWSc8l2^7_UdouKQ0hNb=4kW3bffINf z@R5XNJn8CDCMo=c*dU7jHW;+*`lp&Zw)-|y;mDt&fZt#ddi$xd*^k7td!?jMz-iEc z=*}*xPaVxpKrgzvDhNDNBkS$&CKrAMzNjJw--Q2nQ5FsYCj}%aKdtQMqIUYn-5I}+ zTfQ;fO2tyACtjkAjej6X;Y3@XeTh*IuT zb&p7mVG4@+*DPX#sREe|DeB>DL96C)IY~U%;&&?Y0?lu%KZHX~Y4#C$kJc!ShxBNQ z9LuPBN4Mjp%IzeH)KCE0e{!rp|9Vb~By2lKJ@hg-dyB=#r|F7yJbEHCdj!4W0p#TeKnjB53uc}J|LnjSs zGw(Jkq^4fWpH?G0F$!H59+fc2wLDNi;Z_7vEx}oI}^V5PnKtPx^!Q=M5%AY|dn!`fs zHs~+E5DtJFZN-APF7CScVY9U#+8fg!S?z7A3>7jMZnB|Jw)=^mvEwztvih$v{Mih# z#+4^kNco^KBonBz{dBn%A}*Nz&`S}MPX-p_P9j_o-y$GNLJ$U8BwR;=?nXa3Q^leY z1%E|4MX(QPzh9pGa1pQaG*{dHf%8Bn*JqbR@2Z5W35)Q_`|JfghvTEdWa{{*W zKD%?~cu6oOV#W9`LJ~@OkQf_w#8PkxqH}?gE28p>N;e$p)}YoR8fl3oQ&Z=9P(gl5 z^O`#YW&N&a$P_4GI9dn1I#_aBbIu{qjr{ishiLG8UMB0rXSE|?M zD~puKLV@v_Bp#CU)rXj89qwwAvXBT2V)*Hi7(N>7w3_xL=1Ae*e8?PVzQ-7p1fUE0 zk(ClnzCSpPgZiTtU)SqKH8jh~&tp?!Q~#q^`^WI$>!Uu-Q5qHa5-^lvMvck(vc69& zhv7mp#@KzAo{hvu&KV_lwJQy+7de@38Kt;S1o7dds0n0J5lx6M+5`UYxQYUe=*;NK ztCrija|nqE?t1lre7HICoOt2>GIFw{=w)7f#2_DxNU2~UFRhpy+Ng>jnSQ*zsMSq0 zmfrIrS(sNet&y>KSPD@Dj&vd%_8Tba78_9!oL&ioUP*m(&|1|Tsk#dNOWA4#UC=w? zAg5tqkX^N+7-ppYRa&l69e`noc(%TG*S4|+Dem~{kEdcofXCT_2ZX1~m|Q-Ul$zH2 z*Yg3v$oqFfyT{&8(F_ar0s`#qF$y)r;o?RnCE_*dO_xl{Osv6KM$Ae$Np_?*R2X2- zWd3Nahu1C``&3=uy$PUz6Ot`gq_Nt$lK>?%8@D&Ix?EkyhhCsT`2FzXM<%mE@Y&*% zw1@4%nXLdaWi-biNhyqp(C&-&aF~2DDK)lA+V_w$YU=7ahwxt{$H}L z>L+7N7UD(g^QaW_hMN#XrQiT93t}mytIoG#`o9&#htQim z?Gm5E)tA0DD8i1ABC?_~hDVcm>AJlJOcFG?b?wURWl;P==PaTvj-J8PG)H=(aw%Ip zV#=vKp^=m0*Tf#*n@1sLmD#o2rqt_C31Q5*QAeJQG4d8z-Z;?D6*Qv~7*vhH&2{np zv+*|EVsq4tj%;Qsa1|?M&5NP&o6~ww?5U{>NwoHi876*gCcl_y#{$yciD4EdVGCEpx>qieGDWI=#IdO!$}n3%8?z$Q+FU^e ztUu>WCixVt8-p|YcQTI-*3iK5%kE>Rc54+%7R_!q61}8xi!EA5YCu_5s$E~gQvPYP z$#VP5`lEBP`16ZjGouX}=^o<(A6#S9`yO4V14b|p`meo7NfOJIl?x^1WtuLMp>o!> zOxnUSrAj+{eXNnh_Lg5^*o=VdO4F#qEGiQkCncDmv}JExS8i}o6OzT}LU==0D%q{s)2}yJtLLjV;_^=#PiW#Z4<~^XW z`AjE+(L4tunTpzVC%{uQfy~#eZHf6@ewFR~TyV3Ur@yF>Tq=huJdQ>UOG%{EW8NPM z=6ZeKE)r9qau2ka*K{qtin4Marj%2w_frX{zX!=}U50tPpdZiYk8iFlIXnU4`6RP) z$2q;o*>WO|CEVKqsbM~U!vZ87fFY#{0iN39644!!)B`M%SQ3{bI=m9d^T~Q zR~i?I_Wl8mPwx78Fp8W5^sJn0BA(|O49;~7Nl-UflzJ^)9yP|BEkU1>_i*{!!k~_|?yK*Hpg=nMmwlb`1xaf*fxHEpFcvz_FYL+)$o?ncm&|RWP9g-u?brHg zVxjmKoc?@TtS9$Mfv8dq{(5HQ9ZnfQ=4H3hflC?&BwlcviPQBG#LB1xo^g4!x%xB^ zH8|i9J`?KJiNn{P@IT8^eT?80*%!5`wed8jc6bakiy92Fc+T4we@SltI;L~E&u`Ry z4YBy8B=f29Q5jdRBO%Uc`&3&UDq-*PoxjZv<^GQ%9q2IitI@V_*y8$OKkl|&?RITxilH`HiYJafGnO8ch zqcCLU8X%Hw$~wC%mN6$YbUS;nF<;|RU;f;Ua?NIygfHLTWLuKz|8^YbsGa!!R`R-59UzFRrQ{f zg+h=Erk0j2zYv}8CthSWL0a=8T4~y)LIVMf9}vRCSMa*3j4kBgaRklNdXM~PlhDo; zGWga!@)uQKviRZSD!wx0e(E${<7g!`jLLg($SS6t=*f}k@~(mebM1sNp6r}epD#Zv zHv5~qQ{(@ySl~mBD^@s1=5sxX(E!`U_#%-}^ji!>1@fQ5m8+*5kGKN~;e!mjqEOt{ z&S5}@ASOHz4S^RU-s<=hC7rZ4*$aCLJY6tY9gJ-94j9_?Ctg7X7?$%4kImYm*raBa z<&KxcN+>-C1To$z(!;7C^PK>XV&M1~J-Q|IZnlwPc;0!Rgc={=<}Dv*j6Q643E|L;=&UKeent(Q$pF z!?_WmoVR-vE%a6Bp*9g(g=Ma0sPi`19e{{pChAh-@4R+he>6 zsW&Amn-21q66oS08Du~P!hgX4#e)&QC%$ChwIBTvQq!``+;Rt2;0IO%SW6zT_P>Go zuYvub0WBX=1-YC-`)`8k^&ys7pmQ#mVKR)h4sL5tJwe|$FBu7leE`*3N}m@D=nJSD z7o@odlB9b@?=FEcIwA`~rwR`d1kVyOJ#fbe5YZ@W&s8Uj}oBH%O;HN4{ znsxz2D1bJ+jo3sG>WC_nIiM;%+=7T9+Ipe+O~A`YZ{!T-Ib5d7L(O{q?EzEmAnIc@#r%oR!MWxTegy0}ICMqRQ&HVhGccUB2I`yK^)wMBLDX0n9hr<7 ziadS@SB zJHeCnhvTc1lwlV*ICM7?M5&D1_;{MrEdJwUad9ixj7{hp|E_I?>X)I zq6xOTaNp%_rp7z2@r=7gx$I^vrBZspc;BWm@6>YE*Skeh)6r?irg<)WFf!^WcXaYg zaX8a;Ir#$D+|_8i*6MLzm(BMuxwkB?zj@1hu^LO#T+!3%b#wK)y}NwKOCrb!>-t$2 zY}$?bH(cS5<+%4M%2giGMtR4L+F8n_T$5XZ(`l)n_D@j9m|4w#X^n%O9n*&5;6zUR z)Z7hYe1HCJba9J0V0dwA1B(3}X?D9;Mu>KsW17~>!)JRNC-dP4=d}BZF)usjfI!~2 zT5PAk|8E)Robf{sj=vd9^beNv^L=(T8Cj%zlSEAJSM&PlnZxnkCfnnz=t$MfleN3s zn}vk|BW~`sKX8gZNJ2ku10X2*0au2T{AAMrXy8tdsWzASb0KoZ)l`R8D&rg5$3SB> zo;~U^9=LP-4BRz@3n$uWTGDCEs}#w7x!Z$jlsIKu#w6yfdEqO&A8{PiwnD z*S%RhnbN}pW!ACaV{39_fRYQF?YCdbNbgYuE~yfa3dkM`(P7PzT~D40BBk zJnsDz<;UHg@o@p|%6<*?GP>J4|3UDY!F}_O0sq*|lp3!#?sTC7O0kir)hjMhTtukt zKQCQ$a+1I5>G-@A-+d$#`f7D|CMTo#EhWwK)iWqSL#vW6NV`L&_z%9m4NXg>UsriD z!Dfq(@Klx(&PH3zSdj=d2Tc89{u*BOaBu~) zbG;bC-B=#`(GV{bQ-<)xyL%qK=dukoHLq>?jO8{qfzBpTkr0J>BUxwR}wqn>zu_HDImzI{w zt&L5hZg6lm=`|*M?=Z4 zA9Zi|{jVK#{SLSD&!2CP65C1nYW;c+UnGJt(-oo#SR7Z6=2p67Y4>PDiYW@|7d6YD zT~8lf)ZE>7gYWNm=|hlT8Wf8o^tNoLFKm*MMQfFJMMS8N|E5we#?WVB8GIhMYw)5) z(F!^rAL`Z*Pbzezzor3Am#2uf1mQ5*MV=x%9iqv?<}dZq)y2igtKm<#UWFz%qaytC zq*0k7Zf!eT3U+t%JG@Xb$)!m347oT21&nk(y@kH#W?+iRC9b03N~g23-YoVJ73u&< z&4IfOtf;3A!7oa6oA;pu<~xPywRut_^zzC z&U&nd2$@60r`q;dczMHM;iatKO1e7 zQ-|D^+nj8D(uD_(I|xod?x4sEYDLlnZ*mIqgrexGgo`N?s5_SUJzw+~*?C#|!@mSR zvt<ZZGjK7H!PBDrh*C{Lyk3`>gX#?l$@eW zWOuSdV0QM1Ypzp7u)NG%X_R<=YiE{OEecz*4qe5UmuWW2)6JKS_OlI$hz}vM<0lO8 zSM?!jVkh-2fFdz8Pnsd(iKG!aPGSi6Eo5Z<0)Svi8!9S{W;X%-;0Jw22W1$iap1Hy z%&n7w+95%d1OZP&;N2Y{ruU$6`AGshZVyyB)44HQPK(dq4Gc>>a~|LmyOV1wT8*#G zH-9a^Um;ABTowh;#0Nglzd54U8~9b(6d>6pi7vky6$Es;HWZs#yafDC@#NPOd< z;MAKkYPE`0%L-$zNrPbJ;9BW>l-J48)hk(dcS8r~tHxB4hT%|Bg&8(l63Mavbju(D ziUH!RZEpT3P-!S+AVoPxn0IORkMqxUD|g1OJD^EvU?aFjnS8ny$VS3g*c#N@^su@K z!Yi;mnJ_+>!dYS&eT7Z&dD^hKx}IyrO2UJ`kkU;8Spq8um5cOE_#`_dsm@iub99|P z5>U1mIl&rf5Qwb_nI`p6!C+_Oj7Bod0GQC3~BJ4@Q*&9Z+Rs} z3D$`D@m$eGwa8X9wS>L-F$zdAHx=qqhzL9Pk%;Ihs1elA;wNkC(SrYa zxCY4(*U^7@Z5(<ASpn`jC)S@fT@)dk?M~__s3DUD!nDC5sL6CVv*_(nz zrtqOWQsDluNyTb?%LL!!wJ_}U zze(A4LIc@=`KN+V;X$+n*I&&Now9i!SHPLJ1^h=6k+ItmKulDEgwdU4A>bJgF)yky zFeLISh)@e|JzvtZzS<^Yv)&+q+=qQTmKH#F=a81zZb+c<){8X6Eckn>9ZJ+ga8YpE zazlD&sSu$z8PKlv&_B4ET6%LSNrD6|C~7Bbm=1>&9m@YBt_WcBFV{kxjhc)2K@~0z zwnM#b5m_lYCxAGmL;Xc0Qy%paH;XeJN4xaEdm<|vcMf6D7%$qt>oD5jn+Kw-Tmf;- zX4OOKt*t-e@2tUEP>SY!G$|R6HAn4d#K>r{SqE9{9kldru4M6iv5(kl0MNpZMFw7> zT?2!c{en9_U*l*q22%Q>P}%-LzTm3x#3z3555X8=$sx)!Z-ovjFO22Bls=jOtHblr z*YiJ)+aai)>SQ0I5RWz zfksG8!Jp&~0$T(u+Hic@;$-jo6#=xh613?TBz!gmE~^bfHFCs7ht3xt77bm8o8BSx zXYBxctZcTh3QvWwpJ4De>52Bgt6mfIyTXsp?dbRr1PafBz;-3-PM`sC+fu#h$$EnC zvLYf?F^#_i7PRIl8X6w2p;(f+?6vxXwIQ%CuqpO);LEoNiw1B$Lz7>gS%$uQwL{n+ zzXw@o!N8sw!6?+1D)~BOeE2;{5zQ_)TvJa`2SEbJEZSau9qf7lW+jw+?Z5aRw91Pc zqL>4lNIG^nGYf{bGBX>D;T8n7l+e$BORU6^M!y8p?@pb;2d6H&E#{mH)Gqipy8<;+ zGIV70p=d}L=6SVC#bnY6uWpg$m+tAmB=V@dULB0K+MV-G7Bv!ir199~R?f5Qwh*{= zv%z%3u8*Z=@~CD5AqD8fkn(Y?Qiyxc1v7`G>S5A`h-hzt>uWgI9Z&{BzoC8p{m_;% zgdcqHyjp0iGgm_IE*w)t~PT%s7C*Vp@QxVJa&;Z4qVwn*P}G+*lDbA7Eq zCo4zrRMF+9`?ae}yPJsod)NKlR#(UMI=6t`^SzF`shJNiBOl+ks`KxH&oa`!I9fJ5 zy!_OT>$8ARjxI7R?72*%8mH7?q6Pm!7&72n0CQZcpA;U z^%`*-w~7@GeslXi-#-fnRq6lQnQMClDq@L@80DPxu-Dw>9uvar_nsM}6ECjsg!Wzz z&YAZo-hDgQ?BIPW=iW&5SBVp;dg`=!&F-U1>eczUt*pLp@p>yhl?6vjN-91K_AnDi z$H#Y(ApidR>+Z;Ui7#^SX&FKza2X zk-Y&edL9>gj5~je_Wyu%-~U1E(}OY;v7$ke%$Q&mmL-*Da`#`uDJ)NBha|k-E$4bH zXIfWk$>PJLO?YJGPs`x1b^Aoql_w?qj^L^)8a!UlzFtn2f4E=aKDP5HzwDGZJ2$r; zlsZ~AgI+2#khGDsvHY>4op|(4ez%LdwCsM0NX$Z>-uL@<(RTr*LnXN8dtIwetI?|; z>zCP_{Fg=N9T;Xi%}1oRH6$-uZF3`$dpkpS)7ViowznfLQ_dFP@*ybrmt8Mw9G$?$ zh|dzT?f}BLwvJ{Dq{?Yxb5!^)H}sPY8CJX^_+hk`a)2)@8Y3q>ZR3xUjF3tvvOo) ziGJpjNR*;k2(NQGGhCOz6LgK!b1p0jl00hOrN*)T`Y#`6X5z zkZNqU?ZxL(e_)!_;DLb5|^as6?a={Ubg2v zK|3Z8UNDdRMR7ls#!D&~UU!$!#SX~$%h4dSd|ir+9J9Zayw?pFo_kpH^L-?El_+O3 zY|Jd1-P`}O<%RnG&U3YU?N3EzC93w5S z+gRwkrEx(I7Qaa1gn~gbIX%<5#a}hLmX>!uLC|u~#DETR2XV*G>PPqG76E_SH_t)G z-F;zdPP)x5zcISlf{TIzJbiY2!3_7u-+#z!sq=}FhxD8c&q}^HL_9x#EWf_GMd3D~ zZuL+cEg;u+iIoCq3?ia*a@ylaOyZef9SB%a4*E+-(zPeKX@(aMc2TsUG}pLV+9ves zFOmvXMcV@axAm~aGX*EJZ^Y9$|QVEPs94;;yC)|8L+ zXMgYC74p5$7gAE+h*;ARz+;F6n?MsQba*Po(KXZL9w9sOS?hPX_`8J9F=XU=yqshO zcO#FFj;~#RRv#(4SIR-)eqo`Z59?NytrTwxvA{sVYFg@t7(6& z@8FL6g`+BWKenQVDus4)MV?d?(iJu{Fg#vJ8&|g~W@-YpC!8Qj85#TjF815K_hUC` z|FGfKoY?sHQ~nafSC0E9v>w|Un}1e50t$m?cv`?J^NlJze)QK+Ss$d5S$!!sqEOdv z?r3QTx@YGJyeJm_>Ysylw~xse+GT`fBZkH;R$ZPE_+uCyznK+y_mzjHI7UjuP$Oms zym{?^#PUni%_yhEAzEB}QseS>2w?T?`AeILfud)fwk-<$L zjrkZYsW0bcvga}}(Lo>tC!5Kz%W0V=2`YUf!xkk~j4dux`>&ScY4kr@iofIlVSuDQ z=!0BXV!Je5e%Sy`W;E;ST~@9|g+jUPfSw6SrIV*8X5 zIJ%7*b3B>is5>gtJJ?S}>dN4ICPdhDL_v2SuxY`rnKcChi`EIJV6oBFR!|~c*l-gk z&T=;#yhyhUE@=`Hvc4X???Te1=b3iv%>QNyNLW18*#JdOm`Rky*O4{tYgnL{p(f*u z4V3M+j7L`GI?lEZ3f|;u2Dpep?sb|x0ic6geEkXIjI9ivd*F>I(>Q(gq;LWgdj|y~ zGXSoAB!v8aCIb?LBNnZ*80i_Okt4u%*NaZ|2ossK+UCj_QG&ow_W?!my zN|%#VPpGC7%D&T+htJWiD{1a546{z3AjOBg6%kz&%2oL_JtWi&CuVlX? zxe{v107tYe+V-w-sM^e(v9yJ+sj5R(-4y(}*Dqn-b(U+mb3f67OYDH$-AJkUjeYmT z0O-?l;>`c?YP?Y~Ib<8{H*6wDtf_`v(g@t*h1qPj@T`OB(!c_(_1BGB zAf{B$_guk7!BcTol7EI>-`aN|eTS{lRf~;9uLBVvoU#llr6 z*6f=~NZ)ZpRzN32ywQY&!EkKL-Bjkq#^WmlQ8wuQ{)N+M{a)(g7UtE~vYx#6&}u~< z;teoeAa^Rv(BOS*a7|14ag>b{g7AxEOcCgqhIaoj8Krl@%Kwj(#rXH4Y11nWHC2qK zlg*C9h5yhNufr2BSBp*ulRmpCIl4gUkN@e8DSre6`o57>#OM(7O?|EfKM>kiq?mWr zzTkJC0+N5I87iq4#JDGt;TX1m?+|`VO6|+w%OXVgO|;*k>*=08fzZAV=)wmZDq#$x02%Ev#%9ZSjbjhIIM9Ux0H z1Sz~mTq1)N2{a*c6fgpwO#jPkFmEa^L|Q1ChUy%UDejJrQhHN;6f#E)@H|FCPY zNl^&=KZwNppS-x|2erif8)5NMnp-%#A;xyLeF=0F6)#kDb=O^>ItI^zYz66H45xT* zc#(*I>ifq^OW<~y{fDdT_l359LH73{0q*hwLj#)KHRbd%q7ZuTJp221vX^+|f6ChW zUfaJ9%e*6LLA{j;L57DVEkD-$`s8H}9dhT{%#K>BE>nm>N3y`})+vF2Vyt$$^RJ@V_}sVJk^}Nt!(sK$&5mm? z(!CC|l!rbXD&50UL6G-~yMn3e{P(riV#G=HcB_|XSq`FXL!yrY6?9(dO1ph=+HhW^=;cR%`Oxm4Ui+_H3ozm%8XTFYnJY#y#Dw)K~pb z>X-O$pGRYbtAz7!XEH$++lKqBp9lZk&MgBt090wI20t3sVjB(T9Zca?bH-ESN`>kh z<7Y1m^wFt_Iy&Z7YPV@{t`%~rPjfCDDxL;0UvJ5(dIMR6U zT?b~O?4}w*O7y(F(*>%?oBu{nZ)Cd;(ZT>6jzJi1>OBNPGuPkqoVsV@0b zoK=W;mOm~B*$>hfkX4j|afvT#v!7_$Fpafd6;?)qlQ_D({`ru7b4TP5j9}FGE3W)Y z+`9^Oxi^zp@aWuK7Llt6O?z?givPD1GpK5uDDoZ{6gyv{98W$WLv`bAmzZ)@fuf8I z+X%35#^*ugC=cuT;St)IwtMgP?#$*7qD6)D?$*H7^E=_;W#`y@_m9b19Lq<;S!h8n zt}iv0r56|ez2CndcZo|xZ*ON8B`07T$A7DSBIa~+@|2Y&E<*YLsKAs_Cc)Q!rxyu> zyE+c0GGvH`xk6k9;+(;DmvVsMgRU>qMH^oKDyg(v)?^2T-mMKqiYF8J&HRECDO(w9 zjIB`1S)q)l)3r^Q?BmaNzjc_HDIeiQzU`lg;rA^Vq(DuLWirmq-cqyp_|Zn2yk9nPkRoH_dahv>XvaZKjc#C` zB6NH>xAvJ9v&`hQ^rF)%&}d$aA4cvO`ZHW#3stUxeCDH*du{1%)1Q|reOLE`TPS`n zaWm(00R}u1behszCL3A$zLf^^baE<5i;?kX8y-&!g)F|OQ<0FmK`cz1Gg;|Y0X@8T zmb{IA$CZU2<)(W2KI?RxPgPr(_ z*dw47uLoMziV_o4k%?G#2jA0U1%1}vR5%X_4n8LU8g_(mbL$Y9U~j2VQ|EW`YZ+kL zpIk6TctH(zVdC@MyKAjXz8lz|trZcM*YV+bO8!*ny>~HR&@g~&ow!w{*Hv}2SSewy zJbNJuKREJ-)MMNS&<_WlfQocJVY9u(Y2Kd~}tegOEY0@f`|EU>=} zoU;l9QNC|S%zk#lyoZABO@7t#3V`7N|5Z%XMZ5HR`Q&1M@KV3ZH)u*ZBic*xX4#+| zpYvMd=WZHn+N*k#9~roYO9jY`gMfkV?*opym5eA<98{(&wzT@T2ynBUdA>oCh86f{ zN5>`~SVbTDw2}{`#)9?Qw3LY0_8WD5A+L{keU|ct1(Ekf%5n&1Pi`m-44W^RFSp?J zXaGDpOGzd=S!WE>MY=8m_dgV+*k!ylxqWiraKMth=1Kmc9sPRSLy~fCYq8DbACnz? zRC2+RvQGG%CcnG05hq2w@U-b!rMYepeuEMjtz7vVl+Z%{}ya97|O|+2d)eu7<7!;Ca?jR_OA!^mle0 zjAU_c!yT0m z$wMi@&MAp|Li8c!JtyQTBcf7;A)g?bqx7S)nhwjTorL@s>Ksf6Ld@o7TT3JVagxk? zS!l3$b2mmc#~W>3=}R46h7P;2VX3g~SNEDq{Q_y}+9zw=NZE_TSHCn(LWb>hDeWs9 z6lhw-ZHGErLqotO`E5f+QrJOD&yjt8#se?rfaHPEwD_-8V5E5b|1vgM!2B<+&+Xgb z8e&1Hd{9#njVJ<$E#u&KfJtSgZ_5xiiwC}E(vZoT+aQxdh^cgXH_8jwVXGjX9|{bO zwe80#^+PeU525d1B;~!JZ<93snq2>v@e0*GZ5vNklNGGe`tD+N93kc%_`z~E+;Z&k zjKG78`g~I}TMr68z8Wr`ht+XZZPNtZIcb4U;vP_-BR?#g%tgPm;R9@Tt zJ*nj6P$&?PSYi@SK5VCluf8)l#C7#@CX~P^XzpnBT>LXk{4Mg|rrAM(chT?{cBH~E zDOH;60-HI`$T;5!1mxvy1%n0k7uoTV$W_UCCZ6J6mAW!29EFQp(Kxd=M!KU|jYg_p z)icEvWe!%GPFuW^gZGL@g~Pz0X0qUa}K zR*%a1gXU&lVlJJ&i*s$+-s}GG(_DafucQDhCtl~LgN=Xj|9^$`2Ve^g2ZTPx(}!A- z_$(zPeQ@BJi0bak!cOKLqulw@^`)mp6w26LXmUTWX_ck?l5vQ`CsQ>}YCd6{;3`0> zbN}E1jpyO@zUQ7w#5ctQnGa5LA&=YAAEaa1Vx+a67CG~upI2igWXw;NKA}1?+h)gC zO=bC_cF61{1WamKr)lRV4TSNNz(#iPdvYiz&tBc$-r3yQ`HFJq%+DM>U|1gEucMNP^M6S= z|4m?eJwYs0P@YrH@gNEB^oeaqTd=Bo$|7>iVCm_kG7^qDZjLH-&|adm_r06QATE?9 zL4AHC)S5DKh`Q?Jrty^RDPoypcsC-tpD&+W;ZN&~GL*(IDNc`d!mB!naR`f$)jvKl z!AF|rP`A#)+^>#GCql6|yGvN+xhY_@s@npWVL*#izV-xZ#eiY(qv7Ls0G$d*UT=<9 z>an@fS@^Z9EwjI-ZGwyVrV0;5lP5}cB)G!I14(~L0XCGnh z*6TwMvltm4sd{@ zIg8Kv_gHbuT?p;rZ(NZ)7Ib^n1$iDxQmJh0Aws5_ zclCd1Rsn^2^S-Uor0Zu<0*$rA_312Jy$F(74+S!_!m;C{FSvq&OtfAc{OmPV^YT9Y zBKdP_E{!E<5ZH}fIqGnMiRz`0Wm~&CSAaB3`)#++@|gx4=fItUe{ENQA?!|leJ+~) zENalpsu__Kr?vh6`Z(T&I)5Gr<6i4{u(q{rCRVOYlID(P=OR{y<2bWjl^h@opHzhXhFnb5 zHuQ{6YuAVxdeZ+!SLr;RS(fQboZGq`>oYX3JS#_;=mAbQ>&K2x7T_&K-}J=mZ8yl3 zryQd3>nm4}+}vW^)fNXMnH#yvi=qdaWF|;&b}^}$U$f^9e^-n9U;h^HKPx?weILHN z9TR8+<(x%v*X14R4X|&4&xpDj%l%anp#S)%ZhfO!B7lv|8n}z%Y{J0W8qo2cj<=}C zP@t~-7Ui}krIw{EJ#iQ_bv<+vZA@7Q4&VJmeZqHc4jRK=H_kl++ zp~t~#Z&adD+|Jw>m9i^J`v<)Ig&hCxjOatSe@7oqw8?c}x13U>z*?-MT6HrR>23{T z=^B$JfYC_HWnh1zJx<6pIT7lgg4k@YNd++jc*ilIg8Dnk;Bl3i+)GC@pu>{_DfUiv zTF5!J1vzDrlBj&|c~Hf0xI8ttp7r#CGQ?-er+!RU9xF(c=lhorLNjP$2&7O6WHSwV z2vpLx`($F*4Z~m;fMiOwSL_p;VxxzX5Wf%)&!@%^iZ{-lMzJdK`frB3^yN!}mFJsT zgAxbun{7TfHgNz_(8&zz8`IDXuFHyOvm0UPI5;IZ<5+32L#Qlca&bosM!)M1v7%Pf zNOLT@!Nae%DPnVZ#9-tX95qsi7i{z^B++?mkYv;W@!0Cyw*SA1twryz2asZu^wdrx&dMzL;7Sa=>8 zC}PMW49zmERw+O|oxH+clH1-rE8H zX1{yeCbsn+_jWcb-7EoDq%H3Y@=(-DSr~fdYFZjd@2@XKk*?1^g=Qx6ywY5PL5hx@ z>9nY?>Z9pq(fO-gy%JVpaM=NMQ80SNO+{R7iE4w8k~h%#`%_vnq%gfzBbtF$X&ofw zd`h$3f+qeGN$u3)?b=_hf0j4+zmWWvx9bCV!<|1*{5K^3EtcbvRY`wo^Fc)6uQ;~Y zgCRXfd{d2ZqVR!HxGAn0E#;^l_G7^?|9VIW=Tszi25u_q(56h6ry8jOJvn41QOC;m zT%mfXAfakMibI<~z`k3b|7iS;{%@Msir=O@`=;%1`!CG+HbF?h$o$Vj(H%SD1~Q}Q z*IGxjbWnkhCi!o4T0&O991W#ZQ4A_`Pt-K0ol_MRRU8~2|HdceZcU)8o05wPr6}g_ z{EYYH_+A@uqB33Es{RudH^ixWNY%d`#g;(8|4-yLwr7Dy*}}$*=FA?xCE!jtq?~2~ z#QvrUmQ8_x-Qs_Y4=Ayl!Kf=tVenk72(k1Fz?_~Wja?R6x&MWL{#VR8HF;ext*!#% zFJ7n2<}8~$7xrO~o!>!`T6&{QNsh%iTW2QLAtx7LAtveLApawy1PNTQ$QM}5m=OTH`2Li_6z>@{=T!XbIyNUTwH7M zKJz{^_sraL4+w1mmTKXg-Zn21WDPc~sHI)TJH`sRgAsPM7G`t~lHXRMyGS6;e<3D_ z9HZ~jZrDXs(@PSXT~i55_NKqB7%~Q8p3ryg{tXHw_$Vn8b#GA#vRj|Es~p+%)g>1j zK>-%A*{MFJ`!Lmi;V|>~bhpBEo29+}$oX5P9;+w0?2mE@jiZ`QV*s)tgE^kn@XTU7 zfpSa96Hs{jd_4t)p8Dud!_vTH^K*#3Q;y;w2d{|xqeH>xRnoG1g}jcYUhjP$YBqgt zdztoU*)Ddb0xCqmrz-?1THT^&(xqs>3#_K=S2qHlP*&+IufefhwTn-zrp$Ou=6{G-C0=d-!uPcBy zzDRjKH>so0n&^rYp5o$W0SPM-ND$ut_~BksaHh@cl=ewGp=_AFZ&xgEHCewedYdUS z`bg;L%HfgBe;6su!pQoDb>{fteTb>T2(FWpgoH%zdyf#dBR@h{Z#Ik|(KkIlR_EB0jllYegF z<&7CA=Fz}^rU5?(BuOFSq(At&vO+Rqo!DK?90fStUT{8ncboCFu(}&!@zp%Q zMN1A2M$~ytcw@cuEWLH^4q7pq%pl`dei}20>GNe1{?!H&d;{`&fJLiAF}z~*Lc%UX zs#XX2w}4mlK|fFpg>gH-LBPgY2vYsvnbrln_W*%UST8V$b(?Qbj}*O41JI&S@aNM4 zym;la09pCUztZr3{DQ%+jL4ex5oNUNuC`B?`yKm>SHxj*c=ztmkd1Zm+lCKxw6sK= zfYkqXKtLxj_HY>c^=r`)0h{^UOFmaycQP`vYG$(BM~D~n;RceDveSt8I-|C%yj(0k zvu*VvB}Gc>rKT!S2l(MIEr?G00uX>XRz zNIY9m)Ky($e$wl*+;6z)VP{N(0p-%Fcf6E<7W;%_Ol~&@_fcS_4lB+AqVVJ-qnV5fB6_S$x--am(mc0r z1pZ@pq5RF|Kan9`PC}y@2&!#QPv1=@cWmH&$ETgqtlM8*_b=DiDh=%Gl$;$-6eeV4 zP*}Qx7TaO!!gieB+O79`V;i2a`V)1)MvUMJwFhtQj1eF4yG4b|{+nHq3-`K=(8qbh zv87PplsQ7*dZO8LZl~k}l#2iVodYGwDfL1ZBA{$nMeV>b7xqG0rKoHtDZBALaV91I z&6d-4oQ!N)USC9Na~yPfLIk7FF(V9JJd4-;)4B;t9^;Gs^xFHKpC2_JGOO)iu2b134%5xtE2hFdjT>=vZ5( zb1<_s{pIkvXt(zwPuWhhTn#aGgkVNs|NHgE`4ff5?84Wa;p4`Id2elnyC2rZ;{&$v zW6@I=vl>9-*i%^4*w|Ym;R?8o{hrMfg+I8rOY-vv9*?1@B@FL)nb*#D?-ecxy(Uzy zC4EID39O#xT2B6now2q?;kx$8)VyB{4D=XTULG_vZ51Mh`WF@~*0nb@XvZhkdw{>d zB(h!w)$@4ydGlx!cL+MJ9CuVR8uTLj`clo$*U2@yhKC&tp-I2zt-qTEGL(1E;6hg8 zjN|{tXiP>UBO!?WI>@6(siBxvjI6159Psc$i~7pS&iF9c8V2a9DQA6aGXTNr#x{#ABk)c*cF0g>cw`I4=o<$W^H=Fljv9?y_goj6~EH5{x6$1;) zko(gLWE&Bcs5RwqjPGeQ1rqc^W`B|I(CbV8XV@yQpVYjCc5as%3MTjXK})rT`T04~ z${mu?{Q-+DjU8iol51&#KAwdAyw%8r7KTsMDC=HGIj3Vlc_{z!pJBlF(fCV4M=K+Bg$P&n7Xi8)g!S!p2qyKz4Iuq>@ipd)uLqA87h@Qp z=rtigxyh7fLJ7>|z`}l9z>j|PyKILQEPZ$T*vcx4$7KHYU9HB%8xA zL#=$-(Q!kqUdwIUS#I0uPKQvhx4xN^_M^Fi*rDgti1pMWnR4SLZ4~hxlCEDlqM-aQ zK(Z~Q+gL{}4-oxa<-OkqcGj$*R#*_%>gsHrZr=VbPaOw1Ru4AzOD3TvM1`X!sJaez z?}PPTq`#CIoiC$tBvK3?T+Y4;2zRqh?!!QJcvZ6yS#Gx0%LlW7TNo~5Lmu(lZirBmf`Aik+o(4?71PohErB%Ov#RS8qi=LmI_8aB5=C9;@u}E z5xnnWxwqhl9nGC>a#~zQS41Hey!ZXs0mlWyV#ytZA!zY2JA;2MnxoaM^GED-Yaxpm zH;Z!dAI?#shpSB|P!O@<;jp;IpBKDki4&3%wR72i`uF}cbIK9D;4=A{cXsCy-%702 zy}ci!Zz7x5crvMa^_%bO5JeKmzSVfV@Hf+RJS`4JjL15{E2|GbjQ1P^mYRkjeR@-O z(i;2$t{y3bgwpK%9?zueX1pi;l|EYPiTGOaOTQ_Z2v8*Bh+&Rym5{2F4>2ERsL9c` zS@H5Z%nUQiN@s9P<~=h3UdMneMHmimjOZzB>{mH`1It9GUk1E!roW(@QWkC-IU5fc zbHWsZ3Ti5#B596Y@QOma*FM4z#CrKLNu`lpTV<6@0ckyOH=Gy-+H5K@{JN7`pw#96f+DxHfhf9Fr^pI|R+p&c9vA(LHoi8ICet}WlWrzyf@>F*iLLAvTfm1)7UDb!Ns?ls-+t!l3)E_wM3JmVAaAIR{IuYXx{uixG^W%v{IbKQRgi^pZ&(l`G~w%vABaXbXoDo< z_guXJf0Ri!&ly)0I|t#Y?c90Kd(c(n^rmS^VJ?AxEj(zQ7y)+{uG$wvc+*X=@jTh* zmy5_2UjU!C9Q;l)yyAtyQPut7c|T*t9Yh?IxW{W5-FeIb`q4*?n1~#6O*Yir*_Ot`XfHDz1aD(ZLH%HmL-yZ>Q0&{9-MZdRmC9RSqTy*;DC^k6iM`V~k)N5J@qmrb zwjU)6v9-hI0F>{I=@mlXV~Mk2huRra!X?_t7`Bq2<|y?cK6V%(*Hvi!XTm*J4P)scz~XUb_48P!~gXFJ;E^~D+!#5y#Nyh7TR8vfYjsCV(mHe zOWetjnJgeNqlszL^Hwa5um$Agp%t%nBqkQ%kdj(#^p_b(hulPf3P-4||-ySX7FQJzi9HaR=VXJonW>(nhXpL5VBM+)fOo%Hf2lWU=@ zP{%qEGFAWmHjb!zTlQkjg1+p+UnpKoy?5L#M6eDl>X~- zzsHk#hhp4Sxeun9;^LbqopVKC$46M^J4&dVeXJ(jGSgoXC<_RJ1KFChob9$I^^knl#L8BugX7%-b(ZKt6=jUU=*4BU5q5HHRl+@I>W>{0vk!D|W$%4)b&K=tL zWb84~q=oZq37ae`)LxMx*A!aFi)wo?2n*-4D(s+$8E<^;wWJvOQ^O{&t(nOfwdH~H z)t}~_4Bd{iIwaXj1rx#?F#yYa!ZxWSmZP4}5sx#iAY}x1tCX}Nuq~Fq^r=MBTN=3Jl;%y3QA0Q- zgdcJF+vs@bG*&HCi^gSYM@@70~!$D`e`V}7bK2dEK*Ph&@tjW~#Zr+M%6 z1&)qRtQC65G-$u;MRMvZr%$vqWS+TXXC2ymmN8&Eq);4#G(4UWiyX;}S^18GO7&hwC-TG&Rax6Vy;Lucw{C_X*UvILof`=_146Vh^KZhRw>V1(1^L4 zOQ+(`iJ6%Vj=4p&F9+pjz-hnKXDCr*NT*bhu61o&G!T8&(4=Q(2VD;*bjo-$<%CU1 z^rU@!(9ue4haqZw^GtIA!WcFd8l%i~6R_v4hBV4BA<6uPC}lM(7A)$6#PlA)8Vq2P zkS+~LpOst9VR$f6JK9F(fmz=1ozXllzm%Hc#5cD)uUf|pS??P zW$3tQ5LD&EpB;G#?#0>KR%o1>4o4tOn^LzmxZivGli#qvT2_d=+HKQGizQEARuzQ-0*O4-8;HQff(lfaSQrjsC>^Ji)W~k4nK_lw&9{(@I&WkHHEh*TG?i% z5p!h34#L9v+S=#ULLpdiPLB^b`j6O^G!5Gxum{c!xW3nBe~2S{%O6SEvYa$8=Aqtd zAzunsyCm(aOkBuxBwKRxhNJ3jmNT~_F|b=Bl#J5l@|Xmg_s2}BfIUwkp$13V8h6ez zG7Cu&5x)iN=5;=Jl}-x=3(v-+HO%L6GP{lkT=@n@PZ0|-S36Emy;mjPv3RQ*<)?}p zi9J16Z->))o55A@Bf%c$-(UGz>eq;RgMFiYg|+c3X$!=u)X6D)aO|M^oo;v9B`u%F zx+HTDTcxt;(Pza`eON_(8SF@rU z;%A+BfvNPJk&?WRxrHk>1n{?EfA9ncxsN>jj0pxa79(nM_3JDtnpc_(AGJz?sd(?V z0%I30O*)rL^nTlC&I7}zuRXvI-xL);9hFH5mzI<$%(b`;FUQ3rdS?k5%_Y}L6e5zS z6OPQ*n5-LXmF{+jjtimSIc~xv?}_b45f(tA2>DhOYHCd0xgKacbad=vz8ESph=H1) zl^C$nx!TbZaDQ4LMkQW~&yI`J=J~WTxvAD5%7e7Q+N*a}BvP~f4%j8O25!3lCR#Az z@i2L%ly{oN=WOZ6SPGM0q|hdxB%eDRFuyuuztDD@?guhuq^J3DV=)Qmf@^&KW?sVp z;vk3f8jtlladzpUjc;@Fn^i4KNYvHNlbVO;tZgi>h;g}o@7BiVsu0NyvW-sk2JxQbI)Mv#F$M@Flt& zp4eJb$9wv~oyc6fFxZ)(G=TW};T@v;qx4bAoiK$h9?J3Wi6xf#b?_zA#neH&Nql2; zj{>;6;ODswQLxMR3PN;IBFQqsr>pyT!GadL7rZxj(u#ah zwbwgin@;js{8vywiQ2Efd1Y<0&+RbXeXSdsecdQIOC!Q;qch(JeMF)trCdy@r*gTv z%8qUAP7#L=#AiqHc%JX%f#MH`ez)YnPn=eAH|m$q3Ay)0RfJDWNVczhB4}y;oU8EO zXOr9=6)v}=i;1S9Y>}%v*Add{o@RG4s8rx1WH~+=Y)n4!H@5gI2}Y>u(hDg#G1uw? z_sg}5=j^k>cG+%O`_HZ|4B3C>pOwy+vm-vMge=zLV5~bzCMNN~b3A^o5Mly>W)GOD z?x0;Z;y{;K2GG&shS{d4sR}k2?u!@$FvzAax?_uLJ_z-rFdh-p@wu)aa_3Or z*=a5O{_XK9aWEhWv{S=k!sz9_J#uvPLC!2%-*F%#I{e-1p7*<4kEa)38zl{|U^@Mn z5V$?7Ane89CVUd8d6jNB^|%Kz$kg1z;?b->CROOq6j9`C!^ep-5HeF|xz6ifgKn)P zj)wntT0)gDh--SZwp5F5&V-ic|tp_o;CEv z?8!r%ye0?DA%U{o%r{-F;q{$6L1H87_=+Mc)^1KvER76On~pByrVsd>ocsjEX=FA-}F=m3CvCjs6MX z6zvRb1%6~U7T?~6_*Ik)e8Ul!4m5b6F$?TmnW?F=fYtmO58GQFRMF!GyFuy?=f9=_ zW)%#|c!*SNKT1U>FBHs*i7}Os;1qYb(-wV;NViNU9K&TM^OG2lN_~yH;&Sv`*J-AH}vD`IR- zcwXjH(z({*{<=2TSmE-UXnOXSP>-|TGnBTE^QeyqmhwdWSGmhnRQirsTI>C5b|x8Y z85;WiqOGx?^INr3M%1xF+0)a1ROlqead z(y0?{nhncS$dcL^nBU%FItHN^HGB16xQV~gEhutf?{ZNQ?YskAP)oTMcPs|dyf^0rBG-589$Mv*rU@pTzvBTnQOYIE&){&I&R=oe-Fa4))w}12J*;$tCYTH&| z;pTC?qm?KeO}Wz3V zc>LzoPcB{#*y@%f``leP1tM&=Mw~KIQX25TFboK1YWGEtg5{u8$XZDCSn2%M2e^r= z*#3SI?1)K1{vY2~CQBAIwNXL2mu68-SEvIed9Md3(c5x*cmDbh&zqppO25|8n!ULT z3W9Z89RT~2+QaC2Mj62yXZ;HzAUq*AL4(*s)#$GIw{}0CesMB3A5(^VAn+{N=@*n4Bg9d$Hb0>w zAM?dz-osWY_tGobzXFc3@bD7YZ(xrtO#6PL_-1H0)k(Z8$wkP^yyB7IGSgGRqagS1 z$#zLd64LvTRb2;J6JC6(?p4@s3%1plPRzoIA&e(ZPU8UaajKPi*A`EVRYULM7#};b z%l{^TIvIxmxCmBj-2(vPn`KO|&@#|&b~G|K?=Yjcu@rPJzB|c~ zHODrWq(~8XV_^;FW=g>=GnhR5*?N29WWCByqH0=MGZ$?l%JJ=lhWM7|)(-<8{kF!9 zfb~AVo7`bwdQ!`zZ{hd!ghSs!a3%hqBaN5rX-F1oe{S~VPloX@sTZ!yH={V}6f&)e zn0M1!xyqu6hieGt`RqIW(ZgK{=Wi8V_g6H4)y)L&81#Zr3{v<#rtonYL}Qc1(}@xd=oeX0r`aNNn z$Sb+Ci@m8ab^jjL+m;F6n^E{h@Kd#S=Ic|nH~+t?y-S3~a(g%hOc(a9IX;;oYxEbI4|hMNKRfKViuqFn(Ht{ z$Z|)`Z;;tMt%esx1(DGYjR#1Y;f>3aSb2?|fgwsq4>6{Yh?0n5BBj&cTWaCAP~uZh z^ zGp{@@VB<_>?a+EchK7{F<5VPwDrefwg&t;)YT6?Oec%!jw;Le zJQFGKc0R)v`O+5Yr&koMp&l+D>zeoWi`P;_KqH94VzWt+CqAO_tS@ET4o{hg{xtsC zJXY*;)zyRZc*%QLQd?_kt@Z~Z$SOM&6cC_Oc>+M++Sn5~@)BNEnDMg_T7oJ$mToBf zhyD4u-YNvSJsY%oINIJ^6v78PYRxuI0Co92@{`V>*4EoI^j0G7>g!rS*5K-aJN6*d zv}U}-_uknOa-QM9eCyUefuG5rZbqlE#K@fR#c^H;(#YklM^#s^-8;#h0H^MS9&f?y8F>$rE_RG7=LfgaVW9u@}33knu zg@tQwd6EVXQXBFX<);Qs!bFw-VBCfrUw!7 zsy-OIUZxb8nDi0!I(cU~rE?@sZ|XV@2iC+|y&BzFBO@mqsoQzsiYj(UJL|EWe&bfk zAKO2!<=_B2onM6N!NlUA$`jy5-$PTRSEC%g?OhT)6Ii0>SL2eMRU~QIrq+njv(d(z zUD2Fvnfl`G78NrMhQY=MjCp4fAJ42JE0;m}ovO3YSRwDsT=Y+#zUMJT%HAt0SO;Ub z{Bjyt^H=8*n~VZ0Xa)~AIkgYwx6rothf8~#JgX_kS^XQ(5m|Ycv)0%+@srJYQfZl} zput$RXv6kwMep>(UA)Wu7cZ>q-@GYAYSWL%L-B@rrMeJepm!@io0ixpi!}-;4PuE) zC%hEXrHNFpRkAC_5ie0M3hd>u$*pK#NBxG7+l(3d|54?30QNPoxsYM9>dPACMQ8B3 zu=)U{;Ku+_J_qA7#SeO@_^z{OfJnnRT0nnsafE2GNC=8O{~j(*rhZjDuWn5Z!gkmj z*(%six@1Ll2V=aiE=|~5xIZx1&7Cg?tEiZ~V{Z01Ug^b`&z!sF^v!x|84*|znX$h< z6&u>WT)!3#(tQXR!?l=if!e^u?#2fXdEOtdMs_5r%u5Xld!+nr6Vm&1cXf$_CiYqe zS0}X7cDa4gWIo@#y01IAs`+n2NB<^1u!M(ayFd2853zc~Gnu5&bf!mRk@!vKSVYGv z4{v;^Q&NIzllMi&y$gKHE3$2-D18d%@;}3=O|UJE8(f@+O+1WtqiN^o3y)M(g~XPe z%<^!@nsSJckSxZqLwFrcAp*Zsf3oG-pLOj*bnzoa`zVD`0=aucvsCdEzj=(lV5m$J zwjGs>tb-$#_G*Y*?Qi#5mV`hs@(HoOZX1ps&!KG=WcPi$ZS4m>ikamKow%7#XBV;t+Z~jg>$6c)+&ren-)tW zlS2_&NEusT#nmV68ucyR*y`Ko?E^WR=|Ub=Fc~tR4v>_2?qvbe0UP&kE(#JfMaO5u zhN^CQftH5T=PX;nc24-YvPv1QtL)HjOI(Q+V`IzLkdoC@uJnr7pUrcQayI2nk*2Ts zqp4)8`uDZ%4@^FE%@yOZ8P_u~AP8j1iT1Kd%zW2Qi?`7?aY-$t(ic^d$EGVLk$xXn zy@nz#iy^Co#UzcvuycX2EN10F(L#cWdlYGbXI8hGDp{VfhG)P(+#8TCK8w@j+TcwX z1sffi z*5C5*Dqk^#Sj{4Q2pVfde^pFG05v>6SKvsQ8w*k#zZtIDjUbE_#X`SQ{~BDTzmf!8 zuA_i`gnWZvhpek8+5lJe#f7JdDMiY{Thag*haeHQ%GRR0TNmQfxS&Le*jyTIW7?=9 ztKN?|xJ99E^_mshPUeNf+Nuc~{NXW8wbTMv6)iZS6eO%MbmQ?p{4r3C$z)|T=@5?p z>#*G{3+2Mc8o&F4Q!BYq)JMaYkTOz}KSwks)dRDUt>Pq9fjoE=y*<*5Od)Xn5QXs{ zx)})b#-_uT-#;xuTH%l*u1F@-sie5YG4Z#@nKi>u=h-6U#kBAQKCYvWuBMpM;`y0Z z4{=L`;=#2z!}JW+vh+V(g5GDJqdd?j?~8&$KNy+fuP?-e(g#ZMOU_ECwh~E_QHF8Z zz!mmXeA9(l$6n;%Tt8XoD=Jb*X=NXcmC_P!FN^*Cx(bS!D^!tf*x}dEUv|`y3uM?@W!|an`R3{(jmkTeK+I5$=DB_Nk_{7D5N3awZ z$y;>9Z+iPqaxm-kY@+!&8-;Cp_pjL|rJ-zK@YHNO%gV1iiK0R5+S;CX!IrIiT~A<^ zDFye1HKf~;q7Y@1)c71RFCK}Wg(0G|;^URXQd!vyiTg;^FbsAc?^P35=HMsL$&xDN z(lV3>gJRz`OJv}wN7_$oJz1W>fgh>4rB#jmHd6jqNF4ubQ~32OX4c?LV`ohAA|%#V z2*Lgl#sqYi(IiSlbP^OmB6-#YjiKE4i@du|qv+klB(P^%So(-|-8o-VWra8PE?|;o zEX}-a#Wf^XsdJJ~LY`$V45UAs+FzHMsJeIiqq+b5aG$=!mU#K1&c8=hU`i+12lgKG zaYkmt>Mi`xD#ft4#2gQZJUeA)YyPgK%Q5WV;qX1B>aZ@(cz%;(zj~R@4Bw~`CtuV) zB9j8vV6rWZb>>o{dh+7mTu-LAr8Za&{K zmd>U*&waGWXU@gL6mb-NJv7@=ZZ4~;82o6WyV$S|vfWYdPWv9TtK#R#lmt0hd^dLI zyI>@e>QL!bM=cQ*eosMkewug{ery!k2n^5DH}M#RA^D?%rG{u|Bf)Y8`YYCe7<&-? z&P7#pk=VB6-g6fF!S(nqVlLJmGN046kTD&I z%vz0QRL*_NLyEc6zlF^C7w0@F^=X5+fMDEpCK*&z8Z$I= zB=0eJxOji3x0oqKQBKvJCS3VJVWa`^^dam;e|u$*|Fj}mo1pHcQW zvgO=xO#>6FU7@<}S|>+I$>K^JuYu6$xY0meUw2!Z9dtTVe5-E&-JeIb*A0o4qS$qh zb~mJ`t-jZqRm`FW$F?eEnd!*yKYY9uCs9vxN9~iW$W#-+-cwg{;J=5)^We!2u-_AFlnsWC}b@0%cpe zBZ_Zxc+lD`;_SUI_VU^n6ERD7VD-J5&RGRhAklL#>jXEe(Lsg#ASYtv8=K z&o83$5qYxRsHx}Dvorj$u2-(mNST8r+q6{IXeOJ^@Oz1drq$iz?YG}=5s1vkSM6K; zpQcQ@FkZ6t3lz^XvSfLwy(4K)$kNb34HM{sFq= zcIUe*T7%NXLSL4sy=moLurlh?Ouct znW}OI_sRtmxgU^7WrZ+{OMe$bF3ug8DBL^(>VHg_IIIGs@YlO;`3Ht$RUBz=xf7gRUa~k6V#lq1k=EW2Iyn8KGHjE)>Iddf#dqIf!?OD{ zX(J?f3F4v@5}aezCFqj-P2dEHjp?Zd3i! z{T8rEgV$HL$3c;etZ_cL7+WL~+H}=D=kZ8nWcd~uXELKlFOt_SEsEPEqLD5I^QBhb zamuO8j#?qgZU-cdyZbw+^=_MyjY<*jYKMOcmoxId?NH7eV)*h34v7Euiq+I0`(_UtRPAiBM=jcz0FUho`G_ zEb73f##*cflhTy~1g=(Ml=XF8^L1E5c6~S##?H-GR$WyOwoO&|5$|0KlDJ;^zxguA zetH7a!4_k|5E~4gur^_JvhZyxTdbCD*7?bcP)rLH&onVfGeNPSFm>#&BKA|z*K zf4Wv29|=j3#5KUsZ{4+D-810H8w`=QU7w3XFJbz-FF=#H(qEQ0^x5uU{jCSx+P~MO zO)VnCeuM^oh{7q19wDxux50rB3qL$wh&z=SeV}+^8C2i%=R+L|p2{u(&(BsZV*2BE z(UAI{aBj4ZGKd;$NUOwAr zn=WMdqScALW3x+U5x1k_z-@z&2MzMN$pjc}badZF9MAyVxG2r5lX^d5+2*i2H1kE% zBouCv=2|p8(&Osq^sP_+pVLEN(FBe#<1~8ALfu+n6MJ}f+N#^Pb5!+Ru)_5K+vn|6 z5Jsnw#Zd<|QB0u%nu43AlNagwYtXtG?K_FklGy`=_t zR5uvLk*v2alWF>AjXcQrh}AZqb0r3G*x7;H6zaP+&Mi~x@slt|^U4Z+pfaF83Y5Pn zFLc%ChNVgInPgTi5odY z5;o31i$0>NtOb8${hZ`7%3riz&yde=yn@q+D1c%7%E$uR`LX%Wm+HEgFW_E9NTyf=?%@cvoNoc~6O z6EDl-lk|S@3BmL@I7V#sq^`D(i!l?Akl5z#wKSij9}-FSmDj?wx&*P+2AqKSSX>}N zu+n%MSbIpn0IWb!+j48Q!jLyYg#3KgUQhm7(UU4JzwY^32|e`-xbnG(%~VjeZQue> zhF}g7wh$)%#5bL%#^Vba;q~+I#n=ioB7vaHAURvF&}_NioRZyQVikKx!VRN^H00zv z;;}_|uXXt$4aZ}gP7yg)w2V=1ac}2EboMHppS`eak3xbj=J@RoAj_SZmC+6UPD!Gi ziVD2&dA5H=K1M1F*!s5Xxt->lHea&JdOl#CDJP*rkSW~CONTFT@Szc(qzkStI!MXr z@Y)k;tetO>C}5;uhw;SHimdq7UDMsmFrAYqL~OO{3J2tKV?^|}E1fHoEXs9KJO6Nv zG)*Xz+qQla(@;~4>35&)e)S%;E=Er)_*1*Yvw!KDtq&C90_-rGl3$lNdt_Uo^H~%i zKUv%0O=Rpw`A+K_KZF?d{Im#{I&3eyLy+jxi}i9j%*XB)F22cNQRo#>xLL3ug=>2g` z(;rx46x+vS!6+@?11zVZA0mfpqw@9`((D$6)zWaabzgUSAjnTd@W2D#e;Kqb^u^Hw zGSC`qr^u`r^3}6iq$JUr&oQX}Bt01{Cx_5?$oD7aM=RO$ zn<{iv(E>*y{<*Xek5-OIPo?hgq%W!0x5ABCLIk#%6Pptpv+V=#ioZHIW$Rjl2OE@w7$PU;jq{7j7^&vavNkzq60c^A zpZ1a=96&F~mPy6s8S6ep=6|2NYio9?GM=V=yS(dgkFhp&y(jzvMy-okxpv_s7PGg9 zi9Xz*V13a%2pzvdeTv@@WI^|LC0uL3P-;F$%isTrrk>_>&HH+n98)Hgg97-D|MLz3 zQIRIy^Qd9zhqJk@clin5qxOtTWLiT!B{UqBo~Jt`WN|XK+lJ=9}Eb@{#TIvFHd#UHpSPTf}J-(SqVjqp;4=|(5$}sqaHCr0D0`rclo(2o^r)RW-u@~}mJ}mpdQ_oI?=V+&GdG%GIBl>mh$ z;zoAz^7yVXH||auaI|(+kCR+W(A=Jlj{l$p-cp7M=vL4FzypQnmdrCYcz*0;U~1!X z&v9=Al;4;@Dr=()vz_zvn?tyKP;9qspX152oDIOn@A-K;{5K5+!vBNfQWS=w#r9#T zH3rQFiH~pQq3HR6f4Wv3A7%p|wkJD2JGehxFr^0@!!I}QVmAijWa!gQPtSY}?05*7 zurhz$SUA%3-GLSyr^o7M&=T@&`UZud^H}79|DehzPqZAfPqpHLC>ceLWYf#QJ|mghkC9AKmkFXkXmK1`a2<)%}w+Cuxu>dZydfhpX@A-P~2NlK0 zLaLuUMFt>23%K&~iZ?J)T*BXUzXrkl$R7R;O9+k=(Jo(cl@)%<{ieG>s?QYe|GIhI zZ-Jw(cJT-06NkV-W*vYptJeH^1O!aLe>5bQ{J$Xwi|?{G)x_Jki_R;N45EQ)PdJS8a=(986*Nv@%=aZj>5lI$Fzt4#w z$7Slt3m+FpqZQsR+iHEy6jb^@(e3rI;I@E{^dLEcdr8Y2;gf5cP&3%wb@@Nu*Xu85 zKA|>nRn2_S#?zx~OAw1Vrn==rIFh7jDzb?K4 z&02}Y6&6fpUyAczi8zSiLFyR1zYi0TTWW`euV;e33dYHQ+WO!rPz3)ke-j{eVc8RuwS||@ ztuA>cJ-j<7O5_4CV=8QnbHg)cM4&OX7%JvW*$ttokPBmd%YncKs@5)=Ahpt7)0N-j zHOYll4;cEDB+afzIE+_v@PnJ>7sB@eIPEEsvy7-XhK<{fnb{de9i zha1uZSa`@(N?05y>sSmCBj}RS4IFcpMKGXQBeB|=SWYp?ml9DX-!*r8fBhvy2%gtg z9^XF~C;Qr|a8WMs7PR653IY4$gAEZt3m_0N3@D%j5T!){`JG-I(}PGx+WT(3rV8|9 zek_8jjlrNh#GGn^=qivmKh{boA&4y-QOX%)N(RF5iIZYY;g421I9Gr6HAV8d$1u;O zQl%Y%clPoCu?vypDfsYO%Ym_2X)pvoYDX*`nAbDnKz5wVbN&zR--Z=fj1+F@$YvT; z>&L>Hw8qD$%>-%_aO$K>%blFDS)tr;L(y1CaOFLranp|(sU3S&N+cn)+6|5N9 zJ}&%thz>+}^|_au^{nI{gg05$B3VW)QOsd?9rZ-Sh@D zbFfZMRl$AMOMcWvoW~#5nStYMu}_tOr^3$@7GQct-?Q2#GU*Z|$WE9kFh!ZaFoLSP zpOP*xOw0qi^otcDgwElWdwyd25**O?094_uBPMjXSbNaUZ|7rutq-jI4WRI(?)#e0Tc zkRANwjY$C4l-L~IJpUAU?nOP%lsGSP8YEh79_aExrL_L+v>~+9uF$Tgi@#bTd0fDX z7YE;mSMz`W%8P$oYV}?92j4#=$Fdm7%F4P7jb!c_yk#{V4F~$do14MexNKXs)XvS$ zvMv`%;ZgHtmBd`Ej|zV}?ykyIiiUP4iXh%!&FZs|@_ti>Qc}ti4-bZ236ihRWou3` z_Vm`iS3>Us(e6Z#liyrImJv@=)%h>Xs4#=*w=O-v@EYo7)+crOv>2Bzo41h^*7exvo&C4M z6cS{9YaZlg%t*!#4&nGDD)KhasaC#I#DCCn)())|f()!>3`$Lu?izfdB=VwAN1mYd zf_Ek5>`(vBd@=8hn~rHMES7sN~3Z0F%(cn+W{N?5-01vj6pd{wuA0%A;ea zGX49l06jcOM5uY`jzdl+>pI-KZhor-M3Xnf%SpX5MY>LBt-AbCy4M zVqjWkqms#f#5tauR3xUfejQQBBmL6ub5$so>Z7iX{+rT!nf!wn}agW?6M41%)XWR=d z5ejSGrEdd3ixmlG__XymESATToEE*rtMr9mKScJ-;_}d1a&WZ5^_&5YK!7+f>jnQg zZ{d)}bE5EZ7@wKs0x_)ie-ZZ9L2*UT*685wZh;^Hf(3UNf(M5Lch}%<10*;J5(%>@qNu~1J$vt7y?XWP(Ae0#H+|MNjZKM%%d*)D+-y8D zXH$}KJ|OH*TXxE}0;f~S4}Yi^%cx9w49sv0Eg{3@9K9J|KYg)d78*iidL$WEcJ3zZ6tayMU zaP-S#uzqyL`_o(ntOa0(Y8|Z#vFFngINH02%Iuq<115e4V~QzQs`zxM z(~r;mP?LEg01FnkMr6L` zl^Q`K{IKMZ&{1SE0i%q^pUxO!i#%KMGSB@Z+Zk#vITOe|>O-RvDkT$o7dMA^JyD>2 z8F-F9)L|6$AeUM?(+~L~qDiGTIAWf&e37pKS1d$gKnU=4N~c$1Iy)K%uS1LDV+!I~ z$oslCg=bPrpL zPp>cb!TOGE?=E-y5s@Y-Gw_Y?`KX@?w;;XyF1Dv0E`(00YAZ}&-e%alFbZF%8gx4~ zQ%URr$hN0^TFH2X zIZWnp0O!4#ZP+3teY`x|21FIZeG^~#$gBuhC@3nz0+Iik6u>_tN!ahoO7TF2tD++9 zXx*&`9eaUVS=pO|flGt2NRUl=Swod}#(J|W%L0ArHGoq>1EAqE`Ss+Cc9h?{3`hY-e&<1t9Q z4YCK1JvB2~oa*a+ee11;f^cc1vP|_FkNmW9oh*-Pg=P_Rmhi6#_Gp9vTB}srP`j*s z_3$g-R?4^PFajq8F=zub*O3C9M%foKsd1Bfz2F-YCP4H%EH8uENc=vhTa?TIpsuc- zDjnIZZH?em&-U(g1VJeAqG2xEMDg=im&)kLP5eljFgAv38nQty3P%()l=RY7DW%IU z-}ddS>${uNu^9qX;=DY$7BdSE|1g55datWX3|PO(4-(Q;h~V!n9+Q^<6?)Lo*Tp8^ zX%hjfRn^p?syu28)4k!f9x=r7XFN+Fap6ne(A49OXTk;ECbz>^vI*%Zso4!H05u#e@&Cz+RR>uM3|U6a%N$2lpW*z>g7G=1_waDF+u;hx}FAf%C}4{O+r9-d&h+fcZ5Gl|ejOUi{J)oAm$HI7&HnOHYd`$uns=c`RO zE{Nr;WTMBV#sc|7?6~57v`<4JV~GXMR!%iZQ5%>cjHbL)SJ@&Tpf(z*{^rS|Y@;4Tx0_;+BJ^Lp8$uBz53h8cE`E zMFtPxVuEce3)>r3*dfi=_gkekU0?gv>fw;-zh7=>lko$|w*ld|KW9m7SWH&8pCW({ z^525c)RlCJ!koRyq7@rZSpB>2V%V7Z^H>j_iZ5JLD__j42MTI%wjGsP-t_h36`0V) zH3L08+)tza2ls6P!!_9kcwa(` z&yx)2rNp67O^cj9+lAj%1lQ^v#=LyjB4hJf*2<+0_9#ROfQL0T8r2j8KEWv= zpiEdke7O?GP+k#8)KUWg$`JT|006~V4ru`jCokRu`>jIU|HFB}{+VGA9!*jQ7=Ti^ z2DS1)poqL4gEMM27mNMOQN3*RXK=ImLfG+H$T4Etp#U728r5@FGy<*s-> z694NjfrWVKn*HAk!TX#?kps^IVBms+8IFsKej3R?VytX1yJqqEQLA6nvtC{TAZcL5 zE-zKmEuR^*rURc0@0VnZ9LNLqB{gvXa6RMwvf$pIU*s-q|NV@AsEo55c*Z|+wwsnV zd#Hwi=2`jl-z~f^sgN_U6co$&6hNm7wiRM9YWCTG5l;Ufe@RhM_;M_Fy#9yI%<;dL z7HEV@8+^0>vi$!;ZuLU^Nm&^JbseCbc8~{tq4GTD9^T(Qioiu(5%`dm*Bx8Rm?v-l z%%Y`W3nz$|J@~B!0Unt&n92^IkeITQKx~~)A|jM3fJoTDBmh*FfB?b*WuG;BWO$1H z+kHA+2Pjk+$icG2Jc*&?ab9V3BRjq+t}}u@II-L{b~DRTe2pw_tVE)9z((jUdFIiP zvWJ4sXI%cVch9@G6yo1~JuNc%gSG9mzQ(~3we)=&g>vcBL-}_MP_`0i0=u>GRIeM6 zvJFb=nUWK7rDZ={1NJA-ce`je@?ZQsT0BacCp@g!E~R1n`H2zB6bWT10o;kqGL!B7 zLC^QgKSkQehD9I!#^l|{m|9_Qk%d4+=-_B*I%Ck=X@6*{IRMO-mlr91G~R+@voCo} z=k@v>*#AYH;u!xpQv6V>O4n^Ujy~n`aZ-}R;Aj`m6%p42E~(Hg<(xigb8o6Rs~8l< ztM{Syr3)gp$<13$h*~5m7zG7}L2gzA{hDoQ9#(cZz?$n9R@gQhh+&7ARZgcIp zzxFO{qH`l>xY z2n_`l<)PAUEWQ5yEVE30o}IJzX>{6jYEiTOpYGkJ-+{g0Nr z>ZiTZoNX=o57A=iZy))d#&UQ{JP8(liuiGGe_ZTh)ywd8|FiFz74BB210RK$;qw%_5~gf49buJbn|b`02N=45 z(^1lonryo6#FrS}df9ZBs8ge_V)ph~JP!KGR!{wd>;6y-I0&fwy#+7C>5DFr9zLqC z*QZ&CPl6^L z*R@LPk@~CFes`LVZOgr34b08qkzO@&FdNXQJ}WH!97X3B$8Aom4n>$cb*vvlogbBp z=Ip<0%}5_oUI-G4o}KY~$W?vG30`8N3M!@Wf|f^o>xjGrW^v~aSRwEAZC<{B6a3UQ z)w#Xh$4@THd2BV`99{<-YZR|LNE;evCbPUPzyZl(_xEO>(et<2qratmk14w64H5KZ zaK9a4vGpAIyyZHQq%QwCjNloP6WJuDJxrmZO1`rgBT1@{G zn}S^^LHrExQ3->cQrQx#1E8wJu~F4d`g)>H`pz8GiBIEXHt1VUT>YVDxz!w2Q2Rv` z+rNI%;n;F$@?enY_(VCm1iw;KOu}c00V%gnt`SwTHSJ6bZDE*^m^EJU3%ZOh?9Gws z0esFgbP8XlO0c$E<;2}Eeu1%MPf}SLBA_G#aJEGfJBbdd4$!95adOBh9gY&GJ`Xy| zycM0RB;adwx&pskGA93T_{ghU5kSp_#5j@es)U~$=kU5b(3BB-q5T73$3aB}r<*rs zCshR1ePMI{6&w88QtB4HKkr6aG2>LIbnegP(iVUIn3J<{s?aA65rKoqmVzSz= z=@ypnDw7hiQ?I;9m)hd@adgOpYohK>s;(|37JT?l+Z-dt*wux>Z-ny>x?q|sL;Z*q zVBm(|8-$XGnCPU$bqJ4I*O4G4zR6p!;j8&Z%&BV;vWvRE{%Pg zX0p3?oKEjbE{*;yHQs7x!53~}^n2X6YHpb6eo*T7xL|GK z)-N}pd>4pp`2OqT9lDL#X2xGwBbfwl7jrQ0&em#n6<)oYZI-A&9iEN(z~>?S3Z$sH zHw5~s1=UNKkStNTqVV-x zgikRGe}#u2o1AtTq)8VbIg{J~1B4O&vc|}NeWA~m7+U(^>{3hEwc!_4){nYkU5c-I zPLKJu#|)n8ml$qbS5L?UhSb<9wmz}$#)0Op&ESbm-xUr$7|`!SIMc7m8*e4LfN4`U z3%6@BiHSRD**PXh(^VF2?;)LUS*}k5aiNg)%n3STM6e_td{Ew<<3RK_+uDCiQqa~S z61{v^3VDexD15-c^bv2VV?VK;xzk`a1fmU*_s6G$db9>|0t*Nz&Z}C8rf4?vs z`DbJi2SjR0VA3}W9<4b(WZ_+cR#Nl*!YTlS zzcifOOamkg+7O~C z-oUSGvk?UL^Gu82-l>w;X~Q26vI8x0&!!yi7Dh%fz#!m`G$>*OPqEXId!wN>@V-`PB_@uK+q%RbL#$ICQKVpFr8$_*e!(U`ZA1Q zdVjfa>YAoi1V*w%E+Y|RdKB5xtH!HLPJAmsad0=)(gq{9@KHbvQ`E)sfpk?I* zO>8{5k3)MfLu%+Zc@865Kt=km6-`17BGxi-8V>M**e)&<ekJ>in%+Z8wLxg~$^1DI&a5iRDCruV8diuj=~d z;9H>n@k!@lO&>OHtyAZ;u0uJ-Zd>tYO_WxrsTDKXFvCLreNW1^d8N^TX3Cgao8}IA zG^`l@Nr}s-_;bT?vDm-DXAygT@w1Amm}dgcP>$#4l(H#}bCm>kKM7!)xKjmnGp860 zpJ!89KLZ%Au^5|(`zA%R9_j8c2_KyOFo?HipR-!)?VA)%W7TipLwX1z4UFN4 zj|A6GnrEeyRUEUH&K$bA&sGr%#z8aw|2hiA_jleKOUcdYlsopNv31F7VlLSpkKC>y zz^fk4Y9{b*W}4k4!pGJ^PsFW7l~rFa0p@X~Z)i4-96FQ(-Q*RlIOIqA`FIOh{R>MT zO|`|vKfU^9c)a|FJSSV0M_EUQ>-u;l<@>i+-a9y|g}f_vYu|2o>)F!=zDd0U92MIq zM@qiH<~7w3YWqP)y%bv`YcW3sblcHP(n+5o%q;ya@Pv)J?{8%0w^1&9YM7!MX1hJf?E4Y~o`!orI;&{Yi5C?G^dC`{=gP98<)FJ;If(8#BAndS-j}N>DXd zZTgf<$>!#VF~D}~0f)jdBmUfwl?RpeHuRvdbgM2GB?vX~zIXFf?mH-WG}qw`l&| zYS`E%OJw9jJ1O#^6PCPx`U!a@KUG^?9j?+!eEWUw9>3@2<$e=2CmE4+mNenPmJ^eFyFHZ|uLW#tMqJRlBqQNc}5=lMCr z3+JM@^P9VBCAg|1{!qw%NkRbqjWo8n5^hO`loF&xYRmJ{*X?3*%bV(omNkXDWq01v zz!Pqlm@TrBi=fvR{Lq25nD~adf2ie*hS6_k-um0Q1SNuZDx38@S6G(NW$U8zkXZ++ z2PfbpY*0H#At63fpCuXA^@`WQSg3WK{~hONuD$bw&-jIx7>ngbd#mT?Q7k;9T_vB> zw__Cbc3vMmJ1;RiU&G}%SKq;_emqPhP#9xEL+i4IlDhL5&d$f^kjR~=)NG^+=)S!T zz?!S^zF+|*jQEJ(UL@NYeVWKmBqCx>Gd7W1vS!=Kx0!2h-WjKNR8>{o?9GyN9U|d9 zRZ|G1REUrD4vUr;kEFlBXcs3TaZ(+Ly?&axLqGo2yZ_)gS9Sj73pI5%C zkLHbop-iLwP!suwVrY9(N>h*S4!w_fw*+aEYPKF`Vdu(8em}WYuy}V2URJfF&ZaNk zh!yNx>y?a|9I%a$4S#X={K|W`aFe#$=0Y#@<3xlpv;|peuMcf(%_fTa=GT{FB3Y7CYdz24!PDWOHpNA6Opz16%9uGEVF2_~I~-%J~4VsI~?it5=%!oH3Xy479ZK_mBQWUrW;0 zQh#qdg`_M*JbG9@tuV!esxlLxc>0&+28<2!Wg3v< z>ngRn!fhWn6-9ou8CZBGm{*HHo4S{)@2CDwxifCRwyU$huIoI6NcE=_XA9yY7Q7C} zPm+5x8;T+71-da#_nAesG~d5e9W@yBL)Z|I2 zsGX5PyclaZx`X^-p>XOiMoqVdF@mehWqqfF61vi36qK=6Fsb)%738a!SlPj<2E@(4_raQc62~>@)pb!b>x*f#*H?LRByA#{q9M4B!dlJSNAvRsky_` z6>TBUfXiI_^LSgg~$A z4961>{iXgOanXtpqET{0WsjLpRzx37QohjUZkGY_>j5H3v zBZU%l<~sFGC-h{c`F2X-Zmo>P3$$~g>9W?Til06pd=cH0t{r-FYd~HhP10+A#S?{C zV^>5RAq`dxWKrX=iJkN}s4^>-wtL62zM;XZ5u+_Z*=_ZCGdtcg;I;O!ixq*fs zYa(j+@Ki>~rWAH{)J2u*a4@byauN1%+g(@;E}eh2*l%Wz;GgRl^cJrJM$Cxbq4WdR z=vARLD$AlsMMvnA3tbE_A7K1g6cZ*tLM7M)f46f;rom+VO8-6{|KvM^Pj@zw2LtGf z^oCe@hXL!NdXwjnNWh=7QW>W@JWB>Hrcz(>(M6DmSV<^WBq!=AFbzOt*P%=l27W zlE^r1ZVYYq9?`ir(0r9yyurERE6Px2cw#QT824v>8`UjO$1H-6@6-1gym*xc73|&_ z#V0mHaytfJ4KENtX8jvse+2R88yAUyeoaV3|B8xp5V{&U)knqO829d_m4Yq9{6%Cv zHAp{`I{bF+QRl}mh)j%hAuBOlV6OXz;AKQF`;nb}fusy2$6#WIAW`^qO{M`!vEg4| zoe*pi_@e$=%b0UXO7KGKj=R0pC+K2?(xOMpwCex7Bg@a+qFoZ@3iDMtN|@%?OfGP z)j-gnVQ**XkC;0Q(jH6l-~cJT*^{Q3_C=PldMhakWu-NKf9c|L7cG*%SzI)9bkQw8 z-iYYQ7gg3AqxlR*hUfZj9)%FxDkn)Hh;mw_2x#;` zIuW?Ku&A41=}cQ?EC$ss@hmBKnv2=&c#_wLHQ+N2QNT7CS+MgE>RXN2C^p1)K)gWX zdU*po6{kkRnf#eqL3#FlxQM)zd;QVKDEm-?c_?!9BuQn5)Sq@|cq~W#C*;;qCDI~< zd4$9IM!W<1kWEL~g%BG9l5O@Gp-oFAd81HrS(DJTYsY#c`U8gMI_g$|-3+ygt|;O* z2@oZ&Rha*@rA1NwmD`8{oMz=Str<)jlbg=1$3Erb^;qKZ?#f%AG%^R#C2?x(F&#Zs(cQqSkOOv1OZ9Z z6BZ7xJpOa@fzeJ0Z}Qro_t@{Lx)7beD4CD$X@psi?lSGUlz5xH4qfcitI}UMC`E#n z%lgh>X_wtk^~>JU6H#y9d#*Wd+iGrH%qsF20+nTCG}W~P_emJ z*w+H)=hlTM5t`T`MMP`2EgH;L0W&8w+ zf=j2`=JUPULnAfDTvM{_T<~ahhP&SDEwJK)HJQ0srqa86rffO8*>lE;zh~NgHOF*etp>9?D^`{X@0=`(*_^0RrEOT4Go{Dl}6F1A0wTBLHaYvyBC{$mp1q~ydTPa|Lbs6(^D zC2|{}DMcksF~;_)lLeq6*rar@Z21IKDpG`DoBBGtUOY9`9U0Xi}Q?L zo*#V{l8`AIX$^dPQw|jF3OtoRSzW0jRec4Y!b)AfmhKBg%iG5&zHVbb8hqLm?+(q3 zyvE_W3|!&UY$>+_Rj9z%33tyWpB4H`EtRN)1G;s^i%zJ!3v93CzgKMz46GVrD8fZ8 z#FRb%6X9x?W$9KcibOUe)iHhruWU)^k)ynCL&GBtM-YnjgqY9N#OHoa+y+mYFgvv% zY}(ZcM-daVyYppWjkJKr%*iBBex?EGm&_S~j?qDkaFDgn1GlrborTHbSGlf#X5R+? zP7fZ`TK3wsrt#{|ITbz2^PUjQFR1oxgcX2~?n1u8m#t$i%%t=+GXJ~IAQ2h9(sBqI zHMguQ_Ubzf?IQ(yU{HQCj9?jhUZ{_bE>ktptC5HBl(e`o`#vc8+j>x+8C<^hfK}^C zRg7=O+H~QfbmoLVF!?szT#q&Hrhc55^`n6L4l$NF*g-(`&dlRuEM5xyB3|r_5c$Sv z;UKSOzhv0*^)}li_^s8!#La^|TvW3F)uR*nm51&E+DR6+l>otw4s!(6Bo8Rkhqe{+ z0piR6Qf>y(4M0JbV8A1-eldq6oR;GuzkhqY0xGv%8w}B3)VNWG@}_d4-v;kTPtU%+ z85`(IyZm&OT`-A`i{u7Ntx>tdX(M&40*-WubimSNl5=(?TWTqlHLE0f7mlGTiGOKg z`qxFztaPw6iGMCnk~)20=56q~HH#b+WD9Ef6=dENqJ5tXA-ZZt(rWhRWNe?;|N?Hl%+l?30cKp3ft)PfYZK z-P^6kNPr>7UutMQJ5HI#?ln>sR1dGC;YE~D=Qj+rh<+-m_aDB~dBgruR@1B~TiIU0 zCIO75Xey}tv{K|7Vo^*q*CWAhrOo?5_e_$M;>--eth}x_`S7MSo|s3C+95o|0_2#Q zD&!sMwm`#rKc4gtQSR77=68kr^4PTlk_?#R$swHz>j3&=3WXew-C=3qpb& zOY6P_WS-->(18I1&f4=7Z*Lk=PUjX158pXm6rD!I`-NyNe1P;>M^3FV&J%#22 zU4^2?cH)Vj2Z`NSV!BZ5hu)@6m8^zK&1pj0W3(<$!x<{V0$y%om3%t0Y9S#=v|(Y~ zEYk9?E=`@zm!l=ndSa?IxfqK&YTPR)7j+yj8x_26zet5vKK{P%B5?phyb4YRXCf-9 zbcJD>kOzLiZo_9tDA9OjqI2mFVTcqQ*f1ey2;@Ky!8nBd)qwJ*-v{IpF9uDj2m5Z5 z6~c-JI7&D;xc0+&m7F=1x8@2jc>VT3bhe%QRs9J`n-rRzSd?6`2;9Awb}Kih#*W2wH@e z@+Do~RY@Sfnl4XD$jp55j{NbXPP=e|6PF-O6V$p7_sg4T<_u(U1?uO6$NbuVBMmx^ zu^K#rF&0KDb7cm9LIyFyK%}N-*Oum>K+>w$$|ta(>3NQ19jK&7r?ZpY*Xtdxl)?(I z>!`8a%r_=wl_AB4iRS$moL8|&vnoqw+rvt%F!0SEFsU2fNar5Ro`$xJ6Ohf~MN%ja z02!zt(SLS)tQ5o@*Air9N!P>~J{*)lk0yeMtD0w_gb53?)IALsiVqu|BOdW}Lps_{ zLTvkBZ<2@WO;#nv9z4cq0Vi^@XF`L9laT1^=~#>`lQ~*Qvab9JrC4G+(7v z8!`7_@SOO$&=HZRszS5O>^BIa?(}1vY068&y?NJ54=YP4d$l124FqSTrF zoy`F1eaZ`e_j)BXc`Y!4$^6$7O^(yk9|Cw(!fHAJFJoz)g~5~9*iYQwi5wps(a`wE z`uYkTbLAR646LoI4&wE=j3flk+RI zZ-v(Ms_**U)g5JzWr)C+KRu2NxsssD$F^#yI~lhufW<{}f~U}WhS=6KK1l|3m?EM? zZmH3_*K2`jauIU!IvEKy;!v8b6gMHF;*BuD>RAA+d6fo%j{>fe%7JymM>5k~g`>Rc z88IfJgLF8d9~AU4-Kir;zaqxXVMV@SAc2*_yU$S5(xmuT*7ThwFZm*LB-tXP2JzNBN)R*=#tnOAhI3s#M(p^KEcx(@|Bo2W(61v#|yu3T(2Bz`D#ErPdIH1Ra5ohaPM;ome z;p~OdZx_=~R3@gi0M}`EKIk3H@}t^_+PI;Cll3pwbMT5Qz%Tabje7eNV~L@^5?XT? zm2#3<@Dp6yzpSW#U@LLY*lEu<$Ws6sWfFNES;fEd@9w(D{wiYhVYJyr`>xsd7M>?% zz@qv$y`_5pG{$$*8DAM|MuXz~l}upzUL&?1u_Dg=0OS-1OazUJHdGWec0!d+yHh>RCyZf&}$e zS^ZQwt;71SDHu}Bxh(>NK}so!Y+p;(hYtJ07v}p}1&*lw19+L~=z^US%klJNZ2Nzu z4$VG^7?bnTryEO{{DWWE+o7-maFHM0 z5I5>tqZtlxdF{ZIjpECd`ABUh*k_cVkY8X^>`dHznwim=ao#FgQ@FA(rJdBl1dily zoO&55B=h&qJ-U>iq*SBMI5uKg)=l&~RdaVSlBBc|z6$zA2$T)C(Py!d@8Ss7RFzyF zgIzH-wA}RjE#~r*CEE2GsX4~=OMmfjG*_@aG30B0d{P+hAHWoGiL;%^;;LjJQ^Mrl z-7QW24=;NC%!{ICxdrWslye8M({O35muI@@Q3 zEmQ-#OTi` zV*5IhiWs_o&6S0Vejf`A>hO{J9B89IZX`G-&r}Cf^Cd(;g{xn?7;6p-7Ny1Bh+*#2Dy~rfHy_a7 zVT3IUYT>yeW9-Rzq>@OH51X$`IcHvdu9cs1u<96kP1uRN7I~>Jf5|K_Qaq_evkU{8 zVU1DKDml>2j5>!GE2sz9R7L37p9@xiIw+Xsgi;}lQW2C5#%jfa^@D1m!KA=m&G8^~ zb@#*u&oeo+FFpOX9OJJv3o^In3fe46Ulkncyp+TYF><)U-&D5yo|w3>oG!%{40Jwb zK$@2Ib-Txi#NNS&u@UuNh&bSa(#d6j2w+hiMLp@rBlemvX=8TxOL7QlK@S(8G(2$Q}Q{ogeG*hu*P1=ioQqR=;#WC%YOX=1|gspB@XZhz+Rx`ke z7&ZzEDT-1|i5hX4-v2!X{c4w0&m|a636dU^d?_q^79JvDLkulND&aZoK>y24p`!c& zPi(br7`0dcS4z4tD6Iyv+*5)nHDTzPOT?&nz$bdLO)LJP$a5z^q`e$HPEAN%qF}Az z&Bn5-tg+6F(LV$?4$~!izy_u{p6)GP`H6S~dWQ|>NQ^+M{qa!M7)||E@f*Gq9sbv^ z5!A#iMuMpXQlb8K6)sOD!dxFYKk=rZtGv)D<(?MSETe25&d=nAg4&<7!?kCqPf;;d zR@uU@M5w8?_s(u4Q#E>(Xp{)s&>0?1{FJb3xL9GDB z^D(Ojl;a9xJcOWb=FH$$@-Q6beALr?66(HWp!J+p7X~R}kYZH#wZ?*2SzNt;yy3W( zY3!-1ThAklRqZ6obyS2`V!$Ls7~P>B&;dn;it!^vkFbUngkB1m6`5OBTe%nh>8V0| zFC*jQQwc{wh9l*~5p}hW?Edc+;@<*^cN4r=iEssbQHF?FaHzxXPkAy6poF7S*=kSP zkwu=YP}?tViRyib+xgDL&*;dM^luo)XpQLuFs{8tk=|DU3K+YrF9a@W(jkn#9Dc~! z|30YOJAWnLb;N(j5I^RVXX9FfU%-23c%)eUut)(#w7y_8`Hf%V3oJsV0lp?lrkRFB z)(8(7`s6C&Xq894-#%Tu9+Y(PSF{mJP7%gFHm- zYLUR9uXi8M3K8Nz6z$w@s#w8?!x}^4;gWhHHuY1!A(rovd4x_y66Xzko;brV)-XE} zY4}?S$)=iqWn88t!k9I6g3F-aNz$ley?}*h9e4r3B4SpP%SNX3_H=?K7P}-il(T(j z)_7zkn^hO}ZB-je<^c=5YRAGAEM|A91yV`LjwQZ0!@`7Oxxw54zIQ#&|M?4 zPlD!KU?>PgbcG=rD4=g9&_9-t#*Wl7Bdxi$$e}ap= zkJfrR0afBdw`-WR^wtE)NuvD%NXUZ$ZJT1(53L)Q_QCoGU-K5uJeF)j{757yECGBc<5ZgnxS$}pku%_-XU_50GKw7E)7 zh@c~?<6~~LY|8F1G)iE2JQ?Ji0K~`&8Z-xOAri*lK;iCtLc`~H!+Oc#{`esvXxfj~ zvNvU`es;2U6Y!l}_@*DwVGwX}#-cGY6gD^m%BFZcyoWj-fG`?}e9i9q+KA-AmV&scFo3MQ*2Cs3rd`+G$IObhL~MLZxt4<3HGVgH|vUKwKR~97IyBO z27Ns2(>Z9Hy7&zf^_G7w{`BhQ(w@*UlmjkohLZzLEwug_V_YMFTo(kgq7XpPOoW}Rb$6HggbE>1`tM4m8kKT&T&QXz#4e=*I&xrTm zslO+kVlEBi>S|~>pQVc!E%De>`kEN7M#h$xk6r555TD0zCRT^$9xRI3?7d0T>%BK!$0t~o57ypLQ;pVC|gG8><4R34ayYb zRsMTNK$Tli*y4^0k}y%cZ6mn-EN)z<&anN0D1~(3eH*@e3YH)Gck7B4?GRGmIG}PZ z_UzseY#xZMkn*yV37Q7tCNsUer(c$g@Y{BOKk{G64p^f&p2OE z<@@yIcU|2H99MFOUD<9U!R=@i+-==;fXRmVcMKp0xmhl=Tifx!udnu!dD`n7^lr?_ zd9(V=o{6fAs+~Ar9*@;jBujj+dmTTzO*$=%-6$4Co5UfXT7b~yF020^rsE>zLvi|t zR&H!X%6E0OlPQQuTO<=X`-P38C%g9r`}>EXcSW~QHiL)N6l{Eed}PBOeM-wxQja6; zFdg)HAKRRAEC@uZi;VdRI4uJVySwP&1srLQHt&Za-)~J#9}PdV29ht;92S515?%|B zk*cl!vC8DLj?RSb8`-+u{N3Fo3lD56mfx@oTL`%MziV%Bpn?uC0)f zp;W$4KhP-JO-)TVxVT=CX=u2g=dAbl_;ywROQ9f3%w{7kB}KmG2P3?o-d9U)=v{dt z+a8i7+#EUXd;LL9@#9$t*^_srUJI5j1`(S{+UQez2z%=I&Mn96dAMLg^>htkrcDaZ zTH)qCNJwCJ902Kx(2EeMSoJm0KSo}w1d~HJ_-1~>#;?viOcy4^F8Lg5l1c{l1jkd5 z2}r~;179P8R69F54y2{)_mVB=Rx(UX5Yh-a&UPcjFI0WkcKZfjV;MQWku1FIP=t=aDpZkKlYeCwdctW5Yg5aLg9QJ(ki zK^NN3Vbj&@F5meR(l2Z~X)s)rU@hLiPy)!nY9-}|b3jquaoLrX#j~5H$=^^MEqNxv z$i(s{i7O z;F7nSi+{8RVM7mLspAtRDwAicWV@$;lZ&AHc85kStvI-%Q8*(>O=#O};FG9}ae<1o zv;!p=(X2N4U}fb`4H}933_p@$QAMSv@mxVl0rs{t_VGU$+;|V{K!8KAW?LwMGsD~dC>i5QOM)13!iw^${Ux&9O1=U78Wz^^ zit}rKs$tsErV@ZQMyB`(&W2XRI}V1#WRlwW6bO{ktdrCFwMKm#QA9MRB108dGA&mU zJ#`XX2@c1#CgJwa!U?Rg97M0e$r@CPZS9DHxW0fA2fTmjcmAfeTG9JYI6D`MC*oga zpeSifC|Vz6U0hJx&Zuo_YkS?xSvB=Ps(k%*~^$KrdzSd~cYv!#X!iIE@Pwm+V z#I5nDLVF?JM}|aPV0l?`ype7Uo>HO;(Z}ASJQiCH_FHmpz=RSF)ffJ-L~0f}NFMmK z%!9CEr!EB~F7y-x?C4*EVg}_{f4~TFm8V>9-M%2oNEWW|vw?4+K0yn`K!EHLKvJ@Y z(~-gpT}`R#t|HkVicU1wE#bJ4w5>5imIs-tB#F>8dW^r7eCr=0GJa=<8s}Ro%=liF zFG^0GJ|-lmO4DD=E<|K5Ai!OOKFz2W+mu~=*7_p}W(ON;7D0+UiQiN?b7!;@PZI1u z^-3mgxY`bauUSr-_vPP#FQZ(YWicW-blP%M8stChs`R6;POl62rRmS8S(l5IMYXOA)zzN*TBZp# z!@h^NMguFpt&>tlV3}q0UQ#GhF!NR%+ljI@W9h5+@rGba@&ee8NN$W!wu7Yr zrcp0?g@{Xec+kD%pf?lL2ZCd(K7-@7RR-ywb#i^v9pbKD`LtsB*x=XjuThIdaXK#xSXQnuJ z4)vY|dU}H^4mNwr{@o}&h$8DBK-bx1VupD1T2Yx$A3^$NpDD;%lA%GaFs)t?ZBNgw z7Ry4aUjlk_WLxPKl`K^SyH_utoD!-uHDD>fzEUtMKhFe6EQ|f66ly~>OW2XFNrJWE zFl)(|`_n)aFcgoqpeY}CNIr{i0<7Y#(H*sN32dEh(7o?xVvrXy2tZEWL_E3S@N`Wi z`kN{sO>F%(EAuh>*$E{EqmyS#~Y>>wKexhV#L}>-MECV2S@P9;ojfLS$v$kBmba$JHf@Eb@`3{ z?%W>u?LSEI<13BPGPg1mpw<-b*p+l=U$F$2ZF~*p4N(YFkdA)PF`uEz;dc3L+ zdcOAfYG8vbL!d&RDnJ6naXHns0@owH!f-3wXCMKofvMNfwDhyv^WKI(%m^wu>E z6puYDeAl=lSFaB5m2UVt+IGuM9IpL!bJy!fX(KjgaPbz$a6$;BEnw~FY@`!ye$|9> z!nPhH*ZY$BE8~1aQB@Q9%(dP7U|y@%_;7tocdKfQ2V{gNKQ0fJg~7@VRc-YlaZ*ZS zez~{5E`hzq&|U?o>(AQUTovwUnn*Ut(2#$+vP!j!ul#U8(e7^3G#0fv)2!tiI|SG< z72M5XrTna8rz#wZ*@6_?q@+IBw>QQ6whlc7sTwpnvMVHiW6eIWMe|Dl?F<~0k63Ku zRY0;5sA7@BapfeJPKnGgIi2rupt(7iqolO-N$I!l#E|(|`-5B2l$cRwr(2(U{+pAr zAv2flkfeiLW8n`(Ifjuh_(h1pj`t>W_!#Km{AHMUwHFj@u2{CO-3}IfV4Ou@e-$BW zHIjh7!>nk6n!q4EVQ*{-Co8_%4j8S*H8zuYEI zz(=S&&lWob1{8|}x)lPk-niU2ya+uzfcw_APY0uTiO3t|CXk^-%z7b!Nl4z|(mVcb z&sx&uIu};=(`7+7DgkZY+W8J_Tz-+^nME+=x8lOBzQ~jrsBR%z#)GQNK!UNx<>_*C z#OH6njF764g5HA1>+2VKHPqFY5);@MuZ%7*FfIzdE7C=0Jf>7=uekD0VEqf$0UAm! zj|PXMEo+++IIubx;Kjd%Vpw7lTJ{iqTGl(Y;NzQpa$f1oHvaL0M#;k5pq};BtA?Ha zgd+z&m)86tryQq_(IA&KyP zB1t2r$k&_anotCFyb{-Fn+KHf4kQ5{ZZf7!e#}Isp<$%7+ZF26xC%^69APJDHRtLK z9~-nY>hMBxl!GC=$2Dq1H(GZNNPYt8)#9u?{GkwTx4rDon0;?#JKRHs_~Y?NE1*UI zrk5Fk{+cnrup;c-$K(5|zmoN5j9x{FyurJ~)MG$o?d(?&86xdGnNOTLJ)K;Xno6dX z`pnVH8hzyTz3u!WPCMfDD+jIifbo`_M-_MA{9L;-P2OS+o#a;sJs*dOlir)t$gE}i z54ZuCNr^%JuUJHqlG4*tY(k(Lsi%3s@+Ns*rjV=3*@fuKZOi#XaKcjLpRYicb=X^Z zStgsqBhv{;H@AQ)eGsvZPe4@6baFSH!{UIESt#9aclxm?45Q;xyRF^d#cZ=M!`fP2 zMy+u1n3gy{;f#YvZ8SCYzGrPM=u}}_hyyW>PkB=HTw&Z;^P}6K>6(+fLqV> z@#EBf|8T1rnzc}M>#9uf<}YXICR5|4G+BPMOb8I)?N{wSeBl_5MK9 zH*5SnswkJyK5Vo-_2K?HcX)S~xwPOSR`y!Sd~NtoM#dF7BTHqw+w|9Erra;xAyGh8 z^Zg7h61I2gHmujyMdDwccU$VM;s&*z#4L@RQgK%xR`vV z{UMJtEW!Y^{$)lwZH7+ zZ=dzGv`K)99I0Kf(}64NXML-j_W5Zb=-02NDFzcd|L&l$NzjnZND#2k)x{h+sGsoa z_3+n9WFb$-F%kW<0dnCFGvY{f!9hB_Z3aX3i(2avsi!SxQzU+1Dz-0Z@Y*@)fM}VB zNP?Mk-5X1^ZpbAhXEnky7NVV+i}YOTJbEaIG|Vm!)Z1!85%DhSeS4>iJ8q zk7qh)3-T-1tnCssG$b)FpdTK-h~={N-sZKLoIKSP^9ZVbuw7WHcJ;gofSGEywJOE{ z7Mo8kCnjQlD$19iPx}1ypjKUNobmu{w(EnuGh1?23_WdBqhLzznmR5sBMMe+kWG!l*>;9aeT*u@6B zp&^j^$oY=TJIaW%;yLz)*86eBV8l3o3VQk(z}+;=s;RR7j!+=ialY-Wc1mfOEHR%L3wNvjX_o!=;N6YKo|8Y7UFGarF=Hwam;O-#y$Z4Zmg8Rj%5K zZ1?SEyo<{`;UX(&@KgH0fg&q=*x%o@dl8I?(V7W`p1eI@IWg0aZ0Y^n@JWe~HUx+zh-g;;F&zicke%^i(Aoik8G__?EN3b*gZ zq5#W)ZwM{`j=bo~xt>h}48sWH@K@w|z>N%4V%DR=Lv*L%88+6@4}CF1U5>&5o#J0s zf8EDBzMR3ggmHh3Xn9-S`t$|^gNSqAqqsOpk(cCUP5#D8epHnH-p0}Qv#G-0$6C^! zrW}uSFwJ47H`gBO(<_YtV6!TeTE7F_nhs1c)BUe1K9&Y_%FJLJfGN%3;i;`rGX3yP zAR?NS->q_B2Gi+&Jhh_`f}z#L6`zo@h0_ruIy>?ei;2>6LIr~o0( zB{OIp4|DE`Tog$xGR)5q5>0X;C(|{WVQqua`m^zM`@)CZ&hSpZgU>jkPLWQZ;{A~%vvn#YzQ#)w1}Jg;Jl!Idu^R$TF0D0kAE-{Ll6&k!=e8eNLSX@^6^ zm5;05vMxm!&Q6<{Cpp~{nHOt=I28V4e;=2K%ZoNCF!!!O)e>8C3lJW9Wx6RY2TGR& z)*#n|%F%9a$_Q7)9o8k*>hv6bok{a)7^5L;?}WU#jn}C7z!c)De^bVSW2!0Wr-R%t zn>th8M&^gVso9~k4?<5#jaUqS!oeSih?|1DsG^8^n(eG{*la&DArxgdZ%P0awLAed zkI&)g-;50ZZ$<`qpO$05`=BdhB4hOaC>W8G8F)kx%LfxpxH3HTQ>Yf9V!c2};$Vq$ z9;C>NmQc2+<>P!QM-bEQJZK^jILL1E5h`-i@QmII(pTH(q}Q4uu#o%}SJ8#L#QvuR(BMo!8azf6 zqlR+h)zU%PHWB^d=xnkBLVSjY&t+p*y|Tr&URMx+1)}MSe7I; z^C_@iU}ayp8bJ(#oR1?05yyU+m}848Rs)ei$=l`&5S$&L#C&j@L^t>(TJmXGA3z-N zB~;-OsNmVt@{O2e62HL9_LFBE-@Y>r`|csgw+fkZ=w7*_`*Y1I)hM;}e&xCxPb7SL z)`kCr%p2PF{f16HJ#!xib|kOKBAvG>0k2?|rGfk0o?!A$2l<}@Zub51*l=d?gfj^% zQaolq!?zSbnG$5%+k*iW9b*@NWo)`Vr$=25YN_pi2?{u&!1EXUv5fA!OA>1YhD}jZ zkB1Xx!>Gl@XP3t`H5A}1l?`mgbEyM+GYs4l*{2#3;dZq8B=*mtp+}j)BPfg^VdEh< zNx&WSq{V)ndxQ3=g*=Dd0B(Rig7c%7*G20K9f%rppw7FdB8*U%E;gI`1nh`&ugw1L z4#AZT3C4&wwW7*s#&zSi>=T-%qU*dZ&Urq0=(oyL{p6$~yxg=s$MIptkDVu@Vuk z#6gKjedsH;GL7Q^WaVG-=u-f<1tL`h1Vm;&E+0*+`{9^6ZGi-Tu&WQP^~D;b{L3D7 z0kgW_;)g>mSy}&ITQ1>5fS!>|JBc^S-~ChZV~o__acj`2@V2{6kTZegNnGCzmeBr(%@F1KVEX`&yNVuRj*h* z_oc%*E30P7?126$N%F^|lQH{ilcbj@)#;39OLm z1UfcqYFlX6U4EiizE=RQpA$|zN-+Mz_;C<0?E{355x@5sf5;^GaSucl2^%<5*-2~Q z==-VVtI!2SkV?S^1ES8=A0QmElrz2cKTK6o_`bH{ zfuVkt*7kn>a#I6P*3#5f-lDfK2`t0&ZV&NYw-&&lyUozgw*L3Ee5m`$Mn6&camIMk zPtP)#L0+~z;0(jzbG4LuJA^>l?6~A7pn_BGv_H#Cz^yTkqBJ+q0ZQ7!_C?04=)yK z7hN_U6D^|FS2vDP2){?}cPhl-1I{VgBS_8&L{m{)sRI9$`3Yc4^Pjb7fL^bnV$K20 zmehGBY46p9;^63k1}sX-{(E2{Zc=W1%+s68F>P4HaHdN*iPXcV4`Vo=_0PaX>mww_ zmf)HK1~H|Ejm;mwmI!{gx1oVO&oEEjmaToB(PCF6pf*`P+8XukoE~;);WE@sNy1U6 zXH;!Y2`u&DX!>CD3>ILD!9L8RBezdn(N;$VUV&zy@XoF@WK!I~oT4*XhwaKw#l~^H+kg3ij|6 zg8?RBBL`&8#@hzB$4k$2f${KefT0zo4(Z$nyP*pWKcJxYRK)IwY!nF^DF=^FF>Y4-`%) zx-4J1+s5ZG*o3c6p-V?Fu&MmGD!JYpgHGIe*T2|7q1K9;c)CkD9eVlm)$@7k3H}E( z<5T5Cas^tBx-Sbwr5?P&FoR1Ff$hWtabSP}IX0#XLJgTW{7i>GvFHUU$m9^V>Mab( z102PUQ@^(newqK3RYcK{d0guaDrA+SRL9)NK?a_;9f@{0TZ98r?RK_R`4Ws&%??`R z0Ox$b14J5#QR`7=4RxmGeQbH=N&TY+Re9g$3dM7RjDuN2FxlG}Up?LtgE;(wUQ&-L zpY>o+EtV*_vv(6D^I1&iJq|9pm*4d<9pT(3Iv#1eG{-XJ5QZzn}k3uY*IR zg0$8uR>We9`_q@thHaTIk#S_A+=ybd`kZFAMl!le09|xt_I%!}Km!VxXKf!90%yc? zY5cBnP95Y)W;FcZIHpn9G_rRn=u*gM)*G$+&UUWG+)s~0pWSVD@n?U#LF1vJ67_fn z*WTe~2KU1sKty$Xnw(7B@x67PfTC52T*&ACI&J{Kb^U2MT<*bP$bV2#{QRo@pL)2& z!xa}Nrl-po=(V1l_4GC>CcZcTE40D0Wairs7E7Gj72iV0WXQNSbK9YHCXhM#qs4E= zFrp^>`GxH-cCHTLY$C}TKHOPbTVGp4W33rp3ttQ$ug)@|$jV#);7xQz?fxIRf5mk& z*~j8Likh!0e%TbmqPLJ=O?|K(Nbq;E8CN5(&xUUqc)Woebdp#2`gWs?ubinfTnV-(zSexHez51)xp8J}F$_q^&I4PaOYy}=HNE?bUz4g+ z2RO9yUT-Uv+_ae9>Wg*Veo9QbE6=rRJJ}dm3$;@Fvr&j}WmQbWkWfKKYHZBhFp^R4 z9?-}p7tKR!M;`QlkP0omYcZPBwJEKh1^n0*((jreGDE({Z5W5KyPqx_cqkILkZ{Bt zF92&R4eI~c=x9Au0_PnF*9!Bj!f!++8wVEY@>uvZr$8|IyiOPY(7zI6di}U_sq;Hc z(E6U);b8gfM>l|Q%snFULb9Vjej!FgZ#|SN{h7Pm;&Ff~Bje=7 zNjmkR#Of(1P~4nZfgRGw$?hI#Wx5Zv>bMensw=`I$r?w7xUP^t9PZ$Jx{L)ZBQf_` z-unvX2$B;deYCMTH2GY$0n[Z&s?5bVlyF}Z!|W{eCHt`h#nQ(;5HT4C2z4Y^a@ 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\n" - + "\tTo exit PlanNUS, type "; - private Ui ui; private ModuleLoader allModules; private Person currentPerson; - private boolean isStartupSuccessfully; + private Storage storage; private boolean isExit; /** @@ -33,10 +25,10 @@ public PlanNus() { this.ui = new Ui(); this.allModules = new ModuleLoader(); this.currentPerson = new Person("Bob"); - this.isStartupSuccessfully = true; + this.storage = new Storage(allModules); isExit = false; } catch (Exception e) { - this.isStartupSuccessfully = false; + isExit = true; System.out.println(e.getMessage()); } } @@ -45,63 +37,29 @@ public PlanNus() { * Main entry function for PlanNUS. */ public void run() { - assert isStartupSuccessfully : "Startup is unsuccessful"; + assert isExit == true : "Startup is unsuccessful"; - showWelcomeMessage(); - Storage storage = initializeStorage(currentPerson); + ui.showWelcomeMessage(); + storage.loader(currentPerson); while (!isExit) { try { - System.out.println(AWAIT_COMMAND); + ui.showAwaitCommand(); String userInput = ui.getScanner().nextLine(); App selectedApp = AppParser.parse(userInput, allModules, currentPerson, ui); selectedApp.run(); isExit = selectedApp.getIsExit(); if (!isExit) { - showWelcomeBackMessage(); + ui.showWelcomeBackMessage(); } } catch (Exception e) { System.out.println(e.getMessage()); } } + ui.closeScanner(); storage.saver(currentPerson); - showExitMessage(); - } - - /** - * Initialises storage with the data of the currentPerson. - * - * @param currentPerson Person of data - * @return populated Storage - */ - private Storage initializeStorage(Person currentPerson) { - Storage storage = new Storage(allModules); - storage.loader(currentPerson); - return storage; - } - - /** - * Prints exit message for user just before termination of program. - */ - private void showExitMessage() { - System.out.println(EXIT_MESSAGE); - } - - /** - * Prints welcome back message for user when user returns back to main menu. - */ - private void showWelcomeBackMessage() { - System.out.println(WELCOME_BACK_MESSAGE); - System.out.println(HELP_MESSAGE); - } - - /** - * Prints welcome message for user upon first entry into PlanNUS. - */ - private void showWelcomeMessage() { - System.out.println(WELCOME_MESSAGE); - System.out.println(HELP_MESSAGE); + ui.showExitMessage(); } /** diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java b/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java index 86c8da6e14..7887de4259 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java @@ -1,9 +1,7 @@ package seedu.duke.apps.academicplanner.commons; import seedu.duke.apps.moduleloader.ModuleLoader; -import seedu.duke.global.objects.PartialModule; import seedu.duke.global.objects.Person; -import java.util.ArrayList; import java.util.HashMap; public class ModuleValidator { diff --git a/src/main/java/seedu/duke/ui/Ui.java b/src/main/java/seedu/duke/ui/Ui.java index c692721314..ac64dbf238 100644 --- a/src/main/java/seedu/duke/ui/Ui.java +++ b/src/main/java/seedu/duke/ui/Ui.java @@ -6,6 +6,14 @@ * Class representing the ui for PlanNUS. */ public class Ui { + private static final String WELCOME_MESSAGE = "Welcome to PlanNUS!"; + private static final String WELCOME_BACK_MESSAGE = "Welcome back to PlanNUS Main Menu!"; + private static final String AWAIT_COMMAND = "Type in a command to continue..."; + private static final String EXIT_MESSAGE = "Thanks for using PlanNUS! We hope to see you again!"; + private static final String HELP_MESSAGE = "\tFor academic planner, type \n" + + "\tFor CAP calculator, type \n" + + "\tTo exit PlanNUS, type "; + private Scanner scanner; public Ui() { @@ -19,4 +27,32 @@ public Scanner getScanner() { public void closeScanner() { this.scanner.close(); } + + /** + * Prints exit message for user just before termination of program. + */ + public void showExitMessage() { + System.out.println(EXIT_MESSAGE); + } + + /** + * Prints welcome back message for user when user returns back to main menu. + */ + public void showWelcomeBackMessage() { + System.out.println(WELCOME_BACK_MESSAGE); + System.out.println(HELP_MESSAGE); + } + + /** + * Prints welcome message for user upon first entry into PlanNUS. + */ + public void showWelcomeMessage() { + System.out.println(WELCOME_MESSAGE); + System.out.println(HELP_MESSAGE); + } + + public void showAwaitCommand() { + System.out.println(AWAIT_COMMAND); + } + } From 8c84d5d626523b7ee32db60defdb9723164d64b9 Mon Sep 17 00:00:00 2001 From: Khenus Date: Sat, 17 Oct 2020 17:56:59 +0800 Subject: [PATCH 137/450] WIP Finished Sequence diagram for PlanNUS --- docs/DeveloperGuide.md | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 9440ef3bb2..41bfcb18ee 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -22,7 +22,7 @@ The following are remaining steps to be taken to finish the set up: ![Architecture](./images/DeveloperGuide/Architecture.png) -The ***Architecture Diagram*** given above explains the high-level design of PlanNus. Below is a quick overview of each component. +The ***Architecture Diagram*** given above explains the high-level design of PlanNUS. Below is a quick overview of each component. @@ -34,11 +34,11 @@ The ***Architecture Diagram*** given above explains the high-level design of Pla * At launch - * Loading all modules for AY2020/21 into PlanNus + * Loading all modules for AY2020/21 into PlanNUS - * Loading previous save file into PlanNus if available + * Loading previous save file into PlanNUS if available - * Creation of entry point to available apps in PlanNus + * Creation of entry point to available apps in PlanNUS * While running @@ -63,10 +63,10 @@ The ***Architecture Diagram*** given above explains the high-level design of Pla ### Project Structure -Each package in the PlanNus as given above follows the following file structure where applicable: +Each package in the PlanNUS as given above follows the following file structure where applicable: * A functional class that acts as the entry point to that module -* A parser class that parses user input into executable commands by PlanNus +* A parser class that parses user input into executable commands by PlanNUS * `commands`: A package that handles all executable commands given by parser * `commons`: A package with the utilities and shared classes across the parent package @@ -84,9 +84,23 @@ The interaction within each package should ideally be as shown below. -### Interaction between packages +### Lifecycle of PlanNUS + +The *sequence diagram* below shows how different packages and classes interact with each other throughout the whole lifecycle of PlanNUS. + +![Packages Interaction](C:\Users\Orion\Desktop\Git\CS2113T\tp\docs\images\DeveloperGuide\Packages Interaction.png) + + + +### Details + +#### Global Component + +#### Storage Component + +#### Parser Component + -The *sequence diagram* below shows how different packages interact with each other throughout the whole lifecycle of PlanNus. From b14688aadc911a23eb1bef994333a2321fa15ac1 Mon Sep 17 00:00:00 2001 From: vanessa-kang Date: Sat, 17 Oct 2020 18:30:31 +0800 Subject: [PATCH 138/450] Refactored, fixed code quality issues. 1) Refactored print statements in ModuleDetailsCommand to PrintUtils 2) Fixed style issued flagged by gradlew build 3) Edited I/O redirection for runtest.sg TODO: add JUnit tests --- .../AcademicPlannerParser.java | 1 + .../commands/ModuleDetailsCommand.java | 19 ++++--------------- .../academicplanner/commons/PrintUtils.java | 18 ++++++++++++++++++ text-ui-test/EXPECTED.TXT | 10 ++++++++++ text-ui-test/input.txt | 1 + 5 files changed, 34 insertions(+), 15 deletions(-) diff --git a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java index 4852fe41f5..f6fb4a823d 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java +++ b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java @@ -3,6 +3,7 @@ import seedu.duke.apps.academicplanner.commands.AddModuleCommand; import seedu.duke.apps.academicplanner.commands.EditModuleCommand; +import seedu.duke.apps.academicplanner.commands.ModuleDetailsCommand; import seedu.duke.apps.academicplanner.commands.PrintCalenderCommand; import seedu.duke.apps.academicplanner.commands.PrintHelpCommand; import seedu.duke.apps.academicplanner.commands.RemoveModuleCommand; diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/ModuleDetailsCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/ModuleDetailsCommand.java index af3dda30a3..eb3c2baffe 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/ModuleDetailsCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/ModuleDetailsCommand.java @@ -1,12 +1,12 @@ package seedu.duke.apps.academicplanner.commands; + import seedu.duke.apps.academicplanner.commons.ModuleValidator; +import seedu.duke.apps.academicplanner.commons.PrintUtils; import seedu.duke.apps.academicplanner.exceptions.AcademicException; import seedu.duke.apps.moduleloader.ModuleLoader; import seedu.duke.globalcommons.Command; import seedu.duke.objects.FullModule; -import java.util.logging.Level; - public class ModuleDetailsCommand extends Command { private static final String ERROR_NOT_OFFERED = " IS NOT OFFERED BY NUS"; @@ -14,6 +14,7 @@ public class ModuleDetailsCommand extends Command { private final ModuleLoader allModules; private String moduleCode; private ModuleValidator moduleValidator; + private PrintUtils printUtils = new PrintUtils(); public ModuleDetailsCommand(ModuleLoader allModules, String moduleCode) { this.allModules = allModules; @@ -23,22 +24,10 @@ public ModuleDetailsCommand(ModuleLoader allModules, String moduleCode) { @Override public void execute() throws AcademicException { - validateModuleCode(); - int mapIndex = allModules.getModuleMap().get(moduleCode); FullModule module = allModules.getModuleFullDetails()[mapIndex]; - String semOfferedStr = module.getSemester().toString(); - - System.out.println(module.getModuleCode() + " " + module.getTitle()); - System.out.println("\t" + "Department: " + module.getDepartment()); - System.out.println("\t" + "Faculty: " + module.getFaculty()); - System.out.println("\t" + "Credits: " + module.getModuleCredit() + "MCs"); - System.out.println("\t" + "Semesters offered: " + semOfferedStr.substring(1,semOfferedStr.length()-1)); - System.out.println("\t" + "Prerequisites: " + module.getPrerequisite().replaceAll("\n","\n\t ")); - System.out.println("\t" + "Corequisites: " + module.getCorequisite().replaceAll("\n","\n\t ")); - System.out.println("\t" + "Preclusions: " + module.getPreclusion().replaceAll("\n","\n\t ")); - + printUtils.printModuleDetails(module); } private void validateModuleCode() throws AcademicException { diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java index 9019f89c1d..fe45ffc1e5 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java @@ -1,5 +1,6 @@ package seedu.duke.apps.academicplanner.commons; +import seedu.duke.objects.FullModule; import seedu.duke.objects.PartialModule; import java.util.ArrayList; @@ -62,6 +63,23 @@ public void printFullCalendar(ArrayList sortedBySem) { } } + public void printModuleDetails(FullModule module) { + + String semOfferedStr = module.getSemester().toString(); + + System.out.println(module.getModuleCode() + " " + module.getTitle()); + System.out.println("\t" + "Department: " + module.getDepartment()); + System.out.println("\t" + "Faculty: " + module.getFaculty()); + System.out.println("\t" + "Credits: " + module.getModuleCredit() + "MCs"); + System.out.println("\t" + "Semesters offered: " + semOfferedStr.substring(1,semOfferedStr.length() - 1)); + System.out.println("\t" + "Prerequisites: " + + module.getPrerequisite().replaceAll("\n","\n\t" + printSpace(15))); + System.out.println("\t" + "Corequisites: " + + module.getCorequisite().replaceAll("\n","\n\t" + printSpace(13))); + System.out.println("\t" + "Preclusions: " + + module.getPreclusion().replaceAll("\n","\n\t" + printSpace(13))); + } + /** * Prints num spaces for indentation. * @param num int of spaces to print diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 5b261ff248..b10ce66fd2 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -11,6 +11,7 @@ Available commands are: add edit remove + details view help exit @@ -24,6 +25,15 @@ Valid grades are: If you have yet to have a grade for the module: NT CS1010 added into Semester 2. Type in a command to continue... +CS2101 Effective Communication for Computing Professionals + Department: Center for Engl Lang Comms + Faculty: Computing + Credits: 4MCs + Semesters offered: 1, 2 + Prerequisites: Students have to complete ES1000 and/or ES1103 (if required to take the module/s) before reading this module. + Corequisites: Students have to read CS2103T Software Engineering at the same time as this module. + Preclusions: CS2103 Software Engineering, IS2101 Business Technical Communication or its equivalent, ES2002, ES2007D, and ES1601. +Type in a command to continue... Thank you for using Academic Planner! Welcome back to PlanNUS Main Menu! For academic planner, type diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt index d0bf77927f..cb76286eb1 100644 --- a/text-ui-test/input.txt +++ b/text-ui-test/input.txt @@ -2,6 +2,7 @@ acadplan add CS1010 2 A +details cs2101 exit capcalc current From cccfe3e05174de061a875e8469e1e3de9b4bc331 Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Sat, 17 Oct 2020 18:32:13 +0800 Subject: [PATCH 139/450] Add partial Developer guide for add command --- docs/DeveloperGuide.md | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 48743e3bc9..7df8faaf8c 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -88,12 +88,50 @@ Classes used by multiple components are in the `src.main.java.global` package. ## Implementation -### Academic Calendar Planner add module feature +### Academic Calendar Planner : Add Module feature #### Proposed implementation {Exact diagram and corresponding descriptions to be added} +The proposed add module command is facilitated by `AcademicPlannerParser`. It allows users to add modules into their + `Academic Planner` by instantiating a new `PartialModule` object and adding it into the `userModuleList` + and `userModuleMap`. Both the list and hashmap are the _java API_, which are used by importing them. The `Person` object + is used to encapsulate both `userModuleList` and `userModuleMap`. + +Additionally, add module command extends the `Command` class and overrides its `execute()` command. An external class, + `ModuleValidator` is called upon to validate the various parameters that the user has entered, as to only allow + valid modules to be added to the user. + +Given below is an example usage scenario and how add module command behaves at each step. + +{DIAGRAM FOR STEP 1: INITIAL STATE} + +**Step 1** : The user calls the add module command from the `AcademicPlannerParser`, which will initialise a +`AddModuleCommand`. `AddModuleCommand`'s constructor takes in parameters of `ModuleLoader`, `Person`,`Scanner`, +and `String`. Below is a table of what each parameter corresponds to in the state diagram of the program. + +|Parameter|Corresponds to|Referred to as +|:---:|:---:|:---: +|`ModuleLoader`| Class representing all modules offered by NUS | `allModules` +|`Person`| Class representing current user's information | `currentPerson` +|`Scanner`| Class representing java's default scanner class | `in` +|`String` | Class representing the module code to be added | `moduleCode` + + {DIAGRAM FOR STEP 2: WITH FH AND LOGGER} + +**Step 2** : `execute()` is called from the instance of `AddModuleCommand`. It can throw `AcademicException` +or `IOException`. `FileHandler` and `Logger` classes from the _java API_ are instantiated to handle logging for the +remainder of the `execute()` method. + + +**Step 3** : `in` then reads in the next two lines of input, which is the user's input for the desired semester for the +`moduleCode` and `moduleCode`'s grades. + +{DIAGRAM FOR STEP 3: } + +**Step 4** : + #### Design consideration {Exact diagram and corresponding descriptions to be added} From 53a59e0f93da66e3ff139289f8c984bcd359691f Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Sat, 17 Oct 2020 18:47:01 +0800 Subject: [PATCH 140/450] Fix image link and finish add module DG --- docs/DeveloperGuide.md | 17 ++++++++++++----- ...nteraction.png => Packages_Interaction.png} | Bin ...ect structure.png => Project_structure.png} | Bin 3 files changed, 12 insertions(+), 5 deletions(-) rename docs/images/DeveloperGuide/{Packages Interaction.png => Packages_Interaction.png} (100%) rename docs/images/DeveloperGuide/{Project structure.png => Project_structure.png} (100%) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index cf6fe7cd3a..227405b7ba 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -72,11 +72,9 @@ Each package in the PlanNUS as given above follows the following file structure * `commons`: A package with the utilities and shared classes across the parent package * `exceptions`: A package to handle all exceptions thrown across the parent package - - The interaction within each package should ideally be as shown below. -![Project structure](C:\Users\Orion\Desktop\Git\CS2113T\tp\docs\images\DeveloperGuide\Project structure.png) +![Project structure](./images/DeveloperGuide/Project_structure.png) *Note that while this is the ideal case, packages such as* `global`, `parser` *and* `ui` *might not strictly follow this structure due to these package serving a different function altogether (Refer to the sections below for more details.)* @@ -84,7 +82,7 @@ The interaction within each package should ideally be as shown below. The *sequence diagram* below shows how different packages and classes interact with each other throughout the whole lifecycle of PlanNUS. -![Packages Interaction](C:\Users\Orion\Desktop\Git\CS2113T\tp\docs\images\DeveloperGuide\Packages Interaction.png) +![Packages Interaction](./images/DeveloperGuide/Packages_Interaction.png) ### Details @@ -143,7 +141,16 @@ remainder of the `execute()` method. {DIAGRAM FOR STEP 3: } -**Step 4** : +**Step 4** : `validateInputs()` is called to validate the user entered data against `allModules`. + +**Step 5** : `AddUtils` is called upon to return module credit for `moduleCode` by `getModuleCreditForModule()`. + +**Step 6** : `AddUtils` is called upon again to add the module's data to the user, by instatiating a new +`PartialModule` and storing it in both `userModuleList` and `userModuleMap`. + +**Step 7** : `FileHandler` terminated. + +**Step 8** : `AddModuleCommand` is terminated. #### Design consideration diff --git a/docs/images/DeveloperGuide/Packages Interaction.png b/docs/images/DeveloperGuide/Packages_Interaction.png similarity index 100% rename from docs/images/DeveloperGuide/Packages Interaction.png rename to docs/images/DeveloperGuide/Packages_Interaction.png diff --git a/docs/images/DeveloperGuide/Project structure.png b/docs/images/DeveloperGuide/Project_structure.png similarity index 100% rename from docs/images/DeveloperGuide/Project structure.png rename to docs/images/DeveloperGuide/Project_structure.png From 009d74e38bb306a3115102b42fa8e4433e1e11ee Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Sat, 17 Oct 2020 19:01:12 +0800 Subject: [PATCH 141/450] Fix wrong references --- .../apps/academicplanner/commands/ModuleDetailsCommand.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/ModuleDetailsCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/ModuleDetailsCommand.java index eb3c2baffe..00c32eb708 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/ModuleDetailsCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/ModuleDetailsCommand.java @@ -4,8 +4,8 @@ import seedu.duke.apps.academicplanner.commons.PrintUtils; import seedu.duke.apps.academicplanner.exceptions.AcademicException; import seedu.duke.apps.moduleloader.ModuleLoader; -import seedu.duke.globalcommons.Command; -import seedu.duke.objects.FullModule; +import seedu.duke.global.Command; +import seedu.duke.global.objects.FullModule; public class ModuleDetailsCommand extends Command { From ec720efcf1fc2e6ca3d02961f5a1824b4c7df2d1 Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Sat, 17 Oct 2020 19:20:19 +0800 Subject: [PATCH 142/450] Update Developer guide --- docs/DeveloperGuide.md | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 227405b7ba..f785bc7eab 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -139,10 +139,10 @@ remainder of the `execute()` method. **Step 3** : `in` then reads in the next two lines of input, which is the user's input for the desired semester for the `moduleCode` and `moduleCode`'s grades. -{DIAGRAM FOR STEP 3: } - **Step 4** : `validateInputs()` is called to validate the user entered data against `allModules`. +{DIAGRAM FOR STEP 5: with addutils } + **Step 5** : `AddUtils` is called upon to return module credit for `moduleCode` by `getModuleCreditForModule()`. **Step 6** : `AddUtils` is called upon again to add the module's data to the user, by instatiating a new @@ -152,9 +152,22 @@ remainder of the `execute()` method. **Step 8** : `AddModuleCommand` is terminated. +The following sequence diagram shows how the `AddModuleCommand` works: + +{Sequence Diagram} + +The following activity diagram summarizes what happens when the user executes an `AddModuleCommand` : + #### Design consideration -{Exact diagram and corresponding descriptions to be added} +The following were considered when implementing commands: + +* Option 1 (Current Choice): As a class by itself + * Pros: Increases modularity of code, higher overall code quality + * Cons: More complicated to implement +* Option 2: As a method in a class + * Pros: Easier to implement + * Cons: Class needs to be instantiated and increases coupling, reducing testability. ### CAP Calculator features (i.e. current and set target) From 50b7debc532efc10f75851ba3fbc55c060cbe9db Mon Sep 17 00:00:00 2001 From: Khenus Date: Sat, 17 Oct 2020 21:16:22 +0800 Subject: [PATCH 143/450] V1.3 Fixed bug for removing module from array list --- docs/DeveloperGuide.md | 20 ++++++++++++------- .../academicplanner/commons/RemoveUtils.java | 20 ++++++++++++++----- .../seedu/duke/storage/commons/LoadUtils.java | 14 +++++++------ 3 files changed, 36 insertions(+), 18 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index f785bc7eab..7751f04a3c 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -20,7 +20,9 @@ The following are remaining steps to be taken to finish the set up: ### Architecture -![Architecture](./images/DeveloperGuide/Architecture.png) +

The ***Architecture Diagram*** given above explains the high-level design of PlanNUS. Below is a quick overview of each component. @@ -74,7 +76,9 @@ Each package in the PlanNUS as given above follows the following file structure The interaction within each package should ideally be as shown below. -![Project structure](./images/DeveloperGuide/Project_structure.png) +
+ Architecture diagram for ideal project structure in PlanNUS +
*Note that while this is the ideal case, packages such as* `global`, `parser` *and* `ui` *might not strictly follow this structure due to these package serving a different function altogether (Refer to the sections below for more details.)* @@ -82,7 +86,9 @@ The interaction within each package should ideally be as shown below. The *sequence diagram* below shows how different packages and classes interact with each other throughout the whole lifecycle of PlanNUS. -![Packages Interaction](./images/DeveloperGuide/Packages_Interaction.png) +
+ Sequence diagram for lifecycle of PlanNUS +
### Details @@ -109,11 +115,11 @@ The proposed add module command is facilitated by `AcademicPlannerParser`. It al `Academic Planner` by instantiating a new `PartialModule` object and adding it into the `userModuleList` and `userModuleMap`. Both the list and hashmap are the _java API_, which are used by importing them. The `Person` object is used to encapsulate both `userModuleList` and `userModuleMap`. - + Additionally, add module command extends the `Command` class and overrides its `execute()` command. An external class, `ModuleValidator` is called upon to validate the various parameters that the user has entered, as to only allow valid modules to be added to the user. - + Given below is an example usage scenario and how add module command behaves at each step. {DIAGRAM FOR STEP 1: INITIAL STATE} @@ -128,9 +134,9 @@ and `String`. Below is a table of what each parameter corresponds to in the stat |`Person`| Class representing current user's information | `currentPerson` |`Scanner`| Class representing java's default scanner class | `in` |`String` | Class representing the module code to be added | `moduleCode` - + {DIAGRAM FOR STEP 2: WITH FH AND LOGGER} - + **Step 2** : `execute()` is called from the instance of `AddModuleCommand`. It can throw `AcademicException` or `IOException`. `FileHandler` and `Logger` classes from the _java API_ are instantiated to handle logging for the remainder of the `execute()` method. diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java index 13989879f7..193b7cd512 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java @@ -4,7 +4,10 @@ import seedu.duke.global.objects.PartialModule; import seedu.duke.global.objects.Person; import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; import java.util.Map; +import java.util.Set; /** * Class representing remove module utilities from the remove module command. @@ -12,9 +15,10 @@ public class RemoveUtils { private static final int FROM_REMOVE = 3; - private final ArrayList modulesList; private final Map modulesAddedMap; + private final ArrayList modulesList; private final CalculatorUtils calculatorUtils; + private final Person currentPerson; /** * Default constructor for RemoveUtils. @@ -25,6 +29,7 @@ public RemoveUtils(Person currentPerson) { this.modulesList = currentPerson.getModulesList(); this.calculatorUtils = new CalculatorUtils(currentPerson); this.modulesAddedMap = currentPerson.getModulesAddedMap(); + this.currentPerson = currentPerson; } /** @@ -40,7 +45,7 @@ public void removeModuleFromUserModuleList(String moduleCode) { PartialModule module = modulesList.get(moduleIndex); calculatorUtils.updateCap(FROM_REMOVE, module); - depopulate(moduleCode, module); + depopulate(module); assert modulesList.size() == totalNumberOfModules - 1; } @@ -48,11 +53,16 @@ public void removeModuleFromUserModuleList(String moduleCode) { /** * Removes module from both arraylist and hashmap of the user. * - * @param moduleCode module code to remove * @param module module object to remove */ - private void depopulate(String moduleCode, PartialModule module) { + private void depopulate(PartialModule module) { modulesList.remove(module); - modulesAddedMap.remove(moduleCode); + + HashMap newModuleAddedMap = new HashMap<>(); + for(int i = 0; i < modulesList.size(); i++) { + newModuleAddedMap.put(modulesList.get(i).getModuleCode(), i); + } + + currentPerson.setModulesAddedMap(newModuleAddedMap); } } diff --git a/src/main/java/seedu/duke/storage/commons/LoadUtils.java b/src/main/java/seedu/duke/storage/commons/LoadUtils.java index 0e616855cb..776dc6438d 100644 --- a/src/main/java/seedu/duke/storage/commons/LoadUtils.java +++ b/src/main/java/seedu/duke/storage/commons/LoadUtils.java @@ -81,12 +81,14 @@ public void load() throws LoadFileException { isAllEntryValid = false; } - int currentSem = parseInt(lineItems[SEMESTER_VALUE_POSITION]); - String currentModuleCode = lineItems[MODULE_CODE_POSITION]; - String currentModuleGrade = lineItems[MODULE_GRADE_POSITION]; - int currentModuleCredit = parseInt(lineItems[MODULE_CREDIT_POSITION]); - addUtils.addModuleToUser(currentModuleCode, currentSem, - currentModuleGrade, currentModuleCredit, FROM_LOAD); + if (isEntryValid) { + int currentSem = parseInt(lineItems[SEMESTER_VALUE_POSITION]); + String currentModuleCode = lineItems[MODULE_CODE_POSITION]; + String currentModuleGrade = lineItems[MODULE_GRADE_POSITION]; + int currentModuleCredit = parseInt(lineItems[MODULE_CREDIT_POSITION]); + addUtils.addModuleToUser(currentModuleCode, currentSem, + currentModuleGrade, currentModuleCredit, FROM_LOAD); + } } in.close(); printLoadDetails(isAllEntryValid, details[MODULE_LOADED]); From de2d2f8c3d31d88a3b265d83e068655656769161 Mon Sep 17 00:00:00 2001 From: vanessa-kang Date: Sat, 17 Oct 2020 21:21:47 +0800 Subject: [PATCH 144/450] Pull updated code from org master (as of 17/10/2020 9.20pm) --- docs/DeveloperGuide.md | 139 ++++++++++++++++-- docs/UserGuide.md | 62 +++++++- docs/images/DeveloperGuide/Architecture.png | Bin 0 -> 16974 bytes .../DeveloperGuide/Packages_Interaction.png | Bin 0 -> 182726 bytes .../DeveloperGuide/Project_structure.png | Bin 0 -> 26168 bytes docs/images/capcalc_current.png | Bin 6041 -> 10062 bytes docs/images/capcalc_set_su_module.png | Bin 0 -> 8602 bytes docs/images/capcalc_set_su_modules.png | Bin 0 -> 4216 bytes docs/images/capcalc_set_su_modules_output.png | Bin 0 -> 66337 bytes docs/images/capcalc_set_su_modules_prompt.png | Bin 0 -> 12779 bytes docs/images/capcalc_set_su_semester.png | Bin 0 -> 7660 bytes .../images/capcalc_set_su_semester_output.png | Bin 0 -> 104568 bytes src/main/java/seedu/duke/PlanNus.java | 66 ++------- .../academicplanner/AcademicPlannerApp.java | 6 +- .../AcademicPlannerParser.java | 27 ++-- .../commands/AddModuleCommand.java | 7 +- .../commands/EditModuleCommand.java | 4 +- .../commands/ModuleDetailsCommand.java | 4 +- .../commands/PrintCalenderCommand.java | 6 +- .../commands/PrintHelpCommand.java | 2 +- .../commands/RemoveModuleCommand.java | 7 +- .../commons/AcademicCalendarSorter.java | 4 +- .../academicplanner/commons/AddUtils.java | 4 +- .../academicplanner/commons/EditUtils.java | 4 +- .../commons/ModuleValidator.java | 2 +- .../academicplanner/commons/PrintUtils.java | 4 +- .../academicplanner/commons/RemoveUtils.java | 4 +- .../apps/capcalculator/CapCalculatorApp.java | 6 +- .../capcalculator/CapCalculatorParser.java | 6 +- .../duke/apps/capcalculator/SetSuParser.java | 7 +- .../commands/CurrentCommand.java | 4 +- .../commands/SetSuByModuleCommand.java | 6 +- .../commands/SetSuBySemesterCommand.java | 6 +- .../commands/SetTargetCommand.java | 6 +- .../commons/CalculatorUtils.java | 4 +- .../capcalculator/commons/SetSuUtils.java | 4 +- .../capcalculator/commons/SetTargetUtils.java | 4 +- .../duke/apps/moduleloader/ModuleLoader.java | 4 +- .../duke/{globalcommons => global}/App.java | 2 +- .../{globalcommons => global}/Command.java | 2 +- .../LoggingTool.java | 2 +- .../exceptions/AppParserException.java | 2 +- .../exceptions/CommandParserException.java | 2 +- .../duke/{ => global}/objects/FullModule.java | 2 +- .../{ => global}/objects/PartialModule.java | 2 +- .../duke/{ => global}/objects/Person.java | 2 +- .../java/seedu/duke/parser/AppParser.java | 6 +- src/main/java/seedu/duke/storage/Storage.java | 2 +- .../seedu/duke/storage/commons/LoadUtils.java | 2 +- .../seedu/duke/storage/commons/SaveUtils.java | 4 +- src/main/java/seedu/duke/ui/Ui.java | 36 +++++ .../seedu/duke/apps/ModuleLoaderTest.java | 2 +- .../commons/AcademicCalendarSorterTest.java | 50 +++++++ .../academicplanner/commons/AddUtilsTest.java | 4 +- .../commons/EditUtilsTest.java | 4 +- .../commons/RemoveUtilsTest.java | 4 +- .../CapCalculatorAppParserTest.java | 4 +- .../commands/CurrentCommandTest.java | 60 +++++++- 58 files changed, 431 insertions(+), 172 deletions(-) create mode 100644 docs/images/DeveloperGuide/Architecture.png create mode 100644 docs/images/DeveloperGuide/Packages_Interaction.png create mode 100644 docs/images/DeveloperGuide/Project_structure.png create mode 100644 docs/images/capcalc_set_su_module.png create mode 100644 docs/images/capcalc_set_su_modules.png create mode 100644 docs/images/capcalc_set_su_modules_output.png create mode 100644 docs/images/capcalc_set_su_modules_prompt.png create mode 100644 docs/images/capcalc_set_su_semester.png create mode 100644 docs/images/capcalc_set_su_semester_output.png rename src/main/java/seedu/duke/{globalcommons => global}/App.java (92%) rename src/main/java/seedu/duke/{globalcommons => global}/Command.java (92%) rename src/main/java/seedu/duke/{globalcommons => global}/LoggingTool.java (96%) rename src/main/java/seedu/duke/{ => global}/exceptions/AppParserException.java (90%) rename src/main/java/seedu/duke/{ => global}/exceptions/CommandParserException.java (90%) rename src/main/java/seedu/duke/{ => global}/objects/FullModule.java (98%) rename src/main/java/seedu/duke/{ => global}/objects/PartialModule.java (99%) rename src/main/java/seedu/duke/{ => global}/objects/Person.java (98%) create mode 100644 src/test/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorterTest.java diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 7b05b7dda3..f785bc7eab 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -20,41 +20,154 @@ The following are remaining steps to be taken to finish the set up: ### Architecture -{Exact diagram and corresponding descriptions to be added} +![Architecture](./images/DeveloperGuide/Architecture.png) -### UI component +The ***Architecture Diagram*** given above explains the high-level design of PlanNUS. Below is a quick overview of each component. -{Exact diagram and corresponding descriptions to be added} -### Logic component -{Exact diagram and corresponding descriptions to be added} +### Overview -### Model component +#### PlanNus -{Exact diagram and corresponding descriptions to be added} +`PlanNus` class contains the `main` and `run` method, which is responsible for -### Storage component + * At launch -{Exact diagram and corresponding descriptions to be added} + * Loading all modules for AY2020/21 into PlanNUS -### Common classes + * Loading previous save file into PlanNUS if available -{Exact diagram and corresponding descriptions to be added} + * Creation of entry point to available apps in PlanNUS + + * While running + + * Continuously prompt user for app selection + + * At shut down + + * Saving of user data into save file + * Clean up methods where necessary + + + +#### Global, Ui, Parser, Storage, Apps + +* The `global` package contains classes, exceptions and objects that are required across the whole app. +* The `ui` package contains the class that is responsible for sharing one `scanner` class across the whole app to prevent multiple IO streams +* The `parser` package contains the class that handles user's app selection +* The `storage` package handles loading and saving of user's data to a save file. +* Packages for Available apps such as Academic Planner and CAP Calculator are stored within `apps` package + + + +### Project Structure + +Each package in the PlanNUS as given above follows the following file structure where applicable: + +* A functional class that acts as the entry point to that module +* A parser class that parses user input into executable commands by PlanNUS + +* `commands`: A package that handles all executable commands given by parser +* `commons`: A package with the utilities and shared classes across the parent package +* `exceptions`: A package to handle all exceptions thrown across the parent package + +The interaction within each package should ideally be as shown below. + +![Project structure](./images/DeveloperGuide/Project_structure.png) + +*Note that while this is the ideal case, packages such as* `global`, `parser` *and* `ui` *might not strictly follow this structure due to these package serving a different function altogether (Refer to the sections below for more details.)* + +### Lifecycle of PlanNUS +The *sequence diagram* below shows how different packages and classes interact with each other throughout the whole lifecycle of PlanNUS. + +![Packages Interaction](./images/DeveloperGuide/Packages_Interaction.png) + +### Details + +#### Global Component + +Classes used by multiple components are in the `src.main.java.global` package. + +#### Storage Component + +**API** : `src.main.java.seedu.duke.storage` + +#### Parser Component ## Implementation -### Academic Calendar Planner features (i.e. add, remove, edit and view) +### Academic Calendar Planner : Add Module feature #### Proposed implementation {Exact diagram and corresponding descriptions to be added} +The proposed add module command is facilitated by `AcademicPlannerParser`. It allows users to add modules into their + `Academic Planner` by instantiating a new `PartialModule` object and adding it into the `userModuleList` + and `userModuleMap`. Both the list and hashmap are the _java API_, which are used by importing them. The `Person` object + is used to encapsulate both `userModuleList` and `userModuleMap`. + +Additionally, add module command extends the `Command` class and overrides its `execute()` command. An external class, + `ModuleValidator` is called upon to validate the various parameters that the user has entered, as to only allow + valid modules to be added to the user. + +Given below is an example usage scenario and how add module command behaves at each step. + +{DIAGRAM FOR STEP 1: INITIAL STATE} + +**Step 1** : The user calls the add module command from the `AcademicPlannerParser`, which will initialise a +`AddModuleCommand`. `AddModuleCommand`'s constructor takes in parameters of `ModuleLoader`, `Person`,`Scanner`, +and `String`. Below is a table of what each parameter corresponds to in the state diagram of the program. + +|Parameter|Corresponds to|Referred to as +|:---:|:---:|:---: +|`ModuleLoader`| Class representing all modules offered by NUS | `allModules` +|`Person`| Class representing current user's information | `currentPerson` +|`Scanner`| Class representing java's default scanner class | `in` +|`String` | Class representing the module code to be added | `moduleCode` + + {DIAGRAM FOR STEP 2: WITH FH AND LOGGER} + +**Step 2** : `execute()` is called from the instance of `AddModuleCommand`. It can throw `AcademicException` +or `IOException`. `FileHandler` and `Logger` classes from the _java API_ are instantiated to handle logging for the +remainder of the `execute()` method. + + +**Step 3** : `in` then reads in the next two lines of input, which is the user's input for the desired semester for the +`moduleCode` and `moduleCode`'s grades. + +**Step 4** : `validateInputs()` is called to validate the user entered data against `allModules`. + +{DIAGRAM FOR STEP 5: with addutils } + +**Step 5** : `AddUtils` is called upon to return module credit for `moduleCode` by `getModuleCreditForModule()`. + +**Step 6** : `AddUtils` is called upon again to add the module's data to the user, by instatiating a new +`PartialModule` and storing it in both `userModuleList` and `userModuleMap`. + +**Step 7** : `FileHandler` terminated. + +**Step 8** : `AddModuleCommand` is terminated. + +The following sequence diagram shows how the `AddModuleCommand` works: + +{Sequence Diagram} + +The following activity diagram summarizes what happens when the user executes an `AddModuleCommand` : + #### Design consideration -{Exact diagram and corresponding descriptions to be added} +The following were considered when implementing commands: + +* Option 1 (Current Choice): As a class by itself + * Pros: Increases modularity of code, higher overall code quality + * Cons: More complicated to implement +* Option 2: As a method in a class + * Pros: Easier to implement + * Cons: Class needs to be instantiated and increases coupling, reducing testability. ### CAP Calculator features (i.e. current and set target) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index aef55c198b..cd367e1e8c 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -140,10 +140,56 @@ Input format: `set target` __Caution:__ -* Maximum CAP should be smaller or equals to 5.00. +* CAP should be between 0.00 to 5.00 inclusive. * Minimum MC should be greater than 0. +#### Set S/U modules: `set su` +This is for the user to set modules that he or she wishes to S/U. + + + +As shown in the image, user can choose to S/U by either a _Semester_ or some selected _Modules_. (__Note:__ Enter either `1` or `2` instead of the component's name) + +##### Set S/U by semester: + +Expected output when user wishes to S/U by _Semester_. + + + +User will then be prompte to enter a specific semester that he or she wishes to S/U. + +Expected output when user entered valid _Semester_. + + + +__Caution:__ + +* Only modules that can be S/Ued are added into the S/U list. +* Modules with special grades are filtered out. + +##### Set S/U by modules: + +Expected output when user wishes to S/U by _Modules_. + + + +User will then be prompte to enter a specific number of modules to S/Ued. + +Expected output when user entered a valid number of modules. + + + +User will then be prompte to enter a serie of module codes to S/Ued. + +Expected output when user entered valid module codes. + + + +__Caution:__ + +* Duplicate modules are not allowed. +* Number of modules to be S/Ued should not be greater than number of modules taken by the user. ### Exiting from a feature or PlanNUS: `exit` @@ -151,15 +197,15 @@ This command directs user back to the main page of PlanNUS after they are done u When user exits from the Academic Planner, expected output is as shown below. - + When user exits from the CAP calculator, expected output will be as follows: - + Last but not least, the expected output for exiting PlanNUS will be as such: - + Input format: `exit` @@ -181,12 +227,12 @@ Note that the following commands are case-insensitive. | __Action__ | Command | | ------------------------------------------- | ---------------------- | -| Adding a module into the calendar | `add ` | -| Removing an existing module in the calendar | `remove ` | -| Editing an existing module in the calendar | `edit ` | +| Adding a module into the calendar | `add `​
e.g., `add CS1010, ADD cs1231 , ADD CS2040`| +| Removing an existing module in the calendar | `remove `​
e.g., `remove CS1010, REMOVE cs1231 , REMOVE CS2040`| +| Editing an existing module in the calendar | `edit `​
e.g., `edit CS1010, EDIT cs1231 , EDIT CS2040` | | Printing the academic calendar | `view` | | Printing help information | `help` | -| Exiting the Academic Planner | `exit` | +| Exiting the Academic Planner | `exit` | * Initiate the __CAP calculator__: `capCalc` diff --git a/docs/images/DeveloperGuide/Architecture.png b/docs/images/DeveloperGuide/Architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..56cbe86b718224bcbe03e6c98eddf6033c075a66 GIT binary patch literal 16974 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

+|NJK!F#skQ2norA4vV{DPWxIGq1uzHV~En3i@ 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 WL-f?74Af}n~T301Rd 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 literal 0 HcmV?d00001 diff --git a/docs/images/capcalc_set_su_modules_output.png b/docs/images/capcalc_set_su_modules_output.png new file mode 100644 index 0000000000000000000000000000000000000000..056e64d86689d489fbd718c9b03992b5eaf48a71 GIT binary patch literal 66337 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 HUC;jk6%qHY literal 0 HcmV?d00001 diff --git a/docs/images/capcalc_set_su_modules_prompt.png b/docs/images/capcalc_set_su_modules_prompt.png new file mode 100644 index 0000000000000000000000000000000000000000..57824ffd0379f0532b9ae26ff2940506ff27232c GIT binary patch literal 12779 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 literal 0 HcmV?d00001 diff --git a/docs/images/capcalc_set_su_semester.png b/docs/images/capcalc_set_su_semester.png new file mode 100644 index 0000000000000000000000000000000000000000..aa8a14f94f5707e3aa6907c92b890a501c545d25 GIT binary patch literal 7660 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 literal 0 HcmV?d00001 diff --git a/docs/images/capcalc_set_su_semester_output.png b/docs/images/capcalc_set_su_semester_output.png new file mode 100644 index 0000000000000000000000000000000000000000..52cb01c788ef98816e1b382ca33fd2556ea8fc8d GIT binary patch literal 104568 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 literal 0 HcmV?d00001 diff --git a/src/main/java/seedu/duke/PlanNus.java b/src/main/java/seedu/duke/PlanNus.java index b1ad68acaa..c41fc92a59 100644 --- a/src/main/java/seedu/duke/PlanNus.java +++ b/src/main/java/seedu/duke/PlanNus.java @@ -1,8 +1,8 @@ package seedu.duke; import seedu.duke.apps.moduleloader.ModuleLoader; -import seedu.duke.globalcommons.App; -import seedu.duke.objects.Person; +import seedu.duke.global.App; +import seedu.duke.global.objects.Person; import seedu.duke.parser.AppParser; import seedu.duke.storage.Storage; import seedu.duke.ui.Ui; @@ -11,18 +11,10 @@ * Class representing main function of PlanNUS. */ public class PlanNus { - private static final String WELCOME_MESSAGE = "Welcome to PlanNUS!"; - private static final String WELCOME_BACK_MESSAGE = "Welcome back to PlanNUS Main Menu!"; - private static final String AWAIT_COMMAND = "Type in a command to continue..."; - private static final String EXIT_MESSAGE = "Thanks for using PlanNUS! We hope to see you again!"; - private static final String HELP_MESSAGE = "\tFor academic planner, type \n" - + "\tFor CAP calculator, type \n" - + "\tTo exit PlanNUS, type "; - private Ui ui; private ModuleLoader allModules; private Person currentPerson; - private boolean isStartupSuccessfully; + private Storage storage; private boolean isExit; /** @@ -33,10 +25,10 @@ public PlanNus() { this.ui = new Ui(); this.allModules = new ModuleLoader(); this.currentPerson = new Person("Bob"); - this.isStartupSuccessfully = true; + this.storage = new Storage(allModules); isExit = false; } catch (Exception e) { - this.isStartupSuccessfully = false; + isExit = true; System.out.println(e.getMessage()); } } @@ -45,63 +37,29 @@ public PlanNus() { * Main entry function for PlanNUS. */ public void run() { - assert isStartupSuccessfully : "Startup is unsuccessful"; + assert isExit == true : "Startup is unsuccessful"; - showWelcomeMessage(); - Storage storage = initializeStorage(currentPerson); + ui.showWelcomeMessage(); + storage.loader(currentPerson); while (!isExit) { try { - System.out.println(AWAIT_COMMAND); + ui.showAwaitCommand(); String userInput = ui.getScanner().nextLine(); App selectedApp = AppParser.parse(userInput, allModules, currentPerson, ui); selectedApp.run(); isExit = selectedApp.getIsExit(); if (!isExit) { - showWelcomeBackMessage(); + ui.showWelcomeBackMessage(); } } catch (Exception e) { System.out.println(e.getMessage()); } } + ui.closeScanner(); storage.saver(currentPerson); - showExitMessage(); - } - - /** - * Initialises storage with the data of the currentPerson. - * - * @param currentPerson Person of data - * @return populated Storage - */ - private Storage initializeStorage(Person currentPerson) { - Storage storage = new Storage(allModules); - storage.loader(currentPerson); - return storage; - } - - /** - * Prints exit message for user just before termination of program. - */ - private void showExitMessage() { - System.out.println(EXIT_MESSAGE); - } - - /** - * Prints welcome back message for user when user returns back to main menu. - */ - private void showWelcomeBackMessage() { - System.out.println(WELCOME_BACK_MESSAGE); - System.out.println(HELP_MESSAGE); - } - - /** - * Prints welcome message for user upon first entry into PlanNUS. - */ - private void showWelcomeMessage() { - System.out.println(WELCOME_MESSAGE); - System.out.println(HELP_MESSAGE); + ui.showExitMessage(); } /** diff --git a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java index 13289788d7..2afc7008e3 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java +++ b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java @@ -1,9 +1,9 @@ package seedu.duke.apps.academicplanner; import seedu.duke.apps.moduleloader.ModuleLoader; -import seedu.duke.globalcommons.App; -import seedu.duke.globalcommons.Command; -import seedu.duke.objects.Person; +import seedu.duke.global.App; +import seedu.duke.global.Command; +import seedu.duke.global.objects.Person; import seedu.duke.ui.Ui; /** diff --git a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java index f6fb4a823d..54b8e23a05 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java +++ b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java @@ -8,9 +8,9 @@ import seedu.duke.apps.academicplanner.commands.PrintHelpCommand; import seedu.duke.apps.academicplanner.commands.RemoveModuleCommand; import seedu.duke.apps.moduleloader.ModuleLoader; -import seedu.duke.exceptions.CommandParserException; -import seedu.duke.globalcommons.Command; -import seedu.duke.objects.Person; +import seedu.duke.global.exceptions.CommandParserException; +import seedu.duke.global.Command; +import seedu.duke.global.objects.Person; import seedu.duke.ui.Ui; import java.util.Scanner; @@ -20,6 +20,7 @@ public class AcademicPlannerParser { private static final int COMMAND_INDEX = 0; private static final int MODULE_CODE_INDEX = 1; + private static final int CORRECT_COMMAND_LENGTH = 2; public static final String NEW_LINE = "\n"; private static final String EXITING_CURRENT_COMMAND = "Exiting current command back to Academic Planner Main Menu."; private static final String ERROR_INVALID_COMMAND = "INVALID COMMAND"; @@ -46,23 +47,21 @@ public static Command parse(String userInput, ModuleLoader allModules, Person cu String[] inputs = userInput.toUpperCase().split(" "); Scanner in = ui.getScanner(); - switch (inputs[COMMAND_INDEX]) { - case ADD_COMMAND: + if (inputs[COMMAND_INDEX].equals(ADD_COMMAND) && inputs.length == CORRECT_COMMAND_LENGTH) { return new AddModuleCommand(allModules, currentPerson, in, inputs[MODULE_CODE_INDEX]); - case EDIT_COMMAND: + } else if (inputs[COMMAND_INDEX].equals(EDIT_COMMAND) && inputs.length == CORRECT_COMMAND_LENGTH) { return new EditModuleCommand(allModules, currentPerson, in, inputs[MODULE_CODE_INDEX]); - case REMOVE_COMMAND: + } else if (inputs[COMMAND_INDEX].equals(REMOVE_COMMAND) && inputs.length == CORRECT_COMMAND_LENGTH) { return new RemoveModuleCommand(allModules, currentPerson, in, inputs[MODULE_CODE_INDEX]); - case VIEW_COMMAND: + } else if (inputs[COMMAND_INDEX].equals(VIEW_COMMAND)) { return new PrintCalenderCommand(currentPerson, in); - case EXIT_COMMAND: - return new Command(true); - case HELP_COMMAND: + } else if (inputs[COMMAND_INDEX].equals(HELP_COMMAND)) { return new PrintHelpCommand(); - case DETAILS_COMMAND: + } else if (inputs[COMMAND_INDEX].equals(DETAILS_COMMAND)) { return new ModuleDetailsCommand(allModules, inputs[MODULE_CODE_INDEX]); - - default: + } else if (inputs[COMMAND_INDEX].equals(EXIT_COMMAND)) { + return new Command(true); + } else { throw new CommandParserException(ERROR_INVALID_COMMAND + NEW_LINE + EXITING_CURRENT_COMMAND); } } diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java index 38fe325d28..be8dab3071 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java @@ -4,9 +4,10 @@ import seedu.duke.apps.academicplanner.commons.AddUtils; import seedu.duke.apps.academicplanner.commons.ModuleValidator; import seedu.duke.apps.academicplanner.exceptions.AcademicException; -import seedu.duke.globalcommons.Command; -import seedu.duke.globalcommons.LoggingTool; -import seedu.duke.objects.Person; +import seedu.duke.global.Command; +import seedu.duke.global.LoggingTool; +import seedu.duke.global.objects.FullModule; +import seedu.duke.global.objects.Person; import java.io.IOException; import java.util.Scanner; import java.util.logging.FileHandler; diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/EditModuleCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/EditModuleCommand.java index 6570ad87e5..0b2b541c61 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/EditModuleCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/EditModuleCommand.java @@ -4,8 +4,8 @@ import seedu.duke.apps.academicplanner.commons.EditUtils; import seedu.duke.apps.academicplanner.commons.ModuleValidator; import seedu.duke.apps.academicplanner.exceptions.AcademicException; -import seedu.duke.globalcommons.Command; -import seedu.duke.objects.Person; +import seedu.duke.global.Command; +import seedu.duke.global.objects.Person; import java.util.Scanner; /** diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/ModuleDetailsCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/ModuleDetailsCommand.java index eb3c2baffe..00c32eb708 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/ModuleDetailsCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/ModuleDetailsCommand.java @@ -4,8 +4,8 @@ import seedu.duke.apps.academicplanner.commons.PrintUtils; import seedu.duke.apps.academicplanner.exceptions.AcademicException; import seedu.duke.apps.moduleloader.ModuleLoader; -import seedu.duke.globalcommons.Command; -import seedu.duke.objects.FullModule; +import seedu.duke.global.Command; +import seedu.duke.global.objects.FullModule; public class ModuleDetailsCommand extends Command { diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java index b02a58e2e9..77d7faf3b7 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/PrintCalenderCommand.java @@ -4,9 +4,9 @@ import seedu.duke.apps.academicplanner.commons.ModuleValidator; import seedu.duke.apps.academicplanner.commons.PrintUtils; import seedu.duke.apps.academicplanner.exceptions.AcademicException; -import seedu.duke.globalcommons.Command; -import seedu.duke.objects.PartialModule; -import seedu.duke.objects.Person; +import seedu.duke.global.Command; +import seedu.duke.global.objects.PartialModule; +import seedu.duke.global.objects.Person; import java.util.ArrayList; import java.util.Comparator; import java.util.Scanner; diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/PrintHelpCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/PrintHelpCommand.java index 11c372409e..a340119727 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/PrintHelpCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/PrintHelpCommand.java @@ -1,6 +1,6 @@ package seedu.duke.apps.academicplanner.commands; -import seedu.duke.globalcommons.Command; +import seedu.duke.global.Command; /** * Class representing a print help command from the academic planner. diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java index 5c3ca56222..b15ac4a649 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/RemoveModuleCommand.java @@ -4,9 +4,8 @@ import seedu.duke.apps.academicplanner.commons.ModuleValidator; import seedu.duke.apps.academicplanner.commons.RemoveUtils; import seedu.duke.apps.academicplanner.exceptions.AcademicException; -import seedu.duke.globalcommons.Command; -import seedu.duke.objects.PartialModule; -import seedu.duke.objects.Person; +import seedu.duke.global.Command; +import seedu.duke.global.objects.Person; import java.util.HashMap; import java.util.Scanner; @@ -16,6 +15,7 @@ public class RemoveModuleCommand extends Command { private static final String ERROR_INVALID_COMMAND = "INVALID COMMAND"; private static final String ERROR_NOT_ADDED = "You have not added this module into your list yet"; + private static final String MODULE_REMOVED = "Module removed successfully."; private RemoveUtils removeUtils; private ModuleValidator moduleValidator; @@ -38,6 +38,7 @@ public void execute() throws AcademicException { try { if (moduleValidator.isModTakenByUser(moduleCode)) { removeUtils.removeModuleFromUserModuleList(moduleCode); + System.out.println(MODULE_REMOVED); } else { throw new AcademicException(ERROR_NOT_ADDED); } diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorter.java b/src/main/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorter.java index 393f6d8300..2aadcb6ee4 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorter.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorter.java @@ -1,6 +1,6 @@ package seedu.duke.apps.academicplanner.commons; -import seedu.duke.objects.PartialModule; +import seedu.duke.global.objects.PartialModule; import java.util.ArrayList; /** @@ -35,7 +35,7 @@ public ArrayList sortBySemester(int semesterIndex) { * @param semesterIndex semester to sort by * @return sortedList */ - private ArrayList processCalendar(int semesterIndex) { + public ArrayList processCalendar(int semesterIndex) { ArrayList sortedList = new ArrayList<>(); for (PartialModule m : userModuleList) { if (m.getSemesterIndex() == semesterIndex) { diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java index a1cf164898..ee333df308 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/AddUtils.java @@ -2,8 +2,8 @@ import seedu.duke.apps.moduleloader.ModuleLoader; import seedu.duke.apps.capcalculator.commons.CalculatorUtils; -import seedu.duke.objects.PartialModule; -import seedu.duke.objects.Person; +import seedu.duke.global.objects.PartialModule; +import seedu.duke.global.objects.Person; import java.util.ArrayList; import java.util.HashMap; diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java index ffe64dfa2a..3abf04036a 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/EditUtils.java @@ -3,8 +3,8 @@ import seedu.duke.apps.moduleloader.ModuleLoader; import seedu.duke.apps.capcalculator.commons.CalculatorUtils; import seedu.duke.apps.academicplanner.exceptions.AcademicException; -import seedu.duke.objects.PartialModule; -import seedu.duke.objects.Person; +import seedu.duke.global.objects.PartialModule; +import seedu.duke.global.objects.Person; import java.util.ArrayList; import java.util.HashMap; import java.util.Scanner; diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java b/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java index 756d6a6c8d..7c3a09b4ac 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/ModuleValidator.java @@ -1,7 +1,7 @@ package seedu.duke.apps.academicplanner.commons; import seedu.duke.apps.moduleloader.ModuleLoader; -import seedu.duke.objects.Person; +import seedu.duke.global.objects.Person; import java.util.HashMap; public class ModuleValidator { diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java index fe45ffc1e5..20f7cef4b8 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java @@ -1,7 +1,7 @@ package seedu.duke.apps.academicplanner.commons; -import seedu.duke.objects.FullModule; -import seedu.duke.objects.PartialModule; +import seedu.duke.global.objects.PartialModule; +import seedu.duke.global.objects.FullModule; import java.util.ArrayList; /** diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java index 2dc932ba8c..13989879f7 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java @@ -1,8 +1,8 @@ package seedu.duke.apps.academicplanner.commons; import seedu.duke.apps.capcalculator.commons.CalculatorUtils; -import seedu.duke.objects.PartialModule; -import seedu.duke.objects.Person; +import seedu.duke.global.objects.PartialModule; +import seedu.duke.global.objects.Person; import java.util.ArrayList; import java.util.Map; diff --git a/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorApp.java b/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorApp.java index d8ddb70513..716ca4c0c0 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorApp.java +++ b/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorApp.java @@ -1,8 +1,8 @@ package seedu.duke.apps.capcalculator; -import seedu.duke.globalcommons.App; -import seedu.duke.globalcommons.Command; -import seedu.duke.objects.Person; +import seedu.duke.global.App; +import seedu.duke.global.Command; +import seedu.duke.global.objects.Person; import seedu.duke.ui.Ui; import java.math.RoundingMode; import java.text.DecimalFormat; diff --git a/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorParser.java b/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorParser.java index e61523e282..0beef12b2c 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorParser.java +++ b/src/main/java/seedu/duke/apps/capcalculator/CapCalculatorParser.java @@ -2,9 +2,9 @@ import seedu.duke.apps.capcalculator.commands.CurrentCommand; import seedu.duke.apps.capcalculator.commands.SetTargetCommand; -import seedu.duke.exceptions.CommandParserException; -import seedu.duke.globalcommons.Command; -import seedu.duke.objects.Person; +import seedu.duke.global.exceptions.CommandParserException; +import seedu.duke.global.Command; +import seedu.duke.global.objects.Person; import seedu.duke.ui.Ui; import java.util.Scanner; diff --git a/src/main/java/seedu/duke/apps/capcalculator/SetSuParser.java b/src/main/java/seedu/duke/apps/capcalculator/SetSuParser.java index bad0c72062..c80ffb19b4 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/SetSuParser.java +++ b/src/main/java/seedu/duke/apps/capcalculator/SetSuParser.java @@ -2,10 +2,9 @@ import seedu.duke.apps.capcalculator.commands.SetSuByModuleCommand; import seedu.duke.apps.capcalculator.commands.SetSuBySemesterCommand; -import seedu.duke.exceptions.CommandParserException; -import seedu.duke.globalcommons.Command; -import seedu.duke.objects.Person; -import seedu.duke.ui.Ui; +import seedu.duke.global.exceptions.CommandParserException; +import seedu.duke.global.Command; +import seedu.duke.global.objects.Person; import java.util.Scanner; diff --git a/src/main/java/seedu/duke/apps/capcalculator/commands/CurrentCommand.java b/src/main/java/seedu/duke/apps/capcalculator/commands/CurrentCommand.java index 042e39ed59..9f0aa7acba 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commands/CurrentCommand.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commands/CurrentCommand.java @@ -1,7 +1,7 @@ package seedu.duke.apps.capcalculator.commands; -import seedu.duke.globalcommons.Command; -import seedu.duke.objects.Person; +import seedu.duke.global.Command; +import seedu.duke.global.objects.Person; import static seedu.duke.apps.capcalculator.commons.CalculatorUtils.formatCapToString; /** diff --git a/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuByModuleCommand.java b/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuByModuleCommand.java index 62e196cea4..68e775dc49 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuByModuleCommand.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuByModuleCommand.java @@ -2,9 +2,9 @@ import seedu.duke.apps.capcalculator.commons.SetSuUtils; import seedu.duke.apps.capcalculator.exceptions.CapCalculatorException; -import seedu.duke.globalcommons.Command; -import seedu.duke.objects.PartialModule; -import seedu.duke.objects.Person; +import seedu.duke.global.Command; +import seedu.duke.global.objects.PartialModule; +import seedu.duke.global.objects.Person; import java.util.ArrayList; import java.util.Scanner; diff --git a/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuBySemesterCommand.java b/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuBySemesterCommand.java index 104d60671d..e42c2f2861 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuBySemesterCommand.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuBySemesterCommand.java @@ -2,9 +2,9 @@ import seedu.duke.apps.capcalculator.commons.SetSuUtils; import seedu.duke.apps.capcalculator.exceptions.CapCalculatorException; -import seedu.duke.globalcommons.Command; -import seedu.duke.objects.PartialModule; -import seedu.duke.objects.Person; +import seedu.duke.global.Command; +import seedu.duke.global.objects.PartialModule; +import seedu.duke.global.objects.Person; import java.util.ArrayList; import java.util.Scanner; diff --git a/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java b/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java index 78815dabec..e5d7c784a7 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java @@ -2,9 +2,9 @@ import seedu.duke.apps.capcalculator.exceptions.InvalidCapException; import seedu.duke.apps.capcalculator.exceptions.InvalidCreditException; -import seedu.duke.globalcommons.Command; -import seedu.duke.globalcommons.LoggingTool; -import seedu.duke.objects.Person; +import seedu.duke.global.Command; +import seedu.duke.global.LoggingTool; +import seedu.duke.global.objects.Person; import seedu.duke.ui.Ui; import seedu.duke.apps.capcalculator.commons.SetTargetUtils; diff --git a/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java b/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java index 12a932e848..23a0d78a74 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java @@ -1,7 +1,7 @@ package seedu.duke.apps.capcalculator.commons; -import seedu.duke.objects.PartialModule; -import seedu.duke.objects.Person; +import seedu.duke.global.objects.PartialModule; +import seedu.duke.global.objects.Person; import java.text.DecimalFormat; /** diff --git a/src/main/java/seedu/duke/apps/capcalculator/commons/SetSuUtils.java b/src/main/java/seedu/duke/apps/capcalculator/commons/SetSuUtils.java index 1d68794708..3184f0d758 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commons/SetSuUtils.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commons/SetSuUtils.java @@ -1,8 +1,8 @@ package seedu.duke.apps.capcalculator.commons; import seedu.duke.apps.capcalculator.exceptions.CapCalculatorException; -import seedu.duke.objects.PartialModule; -import seedu.duke.objects.Person; +import seedu.duke.global.objects.PartialModule; +import seedu.duke.global.objects.Person; import java.util.ArrayList; import java.util.Comparator; diff --git a/src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java b/src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java index bc19329f83..89a8bacb86 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commons/SetTargetUtils.java @@ -2,7 +2,7 @@ import seedu.duke.apps.capcalculator.exceptions.InvalidCapException; import seedu.duke.apps.capcalculator.exceptions.InvalidCreditException; -import seedu.duke.objects.Person; +import seedu.duke.global.objects.Person; import java.util.Scanner; @@ -61,7 +61,7 @@ public int getTargetGradedMC() throws InvalidCreditException { * @return boolean whether Cap is valid */ private boolean isValidCap(double cap) { - return cap > MAXIMUM_CAP && cap <= 0; + return cap < MAXIMUM_CAP && cap <= 0; } /** diff --git a/src/main/java/seedu/duke/apps/moduleloader/ModuleLoader.java b/src/main/java/seedu/duke/apps/moduleloader/ModuleLoader.java index c2c6cec1f0..a012aec72d 100644 --- a/src/main/java/seedu/duke/apps/moduleloader/ModuleLoader.java +++ b/src/main/java/seedu/duke/apps/moduleloader/ModuleLoader.java @@ -2,8 +2,8 @@ import com.google.gson.Gson; import seedu.duke.apps.moduleloader.exceptions.ModuleLoaderException; -import seedu.duke.globalcommons.LoggingTool; -import seedu.duke.objects.FullModule; +import seedu.duke.global.LoggingTool; +import seedu.duke.global.objects.FullModule; import java.io.IOException; import java.io.InputStream; diff --git a/src/main/java/seedu/duke/globalcommons/App.java b/src/main/java/seedu/duke/global/App.java similarity index 92% rename from src/main/java/seedu/duke/globalcommons/App.java rename to src/main/java/seedu/duke/global/App.java index 7d27bafb1e..8ebc0f344d 100644 --- a/src/main/java/seedu/duke/globalcommons/App.java +++ b/src/main/java/seedu/duke/global/App.java @@ -1,4 +1,4 @@ -package seedu.duke.globalcommons; +package seedu.duke.global; /** * Class representing an application in PlanNUS. diff --git a/src/main/java/seedu/duke/globalcommons/Command.java b/src/main/java/seedu/duke/global/Command.java similarity index 92% rename from src/main/java/seedu/duke/globalcommons/Command.java rename to src/main/java/seedu/duke/global/Command.java index d2ebc7c6b8..a821024d7b 100644 --- a/src/main/java/seedu/duke/globalcommons/Command.java +++ b/src/main/java/seedu/duke/global/Command.java @@ -1,4 +1,4 @@ -package seedu.duke.globalcommons; +package seedu.duke.global; /** * Class representing a command in PlanNUS. diff --git a/src/main/java/seedu/duke/globalcommons/LoggingTool.java b/src/main/java/seedu/duke/global/LoggingTool.java similarity index 96% rename from src/main/java/seedu/duke/globalcommons/LoggingTool.java rename to src/main/java/seedu/duke/global/LoggingTool.java index 9d0ffc4a11..d4ae14b0a5 100644 --- a/src/main/java/seedu/duke/globalcommons/LoggingTool.java +++ b/src/main/java/seedu/duke/global/LoggingTool.java @@ -1,4 +1,4 @@ -package seedu.duke.globalcommons; +package seedu.duke.global; import java.io.IOException; import java.util.logging.FileHandler; diff --git a/src/main/java/seedu/duke/exceptions/AppParserException.java b/src/main/java/seedu/duke/global/exceptions/AppParserException.java similarity index 90% rename from src/main/java/seedu/duke/exceptions/AppParserException.java rename to src/main/java/seedu/duke/global/exceptions/AppParserException.java index bdc56f5cfc..11f63e7db2 100644 --- a/src/main/java/seedu/duke/exceptions/AppParserException.java +++ b/src/main/java/seedu/duke/global/exceptions/AppParserException.java @@ -1,4 +1,4 @@ -package seedu.duke.exceptions; +package seedu.duke.global.exceptions; /** * Signals that an invalid command has been given in the App parser. diff --git a/src/main/java/seedu/duke/exceptions/CommandParserException.java b/src/main/java/seedu/duke/global/exceptions/CommandParserException.java similarity index 90% rename from src/main/java/seedu/duke/exceptions/CommandParserException.java rename to src/main/java/seedu/duke/global/exceptions/CommandParserException.java index dcbd223b39..1e3ced952f 100644 --- a/src/main/java/seedu/duke/exceptions/CommandParserException.java +++ b/src/main/java/seedu/duke/global/exceptions/CommandParserException.java @@ -1,4 +1,4 @@ -package seedu.duke.exceptions; +package seedu.duke.global.exceptions; /** * Signals that an invalid command has been given in the main command parser. diff --git a/src/main/java/seedu/duke/objects/FullModule.java b/src/main/java/seedu/duke/global/objects/FullModule.java similarity index 98% rename from src/main/java/seedu/duke/objects/FullModule.java rename to src/main/java/seedu/duke/global/objects/FullModule.java index c7ba248c30..eeb5253601 100644 --- a/src/main/java/seedu/duke/objects/FullModule.java +++ b/src/main/java/seedu/duke/global/objects/FullModule.java @@ -1,4 +1,4 @@ -package seedu.duke.objects; +package seedu.duke.global.objects; import java.util.ArrayList; import java.util.HashMap; diff --git a/src/main/java/seedu/duke/objects/PartialModule.java b/src/main/java/seedu/duke/global/objects/PartialModule.java similarity index 99% rename from src/main/java/seedu/duke/objects/PartialModule.java rename to src/main/java/seedu/duke/global/objects/PartialModule.java index c32c86c813..df436c59b0 100644 --- a/src/main/java/seedu/duke/objects/PartialModule.java +++ b/src/main/java/seedu/duke/global/objects/PartialModule.java @@ -1,4 +1,4 @@ -package seedu.duke.objects; +package seedu.duke.global.objects; import org.apache.commons.lang3.builder.ToStringBuilder; diff --git a/src/main/java/seedu/duke/objects/Person.java b/src/main/java/seedu/duke/global/objects/Person.java similarity index 98% rename from src/main/java/seedu/duke/objects/Person.java rename to src/main/java/seedu/duke/global/objects/Person.java index 4c44c1500b..2414486cd9 100644 --- a/src/main/java/seedu/duke/objects/Person.java +++ b/src/main/java/seedu/duke/global/objects/Person.java @@ -1,4 +1,4 @@ -package seedu.duke.objects; +package seedu.duke.global.objects; import java.util.ArrayList; import java.util.HashMap; diff --git a/src/main/java/seedu/duke/parser/AppParser.java b/src/main/java/seedu/duke/parser/AppParser.java index 0adf8d904c..d9c48ccadc 100644 --- a/src/main/java/seedu/duke/parser/AppParser.java +++ b/src/main/java/seedu/duke/parser/AppParser.java @@ -3,9 +3,9 @@ import seedu.duke.apps.academicplanner.AcademicPlannerApp; import seedu.duke.apps.capcalculator.CapCalculatorApp; import seedu.duke.apps.moduleloader.ModuleLoader; -import seedu.duke.exceptions.AppParserException; -import seedu.duke.globalcommons.App; -import seedu.duke.objects.Person; +import seedu.duke.global.exceptions.AppParserException; +import seedu.duke.global.App; +import seedu.duke.global.objects.Person; import seedu.duke.ui.Ui; /** diff --git a/src/main/java/seedu/duke/storage/Storage.java b/src/main/java/seedu/duke/storage/Storage.java index 8424e1eb13..ed99cd2906 100644 --- a/src/main/java/seedu/duke/storage/Storage.java +++ b/src/main/java/seedu/duke/storage/Storage.java @@ -1,7 +1,7 @@ package seedu.duke.storage; import seedu.duke.apps.moduleloader.ModuleLoader; -import seedu.duke.objects.Person; +import seedu.duke.global.objects.Person; import seedu.duke.storage.commons.LoadUtils; import seedu.duke.storage.commons.SaveUtils; import seedu.duke.storage.exceptions.LoadFileException; diff --git a/src/main/java/seedu/duke/storage/commons/LoadUtils.java b/src/main/java/seedu/duke/storage/commons/LoadUtils.java index c5a4fc1293..0e616855cb 100644 --- a/src/main/java/seedu/duke/storage/commons/LoadUtils.java +++ b/src/main/java/seedu/duke/storage/commons/LoadUtils.java @@ -3,7 +3,7 @@ import seedu.duke.apps.academicplanner.commons.AddUtils; import seedu.duke.apps.academicplanner.commons.ModuleValidator; import seedu.duke.apps.moduleloader.ModuleLoader; -import seedu.duke.objects.Person; +import seedu.duke.global.objects.Person; import seedu.duke.storage.exceptions.CorruptedSaveFileException; import seedu.duke.storage.exceptions.LoadFileException; diff --git a/src/main/java/seedu/duke/storage/commons/SaveUtils.java b/src/main/java/seedu/duke/storage/commons/SaveUtils.java index 32024fdc0a..aeb84b12db 100644 --- a/src/main/java/seedu/duke/storage/commons/SaveUtils.java +++ b/src/main/java/seedu/duke/storage/commons/SaveUtils.java @@ -1,7 +1,7 @@ package seedu.duke.storage.commons; -import seedu.duke.objects.PartialModule; -import seedu.duke.objects.Person; +import seedu.duke.global.objects.PartialModule; +import seedu.duke.global.objects.Person; import seedu.duke.storage.exceptions.SaveFileException; import java.io.FileWriter; diff --git a/src/main/java/seedu/duke/ui/Ui.java b/src/main/java/seedu/duke/ui/Ui.java index c692721314..ac64dbf238 100644 --- a/src/main/java/seedu/duke/ui/Ui.java +++ b/src/main/java/seedu/duke/ui/Ui.java @@ -6,6 +6,14 @@ * Class representing the ui for PlanNUS. */ public class Ui { + private static final String WELCOME_MESSAGE = "Welcome to PlanNUS!"; + private static final String WELCOME_BACK_MESSAGE = "Welcome back to PlanNUS Main Menu!"; + private static final String AWAIT_COMMAND = "Type in a command to continue..."; + private static final String EXIT_MESSAGE = "Thanks for using PlanNUS! We hope to see you again!"; + private static final String HELP_MESSAGE = "\tFor academic planner, type \n" + + "\tFor CAP calculator, type \n" + + "\tTo exit PlanNUS, type "; + private Scanner scanner; public Ui() { @@ -19,4 +27,32 @@ public Scanner getScanner() { public void closeScanner() { this.scanner.close(); } + + /** + * Prints exit message for user just before termination of program. + */ + public void showExitMessage() { + System.out.println(EXIT_MESSAGE); + } + + /** + * Prints welcome back message for user when user returns back to main menu. + */ + public void showWelcomeBackMessage() { + System.out.println(WELCOME_BACK_MESSAGE); + System.out.println(HELP_MESSAGE); + } + + /** + * Prints welcome message for user upon first entry into PlanNUS. + */ + public void showWelcomeMessage() { + System.out.println(WELCOME_MESSAGE); + System.out.println(HELP_MESSAGE); + } + + public void showAwaitCommand() { + System.out.println(AWAIT_COMMAND); + } + } diff --git a/src/test/java/seedu/duke/apps/ModuleLoaderTest.java b/src/test/java/seedu/duke/apps/ModuleLoaderTest.java index 94f6561332..1c7b262eba 100644 --- a/src/test/java/seedu/duke/apps/ModuleLoaderTest.java +++ b/src/test/java/seedu/duke/apps/ModuleLoaderTest.java @@ -4,7 +4,7 @@ import org.junit.jupiter.api.Test; import seedu.duke.apps.moduleloader.ModuleLoader; import seedu.duke.apps.moduleloader.exceptions.ModuleLoaderException; -import seedu.duke.objects.FullModule; +import seedu.duke.global.objects.FullModule; import java.util.Map; diff --git a/src/test/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorterTest.java b/src/test/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorterTest.java new file mode 100644 index 0000000000..530cbe1634 --- /dev/null +++ b/src/test/java/seedu/duke/apps/academicplanner/commons/AcademicCalendarSorterTest.java @@ -0,0 +1,50 @@ +package seedu.duke.apps.academicplanner.commons; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import seedu.duke.apps.moduleloader.ModuleLoader; +import seedu.duke.apps.moduleloader.exceptions.ModuleLoaderException; +import seedu.duke.global.objects.PartialModule; +import seedu.duke.global.objects.Person; +import java.util.ArrayList; +import static org.junit.jupiter.api.Assertions.assertEquals; + +class AcademicCalendarSorterTest { + + Person currentPerson; + AddUtils addUtils; + ModuleLoader allModules; + AcademicCalendarSorter sorter; + + @BeforeEach + void setup() { + try { + currentPerson = new Person("Bobby"); + allModules = new ModuleLoader(); + addUtils = new AddUtils(allModules,currentPerson); + } catch (ModuleLoaderException e) { + e.printStackTrace(); + } + } + + @Test + void processCalendar_mixedList_success() { + addUtils.addModuleToUser("CS1010",1,"A-",4); + addUtils.addModuleToUser("CS1231",1,"B",4); + addUtils.addModuleToUser("CG1111",1,"B+",6); + addUtils.addModuleToUser("MA1511",1,"S",4); + addUtils.addModuleToUser("MA1512",1,"S",4); + + addUtils.addModuleToUser("CS2040C",2,"A-",4); + addUtils.addModuleToUser("CG1112",2,"B",4); + addUtils.addModuleToUser("MA1508E",2,"S",4); + + sorter = new AcademicCalendarSorter(currentPerson.getModulesList()); + + ArrayList testList = sorter.processCalendar(1); + assertEquals(testList.size(),5); + testList = sorter.processCalendar(2); + assertEquals(testList.size(),3); + } + +} diff --git a/src/test/java/seedu/duke/apps/academicplanner/commons/AddUtilsTest.java b/src/test/java/seedu/duke/apps/academicplanner/commons/AddUtilsTest.java index 6dc8efc706..bc80473e5a 100644 --- a/src/test/java/seedu/duke/apps/academicplanner/commons/AddUtilsTest.java +++ b/src/test/java/seedu/duke/apps/academicplanner/commons/AddUtilsTest.java @@ -4,8 +4,8 @@ import org.junit.jupiter.api.Test; import seedu.duke.apps.moduleloader.ModuleLoader; import seedu.duke.apps.moduleloader.exceptions.ModuleLoaderException; -import seedu.duke.objects.PartialModule; -import seedu.duke.objects.Person; +import seedu.duke.global.objects.PartialModule; +import seedu.duke.global.objects.Person; import java.util.ArrayList; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; diff --git a/src/test/java/seedu/duke/apps/academicplanner/commons/EditUtilsTest.java b/src/test/java/seedu/duke/apps/academicplanner/commons/EditUtilsTest.java index 0a2e70a8e8..5ffd31d258 100644 --- a/src/test/java/seedu/duke/apps/academicplanner/commons/EditUtilsTest.java +++ b/src/test/java/seedu/duke/apps/academicplanner/commons/EditUtilsTest.java @@ -4,8 +4,8 @@ import org.junit.jupiter.api.Test; import seedu.duke.apps.moduleloader.ModuleLoader; import seedu.duke.apps.moduleloader.exceptions.ModuleLoaderException; -import seedu.duke.objects.PartialModule; -import seedu.duke.objects.Person; +import seedu.duke.global.objects.PartialModule; +import seedu.duke.global.objects.Person; import java.util.ArrayList; diff --git a/src/test/java/seedu/duke/apps/academicplanner/commons/RemoveUtilsTest.java b/src/test/java/seedu/duke/apps/academicplanner/commons/RemoveUtilsTest.java index 711ecc81cd..651a4d12cc 100644 --- a/src/test/java/seedu/duke/apps/academicplanner/commons/RemoveUtilsTest.java +++ b/src/test/java/seedu/duke/apps/academicplanner/commons/RemoveUtilsTest.java @@ -4,8 +4,8 @@ import org.junit.jupiter.api.Test; import seedu.duke.apps.moduleloader.ModuleLoader; import seedu.duke.apps.moduleloader.exceptions.ModuleLoaderException; -import seedu.duke.objects.PartialModule; -import seedu.duke.objects.Person; +import seedu.duke.global.objects.PartialModule; +import seedu.duke.global.objects.Person; import java.util.ArrayList; diff --git a/src/test/java/seedu/duke/apps/capcalculator/CapCalculatorAppParserTest.java b/src/test/java/seedu/duke/apps/capcalculator/CapCalculatorAppParserTest.java index b52fd445ad..9199e3a071 100644 --- a/src/test/java/seedu/duke/apps/capcalculator/CapCalculatorAppParserTest.java +++ b/src/test/java/seedu/duke/apps/capcalculator/CapCalculatorAppParserTest.java @@ -4,8 +4,8 @@ import org.junit.jupiter.api.Test; import seedu.duke.apps.capcalculator.commands.CurrentCommand; import seedu.duke.apps.capcalculator.commands.SetTargetCommand; -import seedu.duke.globalcommons.Command; -import seedu.duke.objects.Person; +import seedu.duke.global.Command; +import seedu.duke.global.objects.Person; import seedu.duke.ui.Ui; import static org.junit.jupiter.api.Assertions.assertTrue; diff --git a/src/test/java/seedu/duke/apps/capcalculator/commands/CurrentCommandTest.java b/src/test/java/seedu/duke/apps/capcalculator/commands/CurrentCommandTest.java index ab973eb4ea..ec3cd04a33 100644 --- a/src/test/java/seedu/duke/apps/capcalculator/commands/CurrentCommandTest.java +++ b/src/test/java/seedu/duke/apps/capcalculator/commands/CurrentCommandTest.java @@ -3,22 +3,26 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import seedu.duke.apps.academicplanner.commons.AddUtils; +import seedu.duke.apps.academicplanner.commons.RemoveUtils; import seedu.duke.apps.moduleloader.ModuleLoader; import seedu.duke.apps.moduleloader.exceptions.ModuleLoaderException; -import seedu.duke.objects.Person; +import seedu.duke.global.objects.Person; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; class CurrentCommandTest { Person currentPerson; ModuleLoader allModules; AddUtils addUtils; + RemoveUtils removeUtils; @BeforeEach void setup() throws ModuleLoaderException { currentPerson = new Person("Bob"); allModules = new ModuleLoader(); addUtils = new AddUtils(allModules,currentPerson); + removeUtils = new RemoveUtils(currentPerson); } @Test @@ -34,4 +38,56 @@ void execute_populatedList_result() { assertEquals(currentCap,4.0); } -} \ No newline at end of file + @Test + void execute_populatedListAllSU_fail() { + addUtils.addModuleToUser("CS1010",1,"S",4); + addUtils.addModuleToUser("CS1231",1,"S",4); + addUtils.addModuleToUser("CG1111",1,"S",6); + addUtils.addModuleToUser("MA1511",1,"S",4); + addUtils.addModuleToUser("MA1512",1,"S",4); + + CurrentCommand currentCommand = new CurrentCommand(currentPerson); + double currentCap = currentCommand.getCurrentCap(); + boolean isNan = Double.isNaN(currentCap); + assertTrue(isNan); + } + + @Test + void execute_emptyList_fail() { + CurrentCommand currentCommand = new CurrentCommand(currentPerson); + double currentCap = currentCommand.getCurrentCap(); + boolean isNan = Double.isNaN(currentCap); + assertTrue(isNan); + } + + @Test + void execute_addOneRemoveOne_fail() { + addUtils.addModuleToUser("CS1010",1,"S",4); + removeUtils.removeModuleFromUserModuleList("CS1010"); + CurrentCommand currentCommand = new CurrentCommand(currentPerson); + double currentCap = currentCommand.getCurrentCap(); + boolean isNan = Double.isNaN(currentCap); + assertTrue(isNan); + } + + @Test + void execute_addTwoRemoveOne_result() { + addUtils.addModuleToUser("CS1010",1,"S",4); + addUtils.addModuleToUser("CS2040",1,"A",4); + removeUtils.removeModuleFromUserModuleList("CS1010"); + CurrentCommand currentCommand = new CurrentCommand(currentPerson); + double currentCap = currentCommand.getCurrentCap(); + assertEquals(currentCap,5.0); + } + + @Test + void execute_addTwoRemoveOne_fail() { + addUtils.addModuleToUser("CS1010",1,"A",4); + addUtils.addModuleToUser("CS2040",1,"S",4); + removeUtils.removeModuleFromUserModuleList("CS1010"); + CurrentCommand currentCommand = new CurrentCommand(currentPerson); + double currentCap = currentCommand.getCurrentCap(); + boolean isNan = Double.isNaN(currentCap); + assertTrue(isNan); + } +} From 30a0cfddce08db2100720b54742015c53fa96b17 Mon Sep 17 00:00:00 2001 From: Khenus Date: Sat, 17 Oct 2020 21:24:35 +0800 Subject: [PATCH 145/450] V1.3 Bug fix for remove module from list --- .../seedu/duke/apps/academicplanner/commons/RemoveUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java index 193b7cd512..c2ac6a0f17 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java @@ -59,7 +59,7 @@ private void depopulate(PartialModule module) { modulesList.remove(module); HashMap newModuleAddedMap = new HashMap<>(); - for(int i = 0; i < modulesList.size(); i++) { + for (int i = 0; i < modulesList.size(); i++) { newModuleAddedMap.put(modulesList.get(i).getModuleCode(), i); } From c4470777cd58c93e2f4bafb233824826659bd3e2 Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Sat, 17 Oct 2020 22:42:54 +0800 Subject: [PATCH 146/450] Refactor remove utils --- .../duke/apps/academicplanner/commons/RemoveUtils.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java index c2ac6a0f17..eee593a379 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java @@ -4,10 +4,8 @@ import seedu.duke.global.objects.PartialModule; import seedu.duke.global.objects.Person; import java.util.ArrayList; -import java.util.Collection; import java.util.HashMap; import java.util.Map; -import java.util.Set; /** * Class representing remove module utilities from the remove module command. @@ -57,12 +55,17 @@ public void removeModuleFromUserModuleList(String moduleCode) { */ private void depopulate(PartialModule module) { modulesList.remove(module); + updateHashmap(); + } + /** + * Updates hashmap with the new module list. + */ + private void updateHashmap() { HashMap newModuleAddedMap = new HashMap<>(); for (int i = 0; i < modulesList.size(); i++) { newModuleAddedMap.put(modulesList.get(i).getModuleCode(), i); } - currentPerson.setModulesAddedMap(newModuleAddedMap); } } From 6111059b3fb1e9522b690c5f826ddfa33f30f8f7 Mon Sep 17 00:00:00 2001 From: harryleecp Date: Sat, 17 Oct 2020 22:50:48 +0800 Subject: [PATCH 147/450] Amended the UG with save and load feature --- docs/UserGuide.md | 17 +++++++++++++++++ docs/images/file_not_found.png | Bin 0 -> 3791 bytes docs/images/module_loaded.png | Bin 0 -> 1766 bytes 3 files changed, 17 insertions(+) create mode 100644 docs/images/file_not_found.png create mode 100644 docs/images/module_loaded.png diff --git a/docs/UserGuide.md b/docs/UserGuide.md index cd367e1e8c..c7084e5c89 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -210,6 +210,23 @@ Last but not least, the expected output for exiting PlanNUS will be as such: Input format: `exit` + +## Loading and Saving + +Upon running PlanNUS in command prompt, the program automatically looks for a text file with the name _PlanNUS.txt_ within the same folder as _PlanNUS.jar_. + +If the text file cannot be found, then the output will be as shown at the main page of PlanNUS after the list of commands. + + + +All the modules selected will be saved into _PlanNUS.txt_ after the user exits from the program. The next time when user runs the program again, it will load the configurations that were saved previously which will generate the below output. + + + +Note that the image above is just an example because it depends on the number of modules saved in the text file. + + + ## FAQ Question Type|Question|Answer diff --git a/docs/images/file_not_found.png b/docs/images/file_not_found.png new file mode 100644 index 0000000000000000000000000000000000000000..17fdcf231b8c37d07173d7e9858642b21f70dbac GIT binary patch literal 3791 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 IM6N<$g2wS$6951J literal 0 HcmV?d00001 From 6a169ba8998329676ce1d089d2ddbcc37deba41b Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Sat, 17 Oct 2020 23:07:09 +0800 Subject: [PATCH 148/450] Update developer guide with user stories --- docs/DeveloperGuide.md | 25 ++++++++----------- .../AcademicPlannerParser.java | 7 ++++++ 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 7751f04a3c..31871a2942 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -111,7 +111,7 @@ Classes used by multiple components are in the `src.main.java.global` package. {Exact diagram and corresponding descriptions to be added} -The proposed add module command is facilitated by `AcademicPlannerParser`. It allows users to add modules into their +Add module command is executed by `AcademicPlannerParser`. It allows users to add modules into their `Academic Planner` by instantiating a new `PartialModule` object and adding it into the `userModuleList` and `userModuleMap`. Both the list and hashmap are the _java API_, which are used by importing them. The `Person` object is used to encapsulate both `userModuleList` and `userModuleMap`. @@ -151,12 +151,10 @@ remainder of the `execute()` method. **Step 5** : `AddUtils` is called upon to return module credit for `moduleCode` by `getModuleCreditForModule()`. -**Step 6** : `AddUtils` is called upon again to add the module's data to the user, by instatiating a new -`PartialModule` and storing it in both `userModuleList` and `userModuleMap`. +**Step 6** : `AddUtils` is called upon again to add the module's data to the user, by instantiating a new +`PartialModule` and storing it in both `userModuleList` and `userModuleMap` via `Person`. -**Step 7** : `FileHandler` terminated. - -**Step 8** : `AddModuleCommand` is terminated. +**Step 7** : `FileHandler` and `AddModuleCommand` terminated. The following sequence diagram shows how the `AddModuleCommand` works: @@ -164,9 +162,11 @@ The following sequence diagram shows how the `AddModuleCommand` works: The following activity diagram summarizes what happens when the user executes an `AddModuleCommand` : +{Activity Diagram} + #### Design consideration -The following were considered when implementing commands: +The following options were considered when implementing commands: * Option 1 (Current Choice): As a class by itself * Pros: Increases modularity of code, higher overall code quality @@ -200,7 +200,6 @@ __Configuration guide__ __DevOps guide__ - ## Appendix: Requirements ### Product scope @@ -215,18 +214,16 @@ __Target user profile:__ __Value proposition:__ Provides NUS undergraduates with a platform to keep track of their academic progress and explore other possibilities with the plethora of modules available. - - ### User stories | Version | As a ... | I want to ... | So that I can ... | -| ------- | --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| :-----: | --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | | v1.0 | fresh undergraduate | visualize the modules in the recommended schedule and course requirements | better plan out my academic journey for the next 4-5 years in NUS | | v1.0 | undergraduate with at least 1 semester of study completed | calculate my CAP easily | forecast my own expected graduation CAP and if they match my expected CAP | | v1.0 | undergraduate with at least 1 semester of study completed | print out a personalized list of modules taken so far and grades obtained | track my academic progression in NUS | -| v2.0 | user | find a to-do item by name | locate a to-do without having to go through the entire list | - - +| v2.0 | user of PlanNUS | find modules I have completed in a particular semester | view specific information I require about that semester without redundant information | +| V2.0 | user of PlanNUS | easily access my last made list | save time on retyping my academic calendar after each use +| V2.0 | undergraduate with at least 1 semester of study completed | have suggestions on which modules to mark as S/U | make an informed decision on which modules to S/U ### Use cases diff --git a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java index 54b8e23a05..e494c38e92 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java +++ b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java @@ -49,18 +49,25 @@ public static Command parse(String userInput, ModuleLoader allModules, Person cu if (inputs[COMMAND_INDEX].equals(ADD_COMMAND) && inputs.length == CORRECT_COMMAND_LENGTH) { return new AddModuleCommand(allModules, currentPerson, in, inputs[MODULE_CODE_INDEX]); + } else if (inputs[COMMAND_INDEX].equals(EDIT_COMMAND) && inputs.length == CORRECT_COMMAND_LENGTH) { return new EditModuleCommand(allModules, currentPerson, in, inputs[MODULE_CODE_INDEX]); + } else if (inputs[COMMAND_INDEX].equals(REMOVE_COMMAND) && inputs.length == CORRECT_COMMAND_LENGTH) { return new RemoveModuleCommand(allModules, currentPerson, in, inputs[MODULE_CODE_INDEX]); + } else if (inputs[COMMAND_INDEX].equals(VIEW_COMMAND)) { return new PrintCalenderCommand(currentPerson, in); + } else if (inputs[COMMAND_INDEX].equals(HELP_COMMAND)) { return new PrintHelpCommand(); + } else if (inputs[COMMAND_INDEX].equals(DETAILS_COMMAND)) { return new ModuleDetailsCommand(allModules, inputs[MODULE_CODE_INDEX]); + } else if (inputs[COMMAND_INDEX].equals(EXIT_COMMAND)) { return new Command(true); + } else { throw new CommandParserException(ERROR_INVALID_COMMAND + NEW_LINE + EXITING_CURRENT_COMMAND); } From 6b6ecbf1b034836b916d057555c7536bc7ef2464 Mon Sep 17 00:00:00 2001 From: Khenus Date: Sun, 18 Oct 2020 12:20:57 +0800 Subject: [PATCH 149/450] V1.4 Fixed assertion error --- build.gradle | 1 + ...ages Interaction.png => PackagesInteraction.png} | Bin .../{Project structure.png => ProjectStructure.png} | Bin src/main/java/seedu/duke/PlanNus.java | 2 +- 4 files changed, 2 insertions(+), 1 deletion(-) rename docs/images/DeveloperGuide/{Packages Interaction.png => PackagesInteraction.png} (100%) rename docs/images/DeveloperGuide/{Project structure.png => ProjectStructure.png} (100%) diff --git a/build.gradle b/build.gradle index ec0fed9bc2..583e92a835 100644 --- a/build.gradle +++ b/build.gradle @@ -45,6 +45,7 @@ checkstyle { run { standardInput = System.in + enableAssertions = true } jar { diff --git a/docs/images/DeveloperGuide/Packages Interaction.png b/docs/images/DeveloperGuide/PackagesInteraction.png similarity index 100% rename from docs/images/DeveloperGuide/Packages Interaction.png rename to docs/images/DeveloperGuide/PackagesInteraction.png diff --git a/docs/images/DeveloperGuide/Project structure.png b/docs/images/DeveloperGuide/ProjectStructure.png similarity index 100% rename from docs/images/DeveloperGuide/Project structure.png rename to docs/images/DeveloperGuide/ProjectStructure.png diff --git a/src/main/java/seedu/duke/PlanNus.java b/src/main/java/seedu/duke/PlanNus.java index c41fc92a59..ff0c20eff6 100644 --- a/src/main/java/seedu/duke/PlanNus.java +++ b/src/main/java/seedu/duke/PlanNus.java @@ -37,7 +37,7 @@ public PlanNus() { * Main entry function for PlanNUS. */ public void run() { - assert isExit == true : "Startup is unsuccessful"; + assert isExit: "Startup is unsuccessful"; ui.showWelcomeMessage(); storage.loader(currentPerson); From 773185bbe78d2980931dc8877ac858bb90aed04a Mon Sep 17 00:00:00 2001 From: Khenus Date: Sun, 18 Oct 2020 12:23:51 +0800 Subject: [PATCH 150/450] V1.4 Fixed assertion bug --- src/main/java/seedu/duke/PlanNus.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/seedu/duke/PlanNus.java b/src/main/java/seedu/duke/PlanNus.java index ff0c20eff6..3e860591ee 100644 --- a/src/main/java/seedu/duke/PlanNus.java +++ b/src/main/java/seedu/duke/PlanNus.java @@ -37,7 +37,7 @@ public PlanNus() { * Main entry function for PlanNUS. */ public void run() { - assert isExit: "Startup is unsuccessful"; + assert isExit : "Startup is unsuccessful"; ui.showWelcomeMessage(); storage.loader(currentPerson); From 20e7cb4d29aa791f22484cd9db40d025b1a586cd Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Sun, 18 Oct 2020 12:45:23 +0800 Subject: [PATCH 151/450] Clean AddModuleCommand --- .../duke/apps/academicplanner/commands/AddModuleCommand.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java index be8dab3071..5994cb5fa7 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java @@ -6,7 +6,6 @@ import seedu.duke.apps.academicplanner.exceptions.AcademicException; import seedu.duke.global.Command; import seedu.duke.global.LoggingTool; -import seedu.duke.global.objects.FullModule; import seedu.duke.global.objects.Person; import java.io.IOException; import java.util.Scanner; From 3e11d0d188dca44152295f82c80d88922154d846 Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Sun, 18 Oct 2020 12:49:18 +0800 Subject: [PATCH 152/450] Add sequence diagram for AddModuleCommand --- docs/DeveloperGuide.md | 4 +++- .../addModuleCommand_sequence.png | Bin 0 -> 162685 bytes 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 docs/images/DeveloperGuide/addModuleCommand_sequence.png diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 2624d0652b..c6a0c5da5d 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -161,7 +161,9 @@ remainder of the `execute()` method. The following sequence diagram shows how the `AddModuleCommand` works: -{Sequence Diagram} +

The following activity diagram summarizes what happens when the user executes an `AddModuleCommand` : diff --git a/docs/images/DeveloperGuide/addModuleCommand_sequence.png b/docs/images/DeveloperGuide/addModuleCommand_sequence.png new file mode 100644 index 0000000000000000000000000000000000000000..6691406b93d41aa9e7ffea6105d9c88c18f1f354 GIT binary patch literal 162685 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]l}bVEj6q_dFO!9l%38P^0qdxY{Ug)epk&b^+mchhWbWj_19v|sKE?_PXu zJk88hz4BCD)tS3|i|O`@ zsy_DKdJy>w{9R0J-1O8JMm&BeNll&Q`*Z^Q>o%9`k9o3EdUu(t#6s6Il~dhHFER^p zCnLkp?!JbGa_`;_kKV{>sR5gc^h*S^YgVNjRi=*943mQ z5(K#dBjxqE>`e#wWraxs|VjlDWgald}K{SG!}WVW*(Q>3Z6OE!30 z=ZzYBZ=^3n0^S}XLg+du4X)H4ScYLFw2KtWlCZF)-gnmj+|fWKUV6;Gzn?8pF4BET znKXBZ!z0DmotbeKe188FjSV8%@E`ng#3xt`!Nyu@4ljsyDK+qlOxVsGXTFG|AQ7_U zHfv1=$cN1AEz1J4E6IaW>ZqW)d|{y`pt%{dacgUouCAazVn)x~%Q1f{E-Rhm;R+aH zB+T|XW+hRJ^#XE!oi%PjXv@}7>Ad|Q?WyCHz;)>WV?{v{CXH}gN$z@YVgilt%~?`X zWr+91*iY1`)cZD?QMRy5N-C~JbF9tH%1P|{PlQpMhY4alCM(U3r2D8vt*~Y(Mqjltz4K)M~NY$pKENQ^UGyH zYDlBa)7C5YgvUpBg~OG$^_MuqLZB49@`+f$aV;<$5u=dOy9zM2jjCW?t>!e^_(3%( zCiRo>rDjXLw3HGUg?H5#9u9QP5zSIzOJPSvqInBhSkY6~zP7oBdedHh|2r8=MEs_VL61qzaE z@;VqV_fSt4-@vn3@GNdGlT@_Pu(6f$GgysxM3cN2I#?f_1&h15HFv3MHazV}77AH= z9gn^URkb8SuM?XDk+&VQmWx9#ZJG|$G>Sq5+^3+=X@HIY+@1s;WQ3GV-9YM z_v$haY|51#Jke2r20-yrLkITR77p3xq|q|~g)jqjHLm?Y%v4vl@9oEEJcYMC~z>eFQmjtpdN?(NTau)-C0eOq{~Y zMt%Wp$sq0VN$4V$I}v$p`M=f$eB;Fp_*8v4_TdZVLzFI&byt;{Vh}S!W(6p*v|8^x zugmq4()b^r&NgX|$@)ZPa=%lr6yNvTPe@@ec`q@4$ScAteXz9!SE*hp$kL&8(ueI( zHpJ*;{_;)?9Mm00&_c=N0=1ee{%JMyviX~qmC<(OHGAABd_o@iR>XXggskDJbdL3j zGIf!b4_=?0{eZ^jsa=vDhd875p3fj3JN+Z-HKo8qzx36zJ2~tO9ri4uTdrvupd&2ASN9K zo|nh{$|Ug3)wsWjNvZ+7%z^N0pcCl)Q_$fAnn#f;$ei>9GA*&p)ib350U6Y@FyG@- zQIi2l9XNsX&|1qLQ(Z=idIzQ`=9{}?vRE42kqIWaJr|NuXozoEo0q>3qC`_U%YEc7l7y3R`reS&-QfnSp2Fra0p3&KnjlK{>e`aBnZkF-V2%t1Y4fCw?zeNwE<2_Di}#Q1m8Jf zMuX8$c(PMw@swJ~Y@a^4IeIylO>VI_azuZ|YFYl(k120h{DgKz6uJmbc;j=NeZ`d4 z>-vDbhg5it#2OB+f)je!oo98hd|MY{1t16z==fC(_nsu$LOEH<>-ZglIi2J7t8r{V1^2b1B07;%zOGE6vtc=$;q3_hRkT}F^( z8Z$4YuQKefJb+J7Wy#I?Qv#%|5%}jJQ&1N%Q4^ON8uow0Q)S&%tfieJG#$5e37wr% z>H{x-CIgGND1Ep>U0V?l3NhT+QQq_JQvhp~SsZ8&lyH68KYzRwZYi5(sO%gI@7y#jKSV^`Y@LMs+{KT#BfsQ^^Jxu#tet?PX6KqAIWI@ z$nw4V@6!IOzp_!lf>Z)L~xy`G@NQq)_JT4K%d;hxwJyUu&*Q5)FU^m0*JWX4x6$dXL zEhQ)YFDgc7=lJ{CbP|jO)9;|a7Pc*1%+ep=qg2}b+0)SzxTKHllem_{NMf!(92bdu@sSji;Ojk64v>CAs=(g|nTe+4yG z%9Jk!HCc?!JyC_faI2!A;%2nl!{EDCy?IOZimQb;pKIe zvDB=T`Rp^I@k-J?$lf-%s8yY2Dt+$Ckr2?N?(Xd=re!R$Hw%T&XT=||s-d)S2{T$W z)F_llISL*GQc6}MW=xY0sg=!qkBc*?#lfcHwO|j8eY7U}7-5R?{7S*} zrPU64Cy)l7BRm5hAUeDw7QfpVf>~_d_kf{+;52>f+Xh^Ie>qJ`&x(_kWu-TIjvI3; zR{ruMRR+)}#?hJ216g51GM}(eGBkf$G`#8_GsrXD;*B%Wl()ixih~*%7^scjFpL<% zlzOwM>=j`2n$y0VvJMVV0JijAz(f@&C3UMB6&RxZX7_d%)BCD@;?VP#O^`|Wpao^7 zq7q`XDVaY_peKrIO?G#|UySn()dA2{BHR5Rq$?P?re z>MblbU-~2^dFX3?pbzEhOs9<3>NJ(Q>v>04Fh}T1JJb}g=6p#t4t#?nE35ELa5hnN zW4I5ZPNSw-obBq~qt$L0byH zaz1d54Rh_O;7=jub)DRoWdqnh8?sCoIC?@LN##>haVM2s6&?O!pG^EawpT~g5>9hR zrA+Mc)k&Xw(X&0WC#rdRFyTK7@9*Bn%SlH}wDsK_jKD~s6adC5(!1$V?xV>f?SPZT zNl`;HJbHGvD>8OTu!!%!^9t(ekW`R`&f(k!9C@-qs6f-~h)L9buv zkU#RTV-+f1D08B4@p!4 zI6lN}Ouv2z(QLl1D5HwnO!C#chltn^>fJglz2>x`r1WJMbD0F_VC4s}+ubDqlxA7@ zmu~r+T5ja079~+D7Q4tul-6VJ6h<&M6tAZfk0_*wB2%@W2a5!uYiAfr`41PsYHXQM zCRc6=ZD=%tDWhK+v0NafKFCa+VemZ~T@GUzV%AX2X|l2sWkor8i{258li$ zw-!85)R`^WUU^v-G4S&M{wU=-@OMnWyT7sbIxa372$ze4^H+%q$0Hrlh$l0puGOxD&emid0=4P z1M_MczprTnnOLB5rIV_+BuGH~ihqF(4xk5#`xXMg4JeMpVI;(=2hLpeG2|T)jh5bBFe}M6M0xex9GYDEcII>jCFc%b4_8k^5_cW{&Jr(b7u7lA3+2-2&7GFh~msfFtK7dS=2HmK&cS~5G9rDl%bI=Xu zn-PJX5@bAAhK|e%&4nm5%YREm-Evtt7X8M*O9GevW`9mC96m^PVy^OrCJz$C7llP@ z3Huuy$f>BG@?ALmaKSU6s(uIri{_kKoUHp``89&efmL-GZELK7h3kQdl>ZfX`X#p& z7^Cr(js$73 z#^fTOLNe0Jaicd(50?*9r5v)viX&(G0I0!V^S}^snS%y8yeY%yuNEc+IJ+bwK)1;E zdvUKVh{5}Eh#)Gb3!&5iF&%z>-ux*k`9zD)VXJsoViMpJD7*UVu6))jDBNyPQSstF z7>uhV0aVeYA@TA3^@RMFHh|z~CQ#(jXY_f+L8FF{x5fagUHIHhccom4G7KAq_;Kr| zqy$q}ekfI&IvXQ#&s-)lYDQZ^;-wv;xSeRw7o%7!>oZmd1<%brS5#EJ{q}ZxHUXRA z)7$)F;g!=m|owpAl&4KF@6+clrOs47(JYpb`VUq+AXQ{cR z;abDc{jR8EBqOEvt&L0n?97qJ%VC%#@o+}U&FWCnl5K{3+-jTW*i>ZXXIBpPig|P# zQ^WRWkIljG@Zpewn2uvMx_(;1Wu;brs=~FIjEut?oJ3V9hF{^~4t%n2!!P{P7TK;o ziGEydXA}~$c<1$4uQwlcWe@aB&zvMBkLe4WsCKkB1r7up2=Mup%qH5OT?K9J2AaNU zr)g>3-}I%Xu4fk&t$vHxJ<^gxs>H$ul#5!#oqcc?r=C?yOisjIeqdw6*hpGAj^7bM zQ5ZMgYzu&5eqVGy07tOA!AQ7tH63rYP;hkgp7O`k6HL$Iex@qyBlcWUbW~m`aF>Oq z9(^@Xnn81BY2+h=gLy6?`^e_r%!sO_t*3k6|b{( zhM*K$j!Bk- zqgIdKc^G}#+e?PMI_(Q9KsA$@dj0ezQIet()IHOWYXiy3T!w0b+0wD=f0wUb z%sT$Yj|U`Cmm&-QGr5K5d71G|U542ZDHa5)pXH>Z%O;Jh?>dv3T%H&_C+ya*M(Gr?YqmRO(BmLHI6lsBvS%L3=U_ZCReYJDx=Yd_R9a#4GG=ji zp}VFvrWPR)2LPQF<%c~X(vd@haq5JQyu3+&1byX!d&mJKb|G$nobR904cnBXikzuI z0=iYa!Hytw{$9XGz@U~xzX}twGI6M>C_BDJm*D3z+KOTnak2x^c7d5t*^Cg~9_N zIGZ3a8ov(id%5;MK@6Bh1BMS2#DS7jKEJ_xGj&!GGFU<^({VXA`fzgE@JXEy;_-M% zBny3Etag(qh!Zs~@=33fOibQQGrkS!qe@*+(M;l#P(_X`eTy`LkVa~L+|w~a<>(dQ zpTI{`RvPf(%bQKC3NdUWL${%AOI1GRNGn@)=w5v2sc3BXF?~#IMa~wJ3@a}QwqiZs zCzBO;^`otT(GTira`Gl4Nv=MbiP+Vt1=I~%d@fZQa&T;uoKZS8q}vv2Ig5!S=??B9 zW(2>okL0C@pg{edH#y?XLDQiA&WmXd&Y$!YU@68dwArA$!Xe^N!Z9aP4%X~Zqlc5T z{a^KKH4Da{W$^W1N&pEQ#g-(NX3{RUd~{t^kP|KYh(l{B27A5*^*kmnM5rO<2&;Tn ztLy&{1sjnc8+E}mVhOgR8W}K!?F2#DDzY9-<ixSR>LH|=t@|#jQ2>E3oZbtyhfUuE^Pmc2(3Wq z{~;v$}!a-1R>gPOc3%ABsob4f_DXNB4)f#SwTy}cK#FTTHtv8yoFz?lv zH;xY?ihm+wm_69WT%t_J?eDS>haRo8O^Qc^|7h1O+` zNQa3jle_a6LjLYy`2hv!b?+B?QN3-!yW1*p&3SqnXdOJ0y0zw)g!Fo8KI)r<2cxjk z$3qSgQ1QEZ-c%8}yuP?1V+Y%!_Rwu5sbws)C#*c)!NzXQF|^8uu+!CvQx8NqP20^L zd*E|t;Ydkck28#ZuQ-(hA&(s)*%F2s#&8xTHz;raxzs~D3kl)08Ff{}wjzSer;TVt z7Hzr`#&Q-S^wgyed{UsYo$6up72*KV${9_+wZy)poL4Z#1Xt3F(D%i=?=D#W0Qa7F z3n&$xZ2Up(DF}(f?jt(3CRWKh2^KWC*c3)h#AHUkH79eImbUttZK(2EPL^ghN?AU4@IL?{2vF&!Se8tFAOI;-)#qEV0)@LmhK$1F?kQ z%g4AT=QkIx+n#stdef%LtcD(q^BZ#!u;RI{5>u`$1s6ie?OvhhXf`oZ%sCayMgw`| zPZGob1N@+T)Nm~VCIgs%OdmEMQ*2$BogZ3!G9qS%kBMrdfq$0?%a-j<7e zmjQvLJJ{^-X1)$wf)ox^7QM-V;)h-aMizilg_yNesCa5TlL9IBTTkeTR$JgPt2;yU5QW?i~RuxzXgF-HDY0E z)5H7G(bl{G3441%ng}tDnPkuZMWvQ-Tc#gfJBg`8Z*@v85;n9pV@+ED^n3R!o&P=t zT~4H(nhAkXDYxwM$lPBs%DVMGOc!dSj>O|-*y=$IBqb5eCnkOnChH{w_4|JT=e9Y8j3Oq6^lG*F~;U+U_&? zGX0Z8gfxJ%`+~5W(T->%sjVx zS-3nnqIka&SXf{Q3N!w3Fyh2wMgmBRl%jSch7?t^Y^}GE4GbK!w_PuvKhdzl9GTkCzHi^0IKLr-AXVd2r{&4(|>Q;4xaK|x?Lq@P8gpv2$2kHr7^ zskxc9xoq`jaYjc6(M6I`-*)x*r1AK0v@R&zzGlhM+h?ts+AL&`RPhCoM<9qwB&d|A63mu0_J1`V+ zMYJa7V3d=~o%fx_!1{Ub7{}V;#NM>prEYL?*)!oph{3rMbdMsfAlg`T1a9)p>nr-K zDjS@S$)Yz7LYP6aaN!x3$YVtzm#NDVJqu#;v*n`x5|Q*PbwD=0Hb2fp&)IT4`U&-S zCoAv?ENYCO`5Mlqo}eRg8#Kn_S$Ti4*2pqLyRXPm)dMQ@zWo$Jn~w$tFTiy#dn!!YB*61++jjj3Wa`Synzok#VlBBF3MciXV3 z*Y+>a=_7(3d85JLF}09@St)=GC#e7ITmpl-xgawGMYPj5tRQjO$l(#kbM<1mJ3g`6 z1%tXy7Y_WrDzg?8@Jrir|M^SDK_Y9P9@ZN9^m7e{-sT4e!GFaS1*?k#hBv>3`|dHD z^$yszQK@VMrJR$D0N*k)#1dxqGWSS6LV)6$hc+{BtdVH0c3rzD8u-FsFlhm=3DmXj--;Mu%&E#2obfzNwQ z(P*Rwc@#CyYxIC=6xjdGG{@i&f_BNkADEmV+T`Jf!v*gQRZOp5%u&wrLTmQcv;BX* z_|;t91lTE_pB}jRc}t$ly#R4%3s@FJ70RjFPlHNcuoI^{9NIMA4~p8v}t?= zHc;|78ScAeh2E5C0{=TG+Rwi@{U5??DCOz~RFZLIQZAW}c;Gim z*~}9ccg6@~l9=Z<^8z8Z3Tfjz!D9X;hQ#-bNZxEZr=|vSq^5?Q1W%Cn>v_w`EHh9) zU_H9LipCkpb(>iYK_z)!3Ps1YwlwD@{Ge2`?`|CJj$l&wv*xryv)0BVxBAR(sX~XO zBQ7qk`tW;I2^FnY8`3MblNfGfo0XQv!}X;lx|_sE0#Bq7#3Hc7j?1vZuj=44yWox| zu%*iWZ6^>GH(<)#U||SoEDs8HFrRtJ45nO3knk-;NJWNDAOon=j8V}^4W`6$JSHQ9 zWLP@$z7$FN0S5Sr;?m99jVoWj7@N_0+@FT8(BJCb;bDJu;CgISgzLDgdzC?{866@P zmZxKFTgicoTlpa^DM{O$Jr#ds7zKDaNT$O{mBA)~tZYQhTUk^=L6<{`7*5W^bY*p5 zG#|^!l$4Pn5)mwlmq1}n%}%q$G_xlsJ^e~ozx3PilF{L`Cq?%=nCp+vm;1Xc?D*45 zemYLP-B68-robCPN2n|;CP}EN<>wT&ANvw4EQUz%qt@R&+$4k6Z8P8du88b;?PVwL z?*8klb8o=EO*ZzUE{|`2Vla1lXQkFvjD(B~8wj;&joqcPNW^0?Fo}Y76T1!xMGpPW zjIe#sf(jGGNeY}~c2e^^nQJs~;Qz?px0y?J7vSnEDq~PT86XQD%L?kMO*1vRUqMbn$+YPbw$A48K#jt{XWH-!&qLA)JqQy|ufl zHyV)FyY4~#1xWVTZSgpEHoAw0netHx=N=l@s+E+OzwsM5U87Ph3i}Gq#4DL|e&PaV z9Xj~Rk1vH#kjE1M(z5X~fXeT((OaVMaaFe!&%E`jzyNbfH^s%~nL%4QXu$mQl7z$z zGwA@N2INM;>(j|)ptIB_5VY5ng_cvQ?O`Zz>0OvXcf?0+kSFw|xlWpf+FMGXEQ1RI zdUkiW>BE?SOL<$ayd{ya`xIBD^~&`m$tSqUkdSvN4`EVAtQ>D*&86p3l3co8>r~8E z#Zy>i5n2*I&#!eUGGSv=b&!1Kc&MHm-0Ht?)}f%McX_tgx|aKuD+X&iRKs+Y;mB;T zZg}c8+RE7CmW8XDKS^;?#`3Ogu6;c$SBzt&yn?wSJ`4#^e(5UJn93L$K7OeSyAXD6 zPG=H$+pZz_Bjd@!!(%7Q`$0{R5GU!mIt6V-L$T>sR(Z7}aYRG|XOgYvOGI*; zyCKmvFPF>q$EEB^v=etPkR}E?10b+$UOoo{@RHA)%u;%q=vR)=dQ4Xutok;{04o__?s#dnn2l_emfF5XAZB1>d@!D}nz4=m5 zAm_#?%;1TePJ*Aivor49T4D3B?VPpaI5E+5Yf&_f-EJ|xkc^3$puV*w_aukL3qXu1 z6l7f%diC@x@ETNLkfJH?Y1LP~SxM8Av5Z(@)mb2An)rzB73N;%|Zyg+*Ab2xV`Mx$8 zhDOz3EJsKtua_D;K46ka{yB5>sBC%gg8^0{rP({S_u}VzkJnnD_ zHX;bNd;?p3?j7(h*~z}X7kAUa*l$d931;5(vVs%+xZ)D%CbfB-#qnJ^9tt>H<|}yX zJ5eGnv?Hdr0@R!uZnJEY1*ff2+sk>ScvR8zugaw}D1*-k&2X_Kw%l};=7%I&6dh_a zP~X^jF93X$rmcFo9Lpc%GjMxx+M5tnHa$bC@ZQ)EE!)8ezYm-4u#JU z*-Ih)=FVMFdhSpbd=pe}7aat(Qf(OA#}z9t2RzL#nt)Gu(s1w3A4Cizb{2>rDCL^P zif<->41t*AU=kWaD=S4C%#X^A1jg>eca1Jr&Ars1RIqj-6cNz{#HL;Ct0K1;g^!&0 z8R20ZZ>JO+KUNRMPZrbK@Juj-TkeHoMcLZ~=FnmcI7p_vXT9wUQvWiDF%SfgNek|e zj)oYZubgi1`BrV72(!mie6oO>M;3|L zV2vWSarM|SHnq~{VARN;sd5r*c7c?*EFHFC{=hVIozS4c+%tenPh&?qEtK-9~s#w6I{44`}_~1fylf?CVU-c z8GUbZV7%x9xEg!PW`^Nz^{8plsJxa2L8Cx8YQvFJIQ;~H3O9-7wOxGgSwAJs1W)Y^ zpMp4)c9~jzi@#G?sY7ONqJ$~DKSvCZEAwCAO~ZMIfO7a4uD>PAG#0gJPj2RisnW8> zRq(n|UNUKzC-;rsh-VC3Tq~oKp_(_$;gR;P7mMd2bLt9W?J$-Po83XG+m;->-Q>%8 zahc3j%JA)3ndWXwk`yPJiTd%A7`f#A{o6d>G^CUE9Gp+(oKnW(!bfHb@Q|okbWuV& z)8z;!V zjAY^$Bkc7VBdB(6=|ToJ*8;3-?OW1NfB9|@W3noC_bMnbYaXIL-oH$1nQPQc?R_&n zKWTY#xHZ49y1lK{8H}ITwxiQ(JDmfZJ0?fHdDvj5 zex>X_`yVdA>V)e;6Z4K^`-F`?QgQJb)>D4|isAv@U>pQye35{P}53Q^gvzLjKrdgUj$<1~J z*Vl<#7LROL!sQx_sFwT^!xETv5qrFBYsNSjXsnPw8Y;xauvRTjq+YZ@rN6@hv}x67 z#d8{yM%8uh2#7CBE7<%OyD!{R3=m1`^dcyj%)k($p_@QnM{1bGf1Q| zXsCJH*W-GvYYf`jI??EHR@3}FQ65FKvlBFc{!0<`P&9^l$Po)xFMDAihS~|`43^g*XdIeX%iw_JoIeCp2wJU zksT}?9JVwAXOr@8BGGvjK9lzttGK=4DjrZsb_-Kq@-t@r4>ZM^RF&e_WFrjM6a@e* zR7lN={WJr?3ZUv3fEB9MyN!PyU^mjmubJ~{rMcXmCJ|_TuzFh8R&2Qae5fEZH!hFl=>2!%$I2KG1E){SshBe6h?etNNL`u9k8rsK5mU&958 z>&kgfz^f3-dyhqIva?ssZLGOch0w$4aBSG#*O#{GI1KcP^9t{dG3yb_*C22r+}*K4 zFAQ9ScfQxB@iYZ!o7K7e#0MKI>#r$mVl1T;TwIxo7dm)fITgWcv$!VKPNNAwvZB0_q(;~d(cs0a0+7xmA*erX+F7vM6e z{BAix|B<0031m zOw3j=D)?~fln+(xpO7ZVWI#@D*Z#z`itl9@UXb91!(3X~(+Xwlmcm&<%m(4R%PtPcQvGLJvd$VQ)k^^hvc%F-1Mfk^jzHd8IzM= zqq(f)@}QFQxpmn7 z8ZPDH*4cNMrBjDLH16q??l`r&o4(E4=I zuk|nmD`Iuk=+(!@x!ufhmn?Wx+cR*N0l78d6cTR}x3bh~^&CsBoaPMX4(-AHSW%Eq zU}ZMDege=kJs_L=jrVvm$r(#j(-E%1rF&qVa;A@!Ml9bRo#92r#T|0n&rpsK+OoQB zad&NnZvH^gLy^c8kp6gECaB4m(@#=4ajwuxWhb!ejIPobv4APurMf)6ieW$@>kV zy4g0U@wF>Dl{(w-{N!{hUe?_sEUy|%UnVv&w@E@G+{Mb2SB#3R^UTXL)MilA(2%GY z=ka}^^`D#QEa7(iu>y;>zS*-bR{?t*Her*#tq8qd!ti0XI-w1-d&{lFbeLdrTm6eo zCQt@{I1rn%N7$aqQu~Wi7E#Foc>+{OHLj=R!?s}sqVLcT2CGahCFQO z5gm-agw!*S+YRL2~FV&(yQ1#2U*Nm?`7Ab2#^L=0ba)$|_0|Khd4T3Nr zK64ZbrT?|M!iSVl`S$4D!cX;9?&&Y`$S=0%Ut1LlC~H}nu-)?0KP)+i0Z{1+Ixn+a zG@|tkc>?SHOYbDo1RQ{Y3s6+WPu2#3eKkAsr}^>0Ha*tCLJ?DKjo(o>|Le;Hrw?-IOATti$k*jfIpUj0E%%C z_R7&Mwxk1k82bMX8ACz=Fa|8CBIYtFU`;2ndS*fpjA8K)jL|KgT$eB{Bm%66Dw0Rt z{Kk*lp*dFzH+l+ypH2V$yNDpLhG&RGFSX5pa3gOP6!NVFs0RKo`}zZ%jDvua-@7ja zkbd}oUvZgCq`TnH?twl)COYxPF_1j|=kEVyMZmnT*2#{ULHIK3ACLbFy#x3%P*_67 z7Khn@R{XttrSZ?#oC$wIH>E+I?84AKF)6U(UrP}1Ex-SYC}kmJrNHs;--QAKy->(J zDmb9bDT@9#s}g}${9_3K-T%FNrSq0+sDEGa7HPKyz)k;S_y4*gkURYDDCBA{V9NcQ+k5(fQFYvaQCj8^0R4gF-@6B${IP%cdssMN z#Xpt+ypTubSGS_p#KQEye;06sM4Ot$LbHA$feMuW#j3!*s5)H#SVARH_V@0A#O}X6 zS~|t)&!>Q&{`LvrVEo7K|8+$S>OXG(p7}rB9yn<6tDayOT$9K^0FeE?dmzpD&yxlT z!i4@<0`NkDQs;GAAY}c=p#_dmt~MyucK!r}qW{gRz`o*FTmD$0bhz;M?%(?S{O^+n z!YF>*3;5}8p8yWVe;?ZaSrH!dkJ|&G??2ogIA{Q-0~VIH2LleQ_?4IH>f zJ^ok%@IvI7X1mWo3Hcv~_82YaeZ}8i6t}~FS=BAATihIt@U77ImG>%J4dAvOV6?9x z-&~np7FGoL?EnZ&%T8>3mwyyc!sE|9P6A0dV2ye`^uI3UNhO!`+IQE*E+e5yTdd9QMni9+zY*-+d1dX0j!>NgJqJ5fDZd@3aGtdWklUv6P z1HU=@YfPZO_!_g5x%qDdI80={I~YsW-CQD`?`t6>VlGNJ;T;ZwJvjIXk%RA-4+AC% zyurmkdmb3Q8L&zKo&zs}07m_O7Q*5L;$jwTh+f|$kMcH#8J@go0tE=W&MtOEiVsYH z$?loBIIE{c0QZ)Mtg~tUd+UJKTOUbm^q`!na4?MM_QcOqDQT)#t&$R#j-MyoN8Ucz zvvYADCJVn#SmD8w8+g%CuBEANa8d7?%$M?o?X84iex!&k24jYH6GOqEZKe#%5M}@& zSepKsFh@l|(5diwi}dbS9a>IC$#lRGjX>PrT0fC>zTTtHy0mv*==}$#H3IjQ=_%?o zqPKzcXRRNwp~PZDE1|jyhik&T*$92BZ!*SR3@&yiRv>zh?(TR5Yu`pDSH)+3(MaVr z=q{4Fb{?YS`^p7Mu_QkqA{zrim?w5VzsXh74{#2vfIorEurdf{79D!4o0p)#@|Xp02Pe< zh&SZ+c_StZH}c8=NNXfdacu>x_Oo(7cjyWObPG`F3z^IRzA_Sy(f8_E4RWxDy|ZX4zAc3C=&;A8?@mM^mo)XScW-76B}$49s?MS+p&opvLiO zu(qm`BJ;OR$~PMl-$-`{PWtA)-N_5=I!M^Lcp`R~zFU778tOp|LCLHg)_;#3Q8-p_ z8np;r0NdS6TOgY}Qh$;`4fMk_rllbvfDliD#yLsp849#~i6LepOo1~Aj>9Fy1<{5{ ztyiu=D|YnWz1qJ~_NtVg$LmHX6FD@|k4N4Xb{UF;CoqA9QiUBNL#(nhz?eifZ&1j&xvVc zUFRimTZN7YSQBh;v6c#f!DVDWeS+v8hMY|T<|ph*NX1w?@Q;bQxs_pIV{d9zcW>m` zG3!)J*RFF?bz~#|uo!&~2M+o{<>>cTd03!)<0tyz(~SBzJqF;qESSlmpJ%N@5=Yi9REMN zv%?lgKiz$I-(7XpSy$0b;X^_JUzCrZa*R{B1-xhNqO=bc2$4wIe8Vs^-}}6fNX~Q3 zLEO2%Jgv23Qc3FS^`!BWlJF8sR)Z;nFGJ&FbwYr7L9M@|V8upU#{rW8SH^>qHfrgr z$9yi}&{z>)Yto=wYS9KH4e;{wmRBHium*T1~0Tl3nrTEDj2`{VL_g_1aRzkS`m zHdVEj%LBw@gh_=lo}aQJ(mWey{R-YxW`mFxZ4$&OjZhBFW0b97s$$)`S-Wpb#U5El%PJ#I3wEAhzlE1{}2biicztK(VDQ37Xd;HIEQIrk++}*C#DQi=`F;F z{Wqw&Vb!_d1Y`6G_+T^|N)NQe+w5-iC|njuwVY+g#|O`LcUw*Rv_(D0e8bQIO>gP) z+9`HEFnv#g18KrKj=+1SytUHU2=L&C=1_F6tI@IkjcsS%4G2OKxe#Zpw?iSxFH=hVZ}m=^{2El&$4(DYbNDJqO3ky!8U!#-W^G;n(c2F2WpHiMXctC?JpZgFn9(kd zkDUQL@S)V5#pvEwx87lM;GCP@n@WDt8W@2fsQ!{^caK(HLkMTYPN=ozc@t!0C(Wgi zf-bO7p9wGU8=4Cpb1bNM1~;S5wNhxZyB%v2v)2jcnK(JRxGa5)BSq(Gb-CPgg0Mx}Reu5d z-7#*E`nb^(G|q^zsrLIf0@d&cb{!d~+f6&F+G=tX=AQjX$}N5|rF^B=8X+=ihFd04 za)3rl`-_>Y>!Mv8>A13z^4&Nr82JLJD@#6@L6o-X3!X>=GvaEC)0W!M&``xllFbe* zY29Vi2lzJB#s`n}>mZM8l}pX@ko+qrpMWEu@h$Js3J7)?uw6s#qY^?9X*Eo=gz088 zrHRYrWWt093>(XXVjMh;BW~uQmMzHAS{jJS4sb&YC{yar-M#3~mplkNWv~c+U}{?D z3pJ!*I~@?atB9i5->=xB@6kT3ftla6D3!YGX?ytNFoIvAfj^Rf{j31XwSw3^fmJku z{20Zc4!Q~C|Me^NB_lrm>d<9R;~J6rSxPKf)sn%cmC9+*tUH!lS!L^>q}UvIIo}p6 z1wehkJ@A1Yaq;rs$hC?WF75y@60eLLAGczvp(~$N6zLsHFDVlf+r91yih9<6et6}w zbFVq>Kr{fffex?NZ2#C;DOy8AL#~oyf(9?Ig`DN(g|L*=VPOTudUaru5vafkboaDT zTf2=Ih?rTEotxVSEZ^_9K}Qc{%-3mU;-$S}*D(wwFAAFNI<^J|qt}2p$%V1rmQOq+ z>XBYwX-wgonKw$+F$Rokcq-hzK))K>F*sWWx~X1El&Bh zZ=7g1L(%vYfcB7c2Tt5^bU_)D#smG9@F%<_{Ot1olkmT-`Rj))%%s=NQk8E~2tlU0 zPDwu$JX{SdEQTvbMy_NaQeW@xbff^QY00v}`SU)w*&Ij2%%n#()D3l^zJ9lUB8@vy zH@BHVLXqN%FWj!bDcx>8pEoOY7HElyrB;AZHi19mOI2cH88+jp^hhn&s(0dAFfl1q zd|OXZGcU&SY?Qbrrftc7<=D<~13oyobvWz{#l?q9QPP^kvTlHH?;Z7=uF~&erx%;2 zyJ1|=exWp*bLI9+T3Qog>gc!BDBKmgo#3_yRm0Qyt}=FW9v7EH9*R(%a=ih^a1MLp z0gqgfam{L{)BKj8j}p&xgnG;U_4Un37EA43ER<&3a=G-sOy0x|J5V?cpLFUB z*9I+?SY8nSuwaU+@K`SQDGHge0yf{fCXUrirqj#M)YKw9vt^HKnNJ29Qx)I|KZKV*xOmz{^j@k z>!IAXdAo;0alpK8y1d52qlU=$cg78P5wx^xE~iQK=sZYRsnhOvXS+kH_gK8Pa=&!r z*`_Zt21VIILsirGe-(|}m&3gkdWd7E3Xn*^oY!e=UfdV7Yv9}k{Yz2M-s7%2!13Y3 zhJz77!9cu)wMHTT#;{(WNes0n-AH7A3ff3IMx9E%J zPGKVlFa@{f@%PImU$Mcq$PnP6Ya>>sL%gI&jcY3Xh(c#KGt+X4&3^pUqDL5qWqNC# z46=^bVl*82CDYI_hfr3!?5gB=Gtw7?s1#+*Mo~UC)O1CjOFuiL7zQvXH%?||Di1fI zu`Nm7HtbQo2};qv}`3&^wlrpX798F7{1kUr=j(GR$K5n1|(3zB--Kb+}MW2G^Ws{slQaF;Uqp{j{ zxDXOnJo5`P#bb8%w*fr+mR#qkpsn;V;oOKzN z>B9&T`k|0aNll&nYxu< zK*gplbZ-NlnCSpSX7dvdQGrYZkd+%d0P^KqK=xO@d<>)0fm^ln4)}0!Nf^;J(}*3( zk=^LLBA0bOtJ5>q<{O~NOfh=?$m0G2xar;u`@v?mG!-AFnjIYtzmEIEp)Z#eGk9$e zMshMT?$MMN13s&ZDlR*B=XRN;Yc)Huu0;kHjW&r~Gqql)^Ka;fyxdrau!2H+v+JD3 zRKA9-Q_zBL#p?acR`GitQlr($`ufGZo*;>nk>AbE^aJeEAFe@_u zt>*EA2&VF{{{t8`h>O}cpirlR2Lt(@nGEK?8OaNQ06TT3X+?5;&% zI%L;1Hxslis@R}%mT4a+?HikO+3LBwAG$?Q%w_0)Y3Jafw7ZRrrA5m z3bu3wC4Iv&*U&9zhpqm)aY)CXaOjC85yNZKPFB3mg2x=IF!wOSj0?F5~Rn9nr0BCn>Fe3<77jO;KD`O4M3u>wjgeXU^? zG&|cT-7ra|^h3bIjcIMd`*exxb+&%bl!~$($8r! zygdtzz4n4w><5#5?2kzGurddoT>v8zkfo7GW*&o-%-5X9-(C>ohPggGbBZQjGxM&k zc4Xw^C#muD7fuoC%LWHyPtPvK7i?rSmhSFG2;$W7!8}wNgug5RY@+|r7oVTu2&6o0E%usRIToh{zXd!dw|{Q7#dsiB6pITvs1pXqtE^(iA6@A`;B zuxZ7MbwSp{;ml}`C??3^*ah#X?lnH8g%+#o1AHGI^3OPy%23_2)$uM*WIS#6=w7#P z)hI%nMC9RnY%N)21Ou0`zd=l2xU2Cg-XC!a#;`Xm;X^gV801dsDiR|b#XDz9DQp*R zIe7E%7RI0qE!qzTbai!`?Or zztN-KAXk^AL@u{`IA@}~(QGtyi0HSlUMiCLnpv*OkGhM*(FwznNK3BD>rDUyeR`cO zHF1QjLOO%lx(e^Fl_yK2=|CJh$Yi5mcvK?Gwd&}3*9eW0ciGOcD!iaYUP1d_?h~)S zx8hs5MNu@P^4q^+Anrg2P?;D5!Ij#V6yi3VVCcRVL~oVL!gvd>TeB@ zBS^4V&h+?8vS7@bIEF#DDazV>vvFKtP{Q)C$?Y zB7dur)G`Ucy%o6sr^UcXEeXS2>{QRLYCX1@of)BKlqA&L&aA4oX|~j+#oHdO88S<@ z@r_Ur5ebU1s9y;2UcfFAjSVxiLKkEnGt|a1uWv$3lS>+vPPWK_#4@~LUE&+A4$)&F z3fUSp%mlOM@WArCIqfv$osX=j7+OkLcz0!h<>u(CT{VcbRO+NDWPW*K%S;aAC+5Hg zg*H`}}ciXD=LO+i(W- zlAfMJebs+@Y- zAq5pS=!R6WT5ZTBOQ6>mN~e8l3^j$CLY3f0?|kDE4El#QB;ujbDmQM3RJ|}_Vftiq zUJA-#agFLxrj`yrIIP+B+@1pqbmxjo63$9Eqf<978tGUn^{letK0%+-QgOOx(In@+ zM%xA}1ZZ~k_Gz-}CIacNIwo`@X#K_44u9(8Ryy%mTXNXqz#aZiMiuDN_M zotKB*y>$qSBz#@oR7o3mr5gw~y4PgHQYf;T&z-?=k)3y|7g?+RO1mVuY$#fx!&#YaUG1XoFrmKLy@JBdOQ3S|dfQc@+7DZ9M) zy_vdGzZVDHHrG#%%>KGS4jBh2!TpFG8Ox zuL(KR`(GxKxbKd+k(EF>)g76zKY09$?i+HPMIk#`mZ-8h=}2nYC~(Ojmb6{vQJE|067v}=Va;WluEhmd7r*eQg0`^kIKkP4(~O9534^-gX>i|P!lyu|4-_)xqw6hn$ChtqJ#cGQ*1a>58;%UChF=H zr?ADLm(5Yobt46~3SQ|)4w(=L{{Pp86Lqe%9_r?i>SjjbeLJ5X+Kvo20+zoL3eBim zd9r0^1L%Tyw=QNJ-(Se+^u9(fgWNRlvSeCEJQkc7eAn(CpFbwKWuERak3$}ug6ETD z#b0+|H5P(9AE{@h-Cu}+Nm|owT>5vsj(T4|BhS;VO@>LMu@)#4v)$!vWS&=5caDrKnE(}$DvZ+kM(IQCE5mytx$GR!)9r^ejQUQe&3E3eR` zn~b!?gD;z->lvnZi%*dh-?=RqmaMi$;7>&oq*(7^Tre1RZ&thuDdP<}Z7=M~6DfUt zt}uR;Uu2rs9i4w}y-U_$HN7x8uWYu;UuYALtOZmSe1Jj6$%yc{X^QtNPG*S^x*y+r zw!n*oZGCS&JnaF@I)KnRjD?vAJCd4w;fjl4fGePS(rh85w^W6-?a#b3o8?@2)Y{@*k$=MR`!%Od`TgaKB z&Q&L$S~qWUEcc<~HAzScBe!RLT8|YqpjJ=Iqr%kB_XZ?D29T#1$$ZMXUPg|0oeT6A zJ3Y&pE#O->hl{iF&h`@SI?i;8yIMu>_;Nb5sZ9z`2zJESY5C3eq8ZD~la zOv#!KDazq;lM?qpu|9P8|Em_B(kHs%QJWTv-Q%SW_1FZoXC2*5f1JKPEw1E*gs1EY zjMdt|!d)N&&P=7zIP6}0VuL1PxF_~}3)IlA!=;hB%3!f|+5geOqp(?Av6fWjbm{{Q z7;~s&;-qh0DdMP|#E#hum1cah&0qRXHkT}%1VW^HtD$wi%RP7@ddozgA-?_xd~s&+ z7o+hW2RkZU&vSC56$8*`4WhPNSY6!P9dRo6grCebl*iUl?h;99EitI+2nH zE9K>nJtj%j7MTnO`@uH6KpPLkNpdke{8sRW7Kx01(g9SWS56L&`l5Wp+d|+!c%xlb z4Z_rJPt!ECIxctOa3cO+HTc;4ZSVnA4<;m>PTriZd2MYEK}+=X=%ua34z3>RFlT6P zzh1$94h)*Ma6lW8_lCQy^e+>;AVEk?~Qdn`PZmdm|1LxJjrc9Tyo% zD9V|cdzQ?n^Hn#297PUy+hTLA^)5>yUKj*|c(^P&C#1M_JtI*3IRJyLx(NMh-=x|j z9$D&QTj+9U@$Ks7U--6@Q#GlbV6j1~zl3BX-ngUvtXKUBxX=N(%tX z9^5Z1=F=kI2KFrVSlb5Js0gr>K1qs8Bx#r~v`}8Jccstm?P%06(bJC&iDNxlYVmq@ zjC_&eJEgR3!3^>rS`f_aKM4Z9qHerI0r~ce0IR`nu`j(4^LOX|L=w?Ce_6R6+XG2- zkWL*wK{WulL7E^63KA`ei_f%^wGPKY=-tVsiM z-QCpoHan}ne%|p?&0Yztkj>fd^0G;$dy~aZy0P&n7W4CD3t{?4o2B|^?R3B_J9dA6 zBvhm2#iOA3cZgnpTE`ERT+S3|tPZ{7ViBKWXuicu`O6Bg(XGnlhGW$#=U|KulX-vk z%-NF#20(dPit-(J|6%w=8M~WV(Q@gImz*3KH*Ea(YTs^dEGz&^lgvG!)Cw|5(ron4+6k^pG+v+BoTx7}YJrg^-!^9duPPGFJI$zDJ3OPw1( zgpCDyODUe1oL}Ftuh%VqL;D9H#hE+Mb1KgGHw1lDO3pnAaKi`Ka?7#AOKAEwz zqrdR-e@D$gye!pteDNyyC4?G*Ajw3|bt>!9 zP)H#hqUQ)hi9{-3SI@huA&?vKzGXOm-9{U!;e-5{y@zbVb`zaid z=)(VlxNAscNeX5bm_hzdT1bJ~Hg1BjrYYUjfzb!~9S$-S>v+F{f+mgCYMg45-dY`? z$hs_Q2UiCLrM87UyRy>*yZ65pzrPVV&}zr>w_^H>?hEYtnzuvm)4fQ%&j}Sd_XTyM!=>N6B2uWhwXeSC)h}m8+w4bek|2s;E9y_5V8OD=tH>JG(firQ1 zcjvocX#UEgQ95z=5>RBw26v9JTxu#YBr+Gx3^hZSj-?_|1E=H$G8?_3Lzv~OGL=l; z&~{8jF@BhZV+CDI4iy(x6kPULiH0ovGLTgd+d`2JOZDeyXg%rZn{O_usGy(dH4#fD z?UN7q3pCl^dx!#zc{XzvBEULIxMlqJDs|Aon|%TRkDE!ivk z5u0pU1#44Jj~a0&LDiuG&^0q$ZLYoP4+miw{D1TkQ6dS-DnNCuQ%8-gvSQ+_^28Di z!olfSq6rxMe>;gtb~^=e2iW_@^pb%LH@&u!#nK4{&wS|sMInQ=(3}TQ9e_kPLQFct z3Qa+QSt2H;nrIlO+6osfveJGKEh2W> zx)AV_s&^QRU`or<^|Tcu>D@YnLW*Hs0|s>07ViYzpiof`EFdrO@auk*W-=nB=D)|5 zRK~uYc;#_B@yKk0@PfVOTqWI4ZlFHG3s+LogImmv(*E;r zK>*6V|0yb+2?6Y0LK1}WpWbXS7J$0`TbJ=Xdbd8jH?uc0H`_tml+@`n^8vTB>|Mv8 zvZxYtl&`(kPwG?h;9Ha~FS$t-ZR6_lW+Zd)sy`}~_RQKci}o|Lbi!xKUp?fIpdjFo zr4neqzg>JO%--LMI?MiE zo>`+`X!VYOubT);Y^F-$tpIZW_fsa2G!3D0S(&xI4kqdPS|snkZqz(qdUSv+Fm&pw zo9Yg*c=SDOcsgLj2N@M3Tm+pMaBi1I77) zN(=BCMsfd!8p&uRuP}ixkkAdUcHSgyN4B!jQ$PuJ7VPUEIDpoxB?1JnH(>g&$A*zy zlK#D=L_>ac-fcd~n0`&jCUAmtJKgvNDlYq+P$)!Lf0_Vn(7qjP@EPc@03(?#3jJIb z77cLMAva8a^@h0ay!RL?-q1=30iu&FH0Z&a>G?qKxk1JgP(B81L4JJ}|L2+g3wUtJ zcW-lmy+SWLm{?D`DJOlyWfHYVLqjk`r+_)3nIJyfwtsyC9v@kGnOb;6fG&n>_HCy1 zFM@9nBp_q|V-vEOj6_1|lZ}_XeuGGUppkfF+Q})^t=}mxieMb}wg6$IDx57qAUA>Q z^*1jSND7Cl{9H*Q51i%P4^cL$Z1u1FgzVXGovyV#u~g|E|7_R@{|e$6a5@)6-tV+G zzQqFz$BarLEq~!wNGIlL>;v#xlMq7H6IuXQNPe9Brn>>pec>-UxMfdGaD5FwXlOUT zxYY>ZA&no?n^2R)ofME+OOp;w+c4q44TXVMV4C3J19C(UFous40GRGNi);GtX=1*M z3nZC?)4jvE`1IZDb8PGjH*3MVhnR16E}^P^VSk_4$xOd7 zsiLpKmK<0m?-c>m1K`8?v}#q99g>doRw-EMN*Cs4{Aa^&{CCBHL%PFhBY`C%c3mZc z5#t&sv)?=&mD4*2))JAVq-T10{(;+eCJUGN&j|vnA}fr{Qv)31F}W|X^!5!1tsVH+ zzGc(oJ#sd`ee=EDLZL{u*o9Xf4Rw}tFK_%7;ca8HGalLsVtRWgdcU~Z0Vz_>=espX1Qd7xX=k?$h2g6gu&z(5+ z(mvt-EC!!z<@p;qtN>sYHGGHZ;xFB*7wY>8uz+y6mUga3Vao))_Gfh25hW@e`9V;m=7tks+* zrqqi6J1u$3S%F0qp}^F<#+i%Svf)p?Clp5|m#@Mu0TAl#uvn+@M0}^Y!PDTguI%8n zYE8CwM(Kp;JVd80+4R|L0Ox{MW=#u^Y!HQVtKta)YeiIM&kBT$eXfrRgC`L*giuyeXjQ-#c>j{m5%Fcg)!(1N)Zl$0E0BOc@+y{3)=u@2x;~Y; zJ3$o#$MZ6^5F?0doA@#?#zqG|tjWK1qntM>d}7Z_JY50I zxO@|o1^yGNpVtP2tbafBxq<1RbAdZAdS$y!Gt)#SrWqrZBobms<s8Q#9_?0-b$Ye!bThVWkUz=Z-nQ3OOD&$7W-3CDS z?AmSn*!c=h2i`df#_-f(@QRe=${4-&PI(ke6UsWst9|d$f5ryO=hg})-}3-n3;l7I z{aA72%TDiNLn8QHM8)gb2XD1mNGmDW-^rh_;JtNvJvE`WpJ?gyc&!H^N_Fh6ZaEK# zj4{2fo-bW`NGD0y!Hx*Q7QrjI*jQjo5XTQ2+~;?mkdm}^*S2fwW$rAN-38c`{VX1B z3U%G-vBJ01WUU{AlubO&dg11ytRuj!al9{mvU_|ElRI05$dYz@e}6R8zGl$g=fFRg z(59?$i}Avh06UuM49fN9j)HV?g8aC^w-eD>`sg!)upWVh5$t*1?>{cVyBnx-S>8qJ z)7r-~ap*zr=`)`$`m0#o=$0}>cn%E!j_1&13?u%twdkG(z)d6kM8^^=P~CI1lVVvK zJIfV8)QDv{Kl}+J6uPItt{US)2=BX{;G)KqR%T(LzEr7`5ec+xma1Fh4+tiD$4x;( z`e?q7GhYjIx>(^GCH5wTgzf<3&=NhLk22b(?WleQEIK=xcu+rRfSGf9+_>lshNGmn zgbUW63@>#6Gv_~zHcD%s@pwy%3inqY7pyw=#xpxgD=V!($9~*l6d6$lL{Tl?)QpS^ zpCNryD(aQ1j={l3*q(99u0=2IVQFL%nfA??T#*Lp;?m`7_D`>hz_78XOZVC(WBW6B z2Ou9RDt@^7y||c9p5$;2Nw$~(A5Q~2c>-Q7;XN~g0LY-=up|(uYxwN^OzasDrIvDy1MyCw*Enz-I@*)e^y`N(WJpzSr+fgdmT% z(QuVhH*9TYQl5AongM43U9kxNGt}Q$$-w*f>x}%GOJ~8 z%yDa!Crk2wjG2C-Ce>pYhr)_$K?$!x!gFt;)7Eu9{o?zI{9(#{vw{$O{uY7mjuDSH z9I^BEQmX>8*yzr^LK^y}{iuhy31$9_fzB1q+T+XF9M+d0GHte}`>t*MD%+8y;nya& zTUO0;R*#4Kuvxqknf{k+E4O=gCes$YIZQm7V{8UQ{cO-eNIg(i#bcI_jAbz122Bks^}s;8Cw)CuU~q8=+> zhWEAW`W)H(rK#W^DqJbJYNzo^-;(66rw0SqxjE>#`ri3D8DK*WPTL z!2Kq?j9VW{Q34z{f7oIMl8^lRxVhEG@`1`@tu})809NI27WUu9f{j!y&<*Gvq z0Dfys?zGX3?~6h3^b604lrR*w6DDF&6TbqDfX6b>_C7#tm0PrYR3w5_?_{|oBatYK zHNIbe(;2ASwm4O!$N}!ZJ+&r@+=tfo%Hrbfz>H#MTfj>A#8ZJe7(pay{oMK~hOnff zyu=KP#cZ~Z76sMA)=ExJQpok8*2`l4?0%{z(BLI*%Um3QHyuDwL=2OgWVBkGWq`lb z!}2mj3Ast-w$1#=l4F^2cz>~$OH~-&&58fAiv-j{mN}*BxwD+y{6lH!@XOawM~BfA z8C<}Miajlc-fpMaA(Q)OyuLcG%Y`qZ_`i-;@u{4TT}erIhOb-{ak0V`3-!lKudMFQ zpqjn3xQ^`R=Gkh`=Z4|Q$ylHtc&~DCF+m4t^Kgbn;4IT=PfYY;tu6)qAuyDP6+92Z zQ+#!quLLCuNBmY>o7|+gTzQyaEagR}{P|Pl1c%r2_pu*r0V@vMcXvx6q0##q!<8$p z8YR_-)BC!*(StWPF6>9v9#*d95x@iJysoY;VhV8jwwBf1#2-kYF3C?!YlqOIOnz92s$DVRxC#o}9EQFDtVUOQp|UzxF=eOLv;#1=@!# z`$9W-2d%}#G20xM>Q6IqxH&ElWOK*XPS4rcG7!;;hWg4hpT|4^PpzLrLp4ekD-Wjy zNXW>cj10SI)gKJz%Acdp6~Ba=S)SD4F-US{unfQ5(4Iy~vE-_v)~A{hGcz^0WUY2) zz1wo=mSuGK-K&Cb>R`=tgyKD^|s#RAm9pt$cOKp_CEgm zP%2;Mlf9G0n@4>mCj(iPB?_qTg6LIcEuPJfTEj*W!7$MTrLuhQm;;bZT~7@b%U<`| z7+K-JMnl1fCNYl3kq#}}t=f&9a@*}aoh((O#z7tN+4ImfN6+|wiYu`pB+%2OfdWRF zJjM|B_C6=M=JkF+ii7S*StKMA)xLS%3nSy5=v*)l_qjzgt4bIY4eK)@ z|C*O4!X)PB>CdO-yO!Roe}PA)cz$UFc9_{$*V`+Z#A^J<--BtC+|jL0i@(c> z77;hC{0uv<%tX}czo_r{1z(qqv}Ia%j&Y5_NXu2YzGq&k;gaw zuKZsU6ES8`UAPMJQ*@qJ`zo~i_N(>9#mnbA38CTB)2UkUTasK-HR9Bxh1d+zhmJHu8U-=Zcggz@=I@ zZ+Gr;n*K^iirHX%kyUOauHjVgFL=Eeeb95;l+NTiqv2C~&vzwaV#1g}7vACV`eKC^ z7;v8;OeC{ln`P}m!jxb_kDY=r-lY%=C7$3AuQyg^Lr%WM!{&bX=%lNctJpUn^P8IH z#l_v^Ap6>AcGHcB#$poh>@{|BIiRP<>Pf=QtuOlG;&;m@Qan7o%b~c`==t8fUlAU> zv{tvg;Hrl9eJo!+Hs@^HG^r>bPaMI-rNtkhk@(N9XT%m393c3xW8*&by~LENKkx4f z=GzVdmd8aBfoIs@{z;8^@=@{oXu7c-jvk>@!zfZyq0&akOBii4VW*V{n7xbY%MGp< zIya)w(L%RsP!H0Q{o|TUq|Wh8O)A?U$C#@962C~?m2)|D(BRy+9(kF?lB4<7R)^%T zUta19=bJATW7P$Y%iFPYg8eqneY+Q#lAj)WJN!f~7K>+9g9jiI43AAG*H zvuB}+Z4j>YO*UT6lHFx4DdsZ4R@h3-VB^FFbvBlhlvqkd;YaOOOk?9VZG2@+fwAg$ z{p8%k4>#&cI@E21>^6s#LIYmz6pJYL3X+l!nyV56P+;SsIWhH1)PXrUpuO<^JLVWd zQczJD4ThYY>fK%Rc2P1MPZu>TLaA4{j{C4XY}6pT&DFp!8=In%Z#}{pNMEpyt(dD~ z^_5oo>^b;Nrzhk@%)(x)zAYteE#d?nb`QkG74XtBqG)*C1?{xc6KWzxN^=BUeyFvB zzv1<4)h-=%e5#+GUKm!D;+cK$ZPTMP|AjoYb?Oq4?;=zXXFx2dO={GLruy@3nTMtbS&*$74yB`3MRwpk&30#kKk+t^GTnr;6LCgx}U9k zStjPq?gz&(u2PcCKM2&4Z1wa0lJo66(y-|>W17nUvAq{TO-t*_#lW!9^ZR!*R*Zgd z&P?!Z-u`|sYfqrm!kTH(2f@s0wUp_1f46}un7Xili{YHIi+%@hh-|peKkv|+hzUl zz-JZUxTli{V4FPMN(hi!-a!p|wgZC2zCduuBmK2#h~-xj=+yS6jA}dIEabBN_JA*q z>QuxS@&ckEB9;|CE&Dvpwjbs7Bqyyjp@6|>NN8x9pS@P{tWvR-Aj2Z9yj+bZ;}u?3 zbt3+ZyoE-zL>;5Or=u_H-AZ(=#*XWB z#L?kl7fK3KkZnnw4Oh?puyABrRsFQwrqjjUm=H2DX+?2;{hdi~FC|%_!|RC^y#kH> zanz{_73m%c>A1^~@l`{bIU9zWs?AkK?LL;)#L;tUQ&T1nF7AmIm;2qQ*34W34Em2< zu1q%b2a5LGuUSM^x08(%$mowjBtI2FOLwFy3EgpVR+=uL`FhyT9TT|)rQ8du$kx@y zkCTn_F(r@$a-k(RUS1+))0o_j-4<3H)+S$AJ+`T7Rm&VJmX}Z0_|ye}ftbU?m#@)j zTn<(H$P?caI<67a-F`e=)dAQ0h@o1eD>D9&zulSNB3R|3ZhO&+%4NlJywYOe;M7>1 zLvS?GI=#BODgV9l1rLmx)juG@72cq>{s#=o@#2}|kLf~I0E}Hx0**SixEKr2z|7Y+ zLb8Py7f-w-BxCAwvNjy;)eK%L>Wg_IAN#X_q6^k4#MxS0M#lNWYMT}hco*Lqm*EL# zUEQy5mzQ4d$PRJwOzwC+-@6m2k8ndGu1A5=Mp1uKmYb3^6XjLT9X0#l$K|Cj$@fj~ zJ}J@Mo&p1PmZOS9#O*)Ov$wK8I<}0cUK6Ypli3sYoQ*EkCy#>Ry(5B56gepY@7U*o z>2N}dW9k}+PHZ^l9-SelFkRH}lbgET^7&yI-#0s}QAH}V`+|&b*>ksW+iIcYTn~vj z(!$b)@W+8Fbp_2y(>iM3* t|j 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πXd8_ogmcdb33OJc*H6pA_itf4(N_ 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 Date: Sun, 18 Oct 2020 13:13:28 +0800 Subject: [PATCH 153/450] Add activity diagram --- docs/DeveloperGuide.md | 4 +++- .../addModuleCommand_activity .png | Bin 0 -> 62809 bytes 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 docs/images/DeveloperGuide/addModuleCommand_activity .png diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index c6a0c5da5d..7f0063fe79 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -167,7 +167,9 @@ The following sequence diagram shows how the `AddModuleCommand` works: The following activity diagram summarizes what happens when the user executes an `AddModuleCommand` : -{Activity Diagram} +
+ Activity diagram for AddModuleCommand +
#### Design consideration diff --git a/docs/images/DeveloperGuide/addModuleCommand_activity .png b/docs/images/DeveloperGuide/addModuleCommand_activity .png new file mode 100644 index 0000000000000000000000000000000000000000..c0998d50a9c947b0460fdd419667cfb2957e1382 GIT binary patch literal 62809 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%0DGzTSVSii?|B3@7~)jG`xfS>xa310iDDy_1+z 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 z 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�pO-6cQGq=Of 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 P1pKr$^weQ$FGK$iV<*E( literal 0 HcmV?d00001 From 7c3b0ebf93390945c923e22fa0abf3f799f907e9 Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Sun, 18 Oct 2020 13:18:20 +0800 Subject: [PATCH 154/450] Change sequence diagram --- .../addModuleCommand_sequence.png | Bin 162685 -> 159317 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/images/DeveloperGuide/addModuleCommand_sequence.png b/docs/images/DeveloperGuide/addModuleCommand_sequence.png index 6691406b93d41aa9e7ffea6105d9c88c18f1f354..50fac485ac72b52ec736a02f6d41a28534f28dfb 100644 GIT binary patch literal 159317 zcmeFZRaBha)-Fg01PFoP?i!p5?g0w7U;%+a&@cPj zr^h+}`Fr$5-<%#}U%(4h4Axw8%{Aqj&#aJ-ic)B=iC)9O!J)}WgH_<*UeWnJ&x6=>FUJIQrD|=kXbn2)x*Y?M&`l+TC?}gtP3r41i7UF4KV1C+`Kk6Q&rQ}I& zTy)s>J`)rcJ4)j?zVRIWaW?D*x#nuj=%jhLwfX?meJr$o|fup zYoYUt1HL&J(XP|iS{34(KhcSpv>`0!s7XEWWpc>%Rf7lme6$R*5A53KbxBB;w)}6` zS8I>VEuIUp4X`dF?j2Sc;r%uhDH$}XaE5fK-?x)Wvs#&6d%Tm) ziA_KJn8=zS1{T7}h7aIz=nU^KTr5J&xm8fWYYFB+LH5+W#65g>a~d+mW+Ir8m|r-U zloS+P{Uuu?+{|~OXJV$}^a}L{O*9E5^n<~l3&cdWjrnF44m$j&wU$fPu5F4jN_g`7 z8*F!*UiZNnz9MV+A8uhH%7*g%ocMNjZxA4$Ib}`W#r5%xV#b1Ys~LXSK!UZ%IBHfU zXw_7??r&=&AdHeOoH3SvWdn^V{1D{pLj6&|sD8iq$i9ldMce16y%$=-?m5B)-1J|s zehjji%1i3Cd>@>}P&>t%edsW0+DzAG(eL{u4tBk%qh$=2IUOO^qc($X923uIw~c%U zeFv>NjnF&k3_%WbE|>Wf6#FyDVq5hpN?6${#+w~2*hI{l={h^Fwpe{ZGJCtwFMk0c zmTMkI^;`D5douGmZ~Ap%a>~S?N((Kh+#?7bSyhQcq_1z)RSe}D(mu(M;&9NlyX}7( z#J6XslM!Nx<#sidPqhAQcEe9U6%oQ~b3*^xSw8l%afRD<3F29M5c^Tu>a~oKLS3O+ zzrE`4KtiK%HauU;yLC$M)z!{@RLLuWebEERUy2|vBLk?(!{vpK?o-pYlR}QWM3!ad zs8&szlB5tz4u#n(AuPf05U+en4QfN^Mj&myW?QtCS@haqJ&SUsap#m;r38BuXs)s2 z)CoNtB|L?RD(XqMKO6_$ex3Dw z?|i#kqIvZvDfCsy+SlTPOuA{i1_y$W5BI>)k&Zt~!NMxFRa>(FGKW;cO15mw?&AWfm)Qj3beEigdJj+OBR=EqokM zEh98kB8xV7=V#UnS(xR`7$O$aKjK4!NU}gQ0#c!V^0uAgN2cmLWf}?uao?oGsDq>u^nxJnIvCX$i@clx#`OHg_jn{Ys{zW5Evy~lxrBfuVdL5%GS3W;i9r#o3qIc@EHenZ*~?q4gx z0U|j3hCYix&HDc)0x`bv+ST1o6=J<|=5nKB*Zti>c+1}<+FHXUGsk1`(dgc|X?xvo z3b;#`shQ&uXU91QWI{Xn`xUt%sw4bI{Oe??(>^k6Ew|igWbU7be#|%7m>~7sU5%Y7 z34>9|e7-k*x#G2eNw!#hsu-)d>;L7TM4&p5 zHdtxi;d{43GCWSd6c-icBjGP8y@j3i*?9>)1({hGJc*v?kn2gt_?Uis(rSo5YS`3s z-)rpMnc%yjKPPXGp)WTB&aW~m3}hI#;M01SPj+(Oj9=IIJ7NkVXb)qFpW{lkZgdb0 zdtnG&ZKNlsve89bdfIV7;h+m-Xry_v1msu0g&2c`PhuvY4P=XOzAWf6yniLj&6&8G zcKtgD6m@cTp}m_X=PmOVc4FneGX3;zx3V}tvb^m?_~F>5_59sM-x1N|u;(M(u>N1p zbPgvfU9Y)P?uE*`wwsZ=+Uu+Z29~eT95(NL^1_4;f#0+lF!2c#RR1$JCurtdC$?D@x{ zU>}6%pG(@#p4Fnc=qyJf9y zQhgLQ0SV^mn?&<$$@fly@rC`2YA!s+%1{?4eG+2>)9={8ba%fezX5@n&0fagSh zFJ^MTp~pvkQ+dA5g7ks=t0qLtu$f7sxo+1>>T$aL*WI%7DE0YJ_T8>j(o;NL244iE z-*x9G_55*GVj6H%;s~$q2W;@%0MbC54&4Mg+T?w$y-Xd@yqh@*~R5v?M;hzS+u-LylTpE`(?tB9s zek&-^uI-AH&g~fOy{~y2#Yy*#kdYwnGX7v}`(IIk^|8l|)UtcOXGllzZ=Vq76I9@{ zGY2}(aY6foF^aDJ$(QrfCy(!V%k9C{&0qG#*@rq)eSG}A-Fvtk3l9tc#aX$m-#6Bl znBy-wPo~$}O*TQCMzfVqp@wa{-cBXa$Re1|@1 z=#T&HYQXl`#z~I0Gb= zC_*>0&RIVE@$oNItTp~Qv(acQk< z#@@KoyLr@ER`VOm0-wRFwa}7^N!7A&*gY{9Efki6CbkjjZzylwR^#h^Wg@l8;=+6Rsl)cht%mq2>8?)b%x6Y? zj<-RBOpf9`;g}qxL%!_(*o_?6Zc2EmF#}%?s&&rR!<^P}=3tZUJ~?^Ebt;oXB~#vS z+35~B_I7Y3iIS>z%r40EJui~m1TfP-LxFh)pdtK!7dR?0zt(v6Ht=CbSzV<2Wq2 zA(V}#svYQ07$DVzWI;@K82iC5-iEmK88<>C9IDHiLzgqJUIdA%r32>jtRKpJp%zBl~l%7Qt66 z?yC(cI5|Sv_dxW`EpT(>=zOEjc6Q_y``S9Q`(R>-2PqAxvN z+88UH3eO_&QSX}kp)JOVe`{*j6;LRt*|c6*pCj}7JRvMOtH7kHqR;3`+PG7gBXmh? zK4}X219zq-J*_XkqRvu(o|w8KvkTHKMJN{`vtjLPC;RE#=Fxbr(R>h6iFoTHtdl>J zS1EBBy;|@~3wt7&G_H^PO}(;lr?Wf+)AH~~Ro&~Q2!3MY-d^6NeG|K6F1m36fpG!4 zsy`FIA>G@ea$9;l6$|nK$E*TJYUOJWw6!~J5{{!eS1W4e+}!~nkjQ?7#5J|cXb!!e zd%CyVCW%qlfw}R?D!o35MzA&WM5gy&Q}>NV4Q(zwQV<<;E92>)^k66_#(~49x5hZ@ zQU&@E#6o_LkG&FQL~&swsrdz7ghkrpP@4A%;Z6p*#S%nu(i~8gNvh%Kjsp|Kr>!Z= zb|fGe5IUW|PAu+equS>Q$F5;*T0!c?&FO72&Q6^zjRt#_Q>VI6Brr zom=yuxxXabH^$qCqzQWAq-G$V=N%&2&Rm~MK!&IupY}T}CETy}N@ffz*>W@=Ot|R0 z^;Ju*xK#SWjU%+~D_YKL^*k^wuL)A@98;+DnUS%0gv{5sO2s-o@_qOF+mrrLB4hR>>`ajrg}lY7xR(Lz zeoAR*Kw^^_y|eT^CxNTh`fLQ-nXGgc6e1t<-cmlCG;Z3NHGCX2Y2Zmn|5XCNB6SXA zG5nXHS)3I3;qaX8?6p%Vpp?iH%j3N|#W^DZ+puZ4c79)IK=L!P$Sza#Ekvt5WBgMw!;1E6VVq^|vs<=z=Hu&8idY{t> zdewszs^~uCz#N5dDQ}e3easb8U|;nP%|WHMMEdP*s8xmeoao8jOLn?4X%u54Z*M95 z+?pm-<9gpI4*~{d`VvscqD*i(D5PA@5R;gTEGEonU2}ylQy(_RzQ;Rz0UZghqV81O z3FW36Iv2b-CH{5(;RIwd+34N~9zA;LxxuARU6`WbWX)rQq+ooClBhwo>;E#i z853O$^iQL9&$W8@0d)8u#)V{T{{qnjdh*oeGViuFRqH0ylq|Me8$J?kBSZUO$I(Rw@kIsK>h%T`d4aM z>Vn7=2~1>aA^Jke?>N`py)-YODf z=@9^uxnYPt1^MU|d9z_82xy(xW|6FGMA5iK2|40NP3web91t}OurKD2f z`%WXMS#y(zq9ZDaP%q%X^MY=0hqib`$cbL zc<2gF1N*($xOH81r2fh{ZC8JpVZ^#ak}h{-v~TQME!L?Lv)&koL{kX%(Mz;tPjsH? z|5SS#Cro8smfh92f(>1#%FC8*jYV2!@9+GUw>g~1YrSWus{(baUs3|Hm+Aocm^2UF zWma&^U$DV$K3ZahgUW-xMoi&vkb|kNDaD5+3FV!<#&`5MIPZ19=u=stf(pLi-uGMC zd=-b+=5wQ3Bq{kQeiWYjDr#tvv|<#>cvBQH2aXmIV$qE1>H>Stsu!WSx~*Wu_euhE zU_=$~N99q<%z5?KdE3#Y7dRwh8tR{fSk>b>3ljH4=s(8`oyk5$&FW7-upG8xXGjUY z?4`sM^TWeYmv9XBR+!%Fqa;yHQ%HE2>~1mvK%hsru)Br0-)M4M+5p5g3Nc8>zSC(k zI*6ZnY;$-y%?F|gn*rc9e3B+mF3I80Wq<##Iwl! z(ZzTt=M=52PK!C(QQxW9JmG_Qw_s+|1WVvlf4V6`&ZZ0f>|jZj;g6?zK!_nBf&1mP zInfl;YxO(Nk(3Ls_j?wEh;GZE4l&k1b(!l}*tW>syv=fYRDjN#zO`S`VLi{=^Zx*L z+=TQWGtbq%*iR#{?XgOa+k=AHy|r~zVq=n%2@mEs98L0raH7`!&?s2yxvmW697m@) zk2KEUK3v7|;Kb4>s3MADaE0JV;L3dQv0fHEd5N!`$(T(SfRNYEa5E`hJ+tpLwYkaV z&Udc>N?oTKcN$6NsF{qCHNt<3SS={bpz9!zR?HaYiXP5zm<6h7!A4NWsAF-k(U1sg z%V8{jzo4O_KHfq0TJWWz4zN?gIA4;}0tN+d`JsI`qr;d(PdtT7Vk+r3A3oGPLlX#N56AHk;ZZ4Q&Yy1n97P}dM7}% z7)k?jpgL>l3tl~`e#BCa=aR51B8#HaQ0IHlZJxgQRPK1!bwL}BtyBumZp6}!+f1>m z6dq2R9*!f#(aoNvDJrH~;WN)5KOi)CdK;i7(}zRyz6k5C*&i%%W?4PSu;;euik{+D zW%l6@sdm$vQ&9(}ewojOFEe?oGC7TVK-JnNT<{J#oMvCoIdzpA<<;z!hOP_j^sF*E z?7LPAp8X*)cBz9=wA2$}l#?QJZrcMPd6W}6-f|O&Av(A?_ujKdOO;wKHa?4u*MtvQ zc$KgC9VI2f5Z22VTG?&IH3iI}y(Go5Qr*!DhaYvy-PL2$1X=2geVW#6^SV|iwEkD< zUvW~S^OaXQSZy7`RT4G19S5%0#yELHBEshg5|4uSA@ZXie()JyXaLGuh$|4CJqemQYQBQG7*XP%VVgdPv2JPeJYnI9 zz?9&_Ny|LDI3zT;9Su|h*nSP`QWJKU<{O z57*im4$!zaT%DTyam{2+x1D0su8}a4eBE#k?5XMdY1Ev%(AAW7~Av;POd-A;ow0S7|xF| zcxjI%z}}2}1LPX$eVx#eusR^N6k@SIe37_ieuzQrXo2REM$3+1Kk^DJfCl@`YDPTV z76%eG0`$jA%udR4ifsIl9ZITsY+;7dGLk>qAv-YepSa-D;GMEU!*1hkG04>cJ*r;I zMf>$Ifr!Jam^34J=}rEg-*y7aC)EL@TD{ESQFFs{&sBwxhR!Vn zJl51^Uo|YU2AV5ScKR?EonzC9H&NQa7l#K>3pS8WYI!XtPPE+*5<0*yB=QRUb*tlF-7HuT;03 zBo;3)g~a|GTV}sEWwoZx=A?4}9-Kjut&csfL*<@ezO@wJ{D8&pc|8iNV{wf)S0z$j z^`yELQWoX%0R9FhiQy#_wv)ddG7I`~;Pv9RD(@3pERg5&Z;rXW#{imXuM#lU8EAah zu2hkU>q7;AZbSpM_0ubMI{NoUrmJ(6H`jjeZ1|P?r@$P?RK-fvpS3@5-tuMZ@?a}` z9$WNWcL3+$Vd+*T?T~9=C7@*$)#znaBt9jZk5OfJq=tMFk>K3AA zIlj(XL{-(@U6y&d&sG*)xwU?m+1%9DY?bNO7^Q!Ows&S>VR6HUuVcH5tyrL~^rECh zU<25x(lIIb*KU2usEoFX%93K}?zPGWmc!rQR6l-Te>m~zr2PO#g86|FU&@FAXA+@u z1QapmiS&FdCKg(3SP||tB2O)`#=Ry=6snF${j_{IQSK(&1=wvjTZ5f#UO`Xp=R3#k zs-K$-fxUSg3$BNs9my(@>(C>6OR;y+k_t3gnak{6YD--S?JtLiQ>sJ1p_A#@X}P%# z|0z;!_t2+UQCg_pjH8zfCpc}$=ljv>;UXgJ+S!1p5M)KqC~LcNeInvMzI$G>3H}ol z?0hiGyBqzKT9c3dFg|HvA>4B~^3lrbN}&CA@61Cog6Pp*Z#mxUKzNW;XoI&!AK`83 z%{H14jR;_H8#5Txm633dx)B&k-~I;|pfZxyT~_eL&~~@g2VmEs(PWC7jP2KJ&6x{z zhwBb+$pkrlPB&1k@g)>=>z~@|!w>jQ=9Zdyo{ajUJ8V1zg)E&9KVKMS3i~gUvLD@F zwao#jqIgy)2NGJ!-@D;d9>IwU*x0s5I6<4&LS4e!b7vEuO?$UCK3CgO7Gvm8OICTg z<8_CBGaec#zeRbzMd$aI+GM1h-j?5Wiq4stw6DglPbO{p2lhNnwnuQUnsi!uF88La z?y|)1Sc%zJ7Yju)wxhU#c*Pk*_)oVrp-;XKSbI9TMb5AcD?{hbVq#c^ zqPV%X@?8Qsgw|KBy!*6wsgc?@fW#%1f&v?GSzq8Y)D;Zn6=@hS6b>cMr&7U=FO;Xt zPu2@YuUwm^ye_8bl`i&q&Rt&8r?p*<0qN0OvPFmeUxnwUB(?BOkh#l3k_#E%Szc>n|o_J)Ys!v}=!N!&Wf)u*=SYqr;kPft&moww2F zsMX8@(a9f2f5gUiZEtLEizowm(hwv!k74h06RqR#LSe$+B0baXH=(d$Ebv_}J>Y(F zlQ3RZCIa`ibTecbOAfB*IApT|w!{jhu_rkgjgh)>K2IluSN;yJ>38y;tg4;oWXK8A zu$NK!sD_g?A6*JJJ7L5W=K9bVX#RaBf(Ug=o+T6uz` zI=_j?KNNO6CP=1bz@T3(j=`lqzHYYrxtI|(G?w9=><34FT+u{CWo3j1ve?`r2?>GT z!PD`!u0SuBqI|avwl>!*pCGjT8qdxjC?1CLysp_8er15?nfNbYEH9)~YEb@>@Ac_;=n)l2aHCEzby&p2@fk6|zBk9P*y> zmHa0FTb8vBe@_b?ODXLAJwv~#dugi}iJ`f=w^#5bNE}>2@C)zoFoOUJrYVj+J;U9u zGG+~0UzKxZ-q6BLPV`c3m|KtRuXm231qRc5k66uJ-!Iw5jFr zgOn%XRYaTV<*r!Uc46O}7&|TwIXR)-&)tg3+Rfmvy(ZeT5Q5=3>o{=y+5MbZ=0)=_ zzBsFtD3WQkP_oI0FcI&+c{deoM$qp4gzh1EiErF=ZuapZAqgO)C^#{=@3SbtQ8|BV zcu$LLK$(Q~zF>$VW}xT$pMG?4VC=cEZ!_wxr12>2RU2^+*C9X;#3rWm#J>4*OAlUZ?vL#+E`i%moDK(6)!~ zH@QTy_PEr``eO_0s+27pn_qUEpIcix5`FUE2Or6Tj}*c6R)eeS(b(xthYzX{GAVP?@J2RctuJ^kC(mHQpKT}H`_I)Pork-t(NZ1t3vH2 zXkHH;0(_xsYALWxs(@hkcdNH}2Who(82B{UK44u(&wwv0QiGlS!lL0nApJBmi|^@nyg>e*<3-3ixzIT#H3|8Ds!{4f%-7 zK?kTc6h+mOO;*x)LdR3K;wxQtM{jBz>vvY&>L`UY=Ntd(Qp9vDu7T{FM9yDO+}M@~ zYf1`oG{%FCl53;Q=BuWrh?ilZ!jEY;DMw4aZNf(Pe8~P!da+w+IJu0=se&u6NbDa7j{G9$ytAjKYdRIOo~UZ13}rEfM5Fx_<2ZnrD?N<4P(53)AOBH5=mk!@12ekV zK09y)(Wz_NM5~FgC9`Q~7BqEK^{3`k@p_EW)$^#03gc|N>oeZ_2nE8dN6|40?KZZr z;@i9o*FXWSAMBUcth`9M=x72NNxiE`pg%-9Fk`r$Q$94Qb0cD)Nl_Pr_0q8Y+$J!ppG z_*D^|Z%UD>LQBFOZ4C$%i2dvL2yTj%^ej~~Twv~l4Bl3OzBvK5;qsai4$!GwT@8(= z1_*2RvBtmYDS=p$AM{Tw$tMj*=_24mzufLi$2^F2^vn(cy1zkzc$f6R0p3}KV>$=J z;n|aR288iFzk-fX9R^y3%PSM}1yv=a5rnG)xs)}o%(*c(V35@z(FB2tKw3y5j{sy= z;1%}ghlHqf2tBa4D;mZNjpuqBxIj=EAoYraD>FwoHbRuRyLe%2B%%PKLIq;^Abjx7 zzbJVJxpYuJV971Ga1J%J6c|5D1T7Q4E>S_ z7apSJXKq6euh};zqY#dGmh8_5_^9v5B!R#q>m4$~381Ege{^3Ny)KK6U>pm0`~Oz1 zHJ5+n`oNf!{-;|LII0d3AcOpXfG!R^KH~g{cLfYSWCjk?RsuL>o&N6z@<56SLKzF) z0=jh{YxT*2&gCQyb+s?B1ha22>j4-J;C@;fF-vc*{TJo0`2iukG5Uq5tr%R9P8#xe zc4kW76b3o=lzjwfH;G7dT_C8cq?#Z}3s}<>CA$@{SW2^J-4B`l7n{iK#s)Ipe{}y_ zERu;2BU}bB$M^r8T%jD-m9^&<p`k?Snz54^5IBrn>ogPliG9ADy*f~C|@B&zhq1bE)@GI{}?0=wv ztS;z=<`j>AOM<#?%W`#Eaq)mob_yk!Gdwty>TzG3b7K@N&W%xaE=hpbmG(Q=mX{D? zq8AvHC~;`RJ?~9T+B7DysI&l68>|BUPke7rK2K{n=9e1fa5#f@SUBj;6h?dG`j4o z;L}I2Gr!E$~^ufGHI=zk$iq}+7XVi7}- zce$Uw$f$W75FjpE2T{qqc&Pt!@HAA&OTt=Kefn_=8j8dAS3 zpr8D`Bknf%i1U_2^US}xdV(om{syMcpPsU3-`_E%+k^-ZR=X^8n;JXtk^g=G@EpNH zUjkkL^C9_%K>~n_L|HfJ0FKE~Yy6g!ht6+>R=GId(-Kixd~Wg4;KZ1ZO_{k>nIOk z$SSKC&i_-x^yjq@=AWD+lz$(Qj4@X6*GU_V_IbfEU&5DQB;-e;4VTn1u_Z z@dNN(L8Mcvi{HQ1SqriQ=Dn5UnKa6gTHoEqLWJ_yT;{l(nb z>|-VWdOA>bs5Tg}smj$9=!Hkv>IbgfDnnyXzt-*e0F>1bx+Pi8vXsIg$@BR+FzpqW zkIw)L7+-^jN1zn5bz<7Ck9j1`CPJp*;oZ5m_WbQ&1j}o8mxhZdqDd+U8eTd zVqo|o4c%wE0_^ptkUB*>b)GaN?3dXU=MeJbig$KLCWbCCw;w2#QjeSinD{7pAIyaL z3=<>oHJG&kNHe3JiNF{z@sDJXH3GtK$mxNfmJ5Mv)d$ev`-U(rqfEZXFMt`iW ztuY1fe4?_XqB7-&C>u0W9)umbdy3p|!)NR!H23>KzJx#h^#QV07aORC+gQk|j`zTbcqq&uJR7jP&rF?$}OQ&ssD-s_~CJ}j7S zrhTgSxVlpf3kwr@4ck}G=Bvk4ILE|w4c;N7N&%Mtv91lKzMc6vUVdk>_eXoT#IQGb zIa5~6)5#Uz+~_Q_AJGM)Q6l?o#+#_9*5=biQ|wBHh{C@X+1{Dhx=$L}=@V&u{-n(= zKJTjw&7YQxdq*0K|E?JJzD9lG4k&a~=PlO=-dgmYXdtLxB9Hjls?RQ|EO=hUp8gnB z__OfFe5qav>##BM9|j%RZ3t3@Z%Ma*X9*0o>>yDF&a(ntiFt`1sIkG%L`$P*J|@t+ z=w5(SF8!zp+0v7pF=;dbZB=)Q=1%FcOE@M&1EUTbLKSN8F= z9&o@Y#>HK!Th+tNWUw<^KIZmfIS2E+6D(I|(z>F2nXkH`;gMc7f2hsn;r8toCWF`R zJ^8XsPiA^Yc;8BgzZrkJkY!ltrI4^u_upp8NI@Hy)j*!J-AW&#VTc<~Lc(Q1Yx8j` z`)cXJmpSThu*Z{sm?|9;b*0Isp7zjdbq_>hi|qeuDbgUN0=d=B1^ z;MGW%k=&O^8F`r7I^q&igwX{dip>$_$*oU*)EDSlbOobHbXEIvgRD$U8r!(I->$LI z2<=fx34SqrwT;BstS8iPzMOrT%I$S41vOr5NY>{}W#>yWA4mt&K7?HA$T@a&fgfIS z3Mi%NHFFpbrzjl(^ugWnUGXZtH;}ouXEK$$(YoEf>{>mhR4g<%_F?)EzOpep@B(>(~qOq zC)+|zPWwn#=tS{%^&S4B`U|s~`&#YZbL)Vs_i_2{+fNLTdZL+{-hEBVZ*V<~pP1-+ z;&9rNxYAHR+;6vmEerHUiCi6}q)-=loedw|JQMLK=?nI&x`KGn7#R6&XSzeS7uD6( z1zT#*|Khs2y?j(rQE?v(c3{;TQ?s}2%M#Bsiy(+OvsT9Bz{6kG(AE|{jkbCEg8gcw zrQO3N%H`>iOI233tsCI!TEo`+Mg4AR#SFNAnBcT!f9a`xyt3VAf znc2>4zuNgJ+9c7v(rrT-lBWe+ZAaL^A=&Cc$ex|5>UeHij)d`n!}z_@Ic_iUyG+);6jq~Sf7$EHAj^*Fx;3}%JhFqe1-QoFwf`ONyuX! zPZ=NY>9)Vq25YX!S{Q6LaqXuas+jz{FZ?Mk6p;2XlbFXAurY!or4KtNHo1(V zA1%~7Z9G1t9+U7pcE;UZ*|^vKYJfc3N=+>n*&}sOZ(`ESg~-!=Sf)L%j(e*d#m}M= zjdrKIm5$_0bRx%o{-B(Y-BM;<#(-cwgX2b!N>l7w7SLsUos6+j1mwC`s=Y)mq0g+_ zYYyuxbYQ-nO12-h^gUf^xqotO5g2hH__enb*gAWEYje9mU~hk^Jn&V2$MWmUWQIXP zLc)$tG5yL$3hfF)1_E}2-y(0x&ZAPf59iHVmroDAEi6Ah{QjPUcXjBogW|I7zTu|^jx?-a`hB{xQs(Gi~1zno_()tL(!Go{?7({9! z+s-!OIU7~f$4_+*%at|l9&*k}iv!fn-0~+kp={(rw@6XkoFuy%pPNqdW2g(*uD4RF zvxN2gzZ7IX`b+7Qe-%kZ3&k>c6?S>F1j-s}-;O;o8}e-M?9~wYIQ21-c_wO$cZa^`l*g6V zV!{<>lb2Vhnx3uhU#1e{zc${~PPVmE#82i`f9)!$86148XehuBP{4Zur>G0E{1XrJ z(tVurYY{chB%L!ek$Ja)$)$j)rjF+)nrSwg@%G4$x4L~G)pcA1T%@NO)wubwuwgJ? zA#+Jwl@9++(Y(w2_m@r@3Mq~^Uc0;2jkzXEwf;y~i~L3d=K`VVUt1f0H4yM*+FX6f zksNmGUf=Ch6bxIbS`DxM&10rOjMC{olg`P z@qsX)1R$I&;ILjEVR=;*V-5FHFzO72HX)%4dR+Rxh~ri-;u3PMcv!i4@lsNFp=3sD z|1Ih5MlUXIPdlN=< zFQOPXQi?dBBcB`UY1?*1j;5H(Oegc%^bcli_WX{zkZfRW53nm`TnlWvAv89tg|W2nxpy@JB{Sef>W;7t2dZa`O{!lIg5?U(!2u6_JBL_U`h zUiQ7mXo(s!sXR|sFJd$$IoCl%b|wf+d*qzv2f9nmnT=LwJWOPiqQ#K+C#Nv48mG;? zvK}sj5A83X)zG}SsLU2Y#ASarlCH0-qUY_3zP@@j<1FNAd-vrf{jmGzV#Txk0;Xyh zjG|2c=}{M;i(UWizw-i^s?BsvllJ1Z;eM-B*Cy^EbfGZSQz@!fORoS1f}teWyr*&nU2gNlwwC-ioyu5ihu9Ew}bAW51q?9PA@#E7h(qofi+9hVgn{U%eg}kUbr^ zr%j3^c3JH@;5X$jE=Jdz%IWo`RZkfk6Y=^RN>>+vqeHgj%?_q7K&5zd97y;{zg1 z8YZ==AQf`< zPvLKe^KUcvmpo?Mq2Y}yt$TZi;^CxGrKRC1=>qkNmNMV>K!3|P=tkW87)-AHWyR;S zSjbs}BP+HW`cu(u?nm=*aThYaoLn3U?OeQW+&Zsngz10OZZ=-*$Uh~oNheZJ{~@mZ zRP(dxb|v9!sn@N1o7MGS2Urq~O8Q82wbjhlNpFGPg$}3L$S6Lpv-*^$Ph6#8*QrHM zPY=^MAA#bRIGv0S`*xdNe;gL$BOFbx{tlH16NXF)vVo^5v^C)j%<2_R7sR%vSN+=eUD%=bL6{wCg0cf)C)~ z7gn9i7{?Hff_`1CqWpmO>h%X0;Goi?awvt|6Qxhx&dyqbj^9t&(rew=`{MjOCRPn; zzO9c@+6TqOs+s%Q1eR`%`bt`VRI4@j;+P9U{KkOMPjL(hE#n8ZX0gzXkLuHP^~J~? zKUG6pB$aiFdvp2^^o+)`KOa?{f#A zC!EgnfbqHhHsfd7na^j+Trk#eG1i!KJDZYcs*PoK`p#QuF7}wp&k#g_WsE(pQm2X~ z)C;fMe91t>YdhdCrapO` z{e>)7H9S-f#8R{chS-`3i7vRESK{{OF;}29E2|8Uc;`HU@gF68)ci0?Rn# zlD7Spd2|BlDFd#Ah<}FzWmIVyem3e9KWecOOS#mycAJAvl2>Ch-@YmU9~(f~biPq#qHO&kj0m|0>4zX?DR-rz z!7;6O%xO7Z31`DI&BUh;Mm#Ku#`s&$*3uK6mr6;A<1@E9iI!SrRJa-S+br+K1AA^p z#g{kRiz+(%pd0eh%IcqsrQ(Eew*rkDJdf7)$8$C2et32n`0w_G%Glt3u;P!z-F#!F zOPy0B{?s%-oEKi7G=yU*9_j+MsOb6o=>9Q>1>k*n0oszJLzL3yU88C;-K~wojfU>Y{df{Mx#a;xU(Wu>RIXJXW z`}@yo2pc1skt|MTSt(iE9W+lSUhPj(H-N>L=NSqEmGh1TC!E9>1p#%KWB$kgB|Kvy zcU&~kxYVl+UwV)V>V&xBm@9k_{zTSXk7WIt*~ZexiZ@@}woew5^}_{eSJ3IclxsYq z$gv&WFYFm$GC2L=;>DrQvQa3vB=)Tqn0;DR;|8H|3g$-gK67`guGf&r#ZpP&Z?N1 zW?H@H`uhd0@}*KHz>IP&StdJ=gn`ehG8P|Q+vH2qGjrcw)vV1Fo$-YmFKNhg@oq7l za^19di7oYH$t)la5n$?{t;6Cm0HGe$|8Kj>48|Z@$7CLqy52W9OCV}i>0C8=iA(L@ z0k~`89g4`#tni9|)f%Vf3(F@+B-SmgM7+_#`1>_exyz)V+=y`?bX-Z(h5~~aC&C%F zpzljx&#OK)T1wQT9B$g_Yy>-J0Skdj9HzWXy~W8RTu>?K^ZDYOa? z(ubDmU)yqo16Os-`9@gXx7;;~Eya6rD!KOsUIk zG~Q|GcDmK5>!Sxi78k`i=BtbRolT6ED^kJ*fnU8%!GP2BJ%uN+hk^P!?LWT74%3Iq z7|)xhU#r#I(J~A2Wt*nKNk>)ZU%J_7KyNVJVf4ZfA6u}{c*DXY9>#(e{@bje<)ZnI z+k%_}y8dC+qsphjJYF}dueq@h)M!Eyn>1KH$q!_PEo1*xGAT|Xnt(4CB%34c7bm-Lm9vU)_ zm1E{`a^wR{8W0pb?%-|7sxkX<{lc6SYO2kk_Qc9bz#HIN8$KhP%>o?qe3@k||3KWk zjb)H~FZYYQiDZf@uC9rE4*ZVXaVvCr9EtJ9dx^v%ofyF||^hU|t}nSNz#e9rF( zg5FTs&@7KYU=sNu7!A{M$I`P;`rR+S!@oF-AC z5+q5Fnxa5Ji%97PvXTWCY~@9x7P3xn+(%_+{~@|)hxUKKm|qOe=08sEEH2GgMj*fKk?ZxFbYrSV;+zC(#aL*4R49Nn9;-E9@4Bh&b-KY zrPd=$wODnfC+AQPdotmmGBbfdYembkDnrx&NBfJ~%)YPizWbjq(s*aM)MO;5| zHt6wyis)iwy}fz3Qs%>R!k*+9Z0<2{j_Ux5HD-j(iffc?DII}y�g{6XaFi`evP( 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

$C`Xda63_+d$c+c%dHc{L&jt|xruFzl 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 literal 162685 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]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 t|j z{{}e;ea-|`xGfq>zHsROILz2B?m5RyKD&%EA6t3s6R_VAaH4LRHyz=uv_H1h6ZGHd!*MqmPkW`ynZ*bM4Ox?_V=G}b@>lrw7v(kYS38$)8^9`>D zhgYqzWNVv>T{=Of%bJxcoAcSa3;}_hbZvvu{oam+8+sP>6zn(qt42-%VJWut%J;`O zYO?23m;=6qj^S8N&+;Vlf_6F^4{K(<+x8-UYv(<@R8ytgDU|5VW?xzM%N=17ryJzt zEZr0HzX0!Fn%4Bp@c@;6`Z-7Ggt7dPq(xV%C{>QUk$cN+XG*}I@5P2fAKu$u@%ou9 zr&Lbl-d4u)Ct#t_(|zA&wR+*Tmq<;FrhAU@-Y7Eg6HMW8KI3henMK1_EY^h1W}X=~ zGp_IGkTDbLYZnPZXrrH6TdS}c_HppC58rtu^cQ@3SG~Yw(+y%Rb?oz>P3`ZumHhfK z#ga`rnkqrKLZiizD%_uB|wvl_JY{ECtQ!2e2lHg z&ix$6QtS5q&~OImB|uBoQwfQI6cpc$2QPiaFG-sF$H0` zi{v3yD=f`~PLWbiS4}1B43=mRH=T!0l-@16Z`rGar5_$)6HaJ9+e?Qb_=^&A_Wlx=?x))x8`WV$3gNdu9k@qq>(y#ZjD*KU85m zJC6hLKhx8=JRWc;==nfr4SfU*)uq<;U;udxhIq?@)h8D}V&8`#2Hvb^(rB-NyqVj? z>(KWrVgtH&TA?6?D-H2RsDZ^Ee9I+L2P5Mo6mFAZ_8jR1JOR2(|00n%#PH~lsEti@ zmJlr>O=?$PHRp>W|K#DRdRR^+O3%E$5WQG1;tBMeOj5pEuWqz)0r603H}g7fw_~V) zgh-TS>Ni<@z(@7j*TA7z^HD%DvK{fFGHCAz%o%34f1sg^FYGR?jFRLB}civ8v~~GODL|?C=rIM z?rLdGI#EAT(=o_{bQv9lPlCrPO5?V8tt|?vKS_sfKeeQ0A4_DzB{StrHXX2JOoZk9 z$DgES{Z!_IGlo8fPt^ihTc6DM*Q(BMY`94=eCs+`TP!F-Ib@--wLKKLpaVl#`Uy?v z@3ROGnB-lKq7=%CvU|aod<;H8Mnu>t@I>hRwIlC*eGHQjpod~u5F>loIUvSl1Bnhe zL*QN_7J6!%Hg&KOyMg~yW(#x-RtgCjBM7VG5e4x{Xob(!IU|&LahD|4LAGj+i>n5f z%+FUIe+!gcvfJge$X{BL!p6$ci{3V#Z;btbEkUR%`tB2A;08*1xm4edyV+r=1mnIS z(NEFI=#ebx&vw0&4pNJ*G1eyAS(N24eo`0L*GN+NEMJGw2*%N{79tV;EQP0mKbn{+ zg&2MsB@h$J@q0D1At?73o#KtnDOX$lna9M67tHzH6?AgtA3_^eY_K~eWn+`;g@^9s z@sh>gn)I{p9e3VG5@68BafX2FE$u(q-ZlS!-%UIkm#mz&HuiTlZD56356)l{)z(dh zTixFfG*2Jw+HaZVrZn)JG>$kNt@d)thUg%p_UROjckRFD{ozw{Ng#jCXoWvCS zvx+Pv%>BnK$SQ)U2+Bu6zjc=b4YyVSLjH(wqiaE5ml!^rCDr16KFaJQuGs~>5N-Z2 zs!&FEZ9R&C-nn<_&>ztV7MgOLwW)VLB(Ndi_54S%!YQ@v+F30`Hn9_ALrJr1mVBXO4EgU-O9%z=6D zCVe5>YVTX7nGQ_Bfqj?eRwHPzBNoW1$ZvC{{=2r&ST&xs;?+V4{%A31sUwa}3RYF~ z#6?2gSyJiJ`3PAOK~$6Y5|Ma9*?fj+9mJT*$uKJU{9U(atS@Bom#iPf8KJ`$aS;jP zw^AM&wz!W6&O5g9zfGw=GIq$0mRr=lFt2lka~SyEw2aZiL>}C&Tn{W%ESafxTwb?D ztIwIOT%SgagdIE4o7o@xk(uQcR1k@od1ZT^5d1^W-<&%?>eOe#tODaJd(iCQXI z6l%OU43l@3t|>7ls<9?13FM)QXI`MKJ2saReV=?4l~|OJElGl-P1C%oWFpx-Vk;|6 zCJey^%i9EY=?d)_F(Pi!cOXZ`2v~Q&E|Gpo+5O%4W76S2n`MzPI)%A0BTcbHAg93X zBw~=CgK(wdJJmdFLCFHq*sT=JwQT(_lA$EXPn;ZOe1{k;VGmv+u;28`kcbj7llgu9 z=d8yt`2}LLKa*lBsYOu^*+hSX?Gg|ORYVH<@FNZW`!BG46CzS$_AVE*fNL$y*5lV%xppSa=X6zMfda52rOO?~Z}#AYIx+1% zs46{7tnMpOP&oJ~xKl!Ck6em_tLKQsbfInaEqXEW*&nuB!E;?M+v` z!&t{RriH^-9i4b}!jdXthUuc-AAxi~u_<)GC}d0fZ=-7!ec)pbnb{}#^=CRL$;2c1 zZpd5$re`xc@!cYp7jV2_%duFfo`2=eMR4s3d{4`~zGvcNVgf%2gY2ea9+v+(grje&3=efP3i_G4( zH&=G?yGaL?NA$xYlRCrFpVjNiZiLxv%n|uBE zc|9SzNtH%vI0oq_Z*i+=Vy)|U;baKYzR%&`uVD7W`rq<$3)Ze*Vo!B$mEXFF#~2$a z18t~`TCs$d(4fm$At@hLUxG38x4fkJ6mtneLJYCYv{=-oTZBEsR;_Atc%#%+RIhH;?rR$S|#H z?oG`miaNf-Vh+Ow+LT637j1DX9r2&XCPfS{V;o-2%r@a=S+kjE^kx1P9Jt@1FFyBF zaM(4O+w+r$314{ZTzH)8oDf!IVUsvq=-yc$AIZ|g0sOiXkQzV(o5w+-kuS;b;kj?m zo7Wezc*RPwTsu`J1CKYNvfjvWS7)1`Cv}QKJ>>KU9eq1?MM0<-_Y~6qyHZ?y_t?c6X&tk0I&Z#6u%zWnnz6y?Vln_)4VONGZic^p?`_YSQbp3Uad zw->V-Tzo_=?zDyFr)88rJ(UG~OH68tl-&CUS$xUZIQwB{noK-#*qSTzYz@UPvr|Ie zq$TR1>uc)zY$N5AKOJZ7t%Hl2??kM3H(m!vJ+I*b54i!9j5ZIc4Gjq9o}MonOm)HY zm2>y!>bGC4Lk4{ra44CP=~>zB*ag~^kLOC=2qdu9H7ui@R1hGxhIYL+5SVNQ3Wz^U zTJ{LX?!HgSB``x$8ot&ykPg>%D#$*ml@ecPop4d0+#bO_Os^Rnt8=v6mxU~jQGvs&txyl7W}~w9BiDDLVkj4s7*_o; z+MTg;s~=1|wyjQGz8W)qHif4%LVRSNMJo~i#9d!@+Kj%qvT_0g=pBcJ5%I=N;JwTf z)PlCo`#=IEc8EzZfDSizf2P)2Ti>%YDTgD=RL$L-WNLkWFj3pro5E97_1WUn;_)X( zgnR*^j#c>R4QFQx#Q!?7GcsUW6-m4x6D{j<$5MQ%)lu>doDIX##BpYbiFR)#gAt5U zlIt2;k{W;6i#|MEtTIbN3{!BWss~qf<6z1ZhrB+n+K94rEJgLykG3+ItI#6N_mJ+D zJy`qOvR6mZ^UlY`JcG1joBHr2iF=K8b!0ubXp4F^gKNln50ZqtR38b4i@16^9>-dX zo$peUOI)|uh2-fVzi_}!DCW_qr`B6VRB+P{HgDS7{mf#S$|ALS4+&0U-d|Dwy<<(EAaoi$#LqA%y{Ju4}HCBi&AoKtS?TwdNY`tgpRkO7Y|1f(Q}kRDLk z>ilLN1YY4r{CYB|W6RwueK|ooESaH=B9q4PQ4vmHS=#w$Dm?FedAGckb|ew;qXQ%@YMRJ&wj5D z`C%*-_ahS-Tv?_dVZ(em`elPYNCA+-+M#E)Hv-6@fecbQc5GtD>!8$kDmCJGYi$L8 zdQ3?_Nj%LjKgE1EQP9#SZ2K#&M*Z(pP`3~epQRrG$_#1f`cqQb;?+nLg24!jWY9iV zsH%^r*4EMgtM3EY=1%K>ey?e`kNgcfolPb>ot4>y&R1Q;4U~6ovh*Y=J+?h0#ZL|8 zn54OU4J^|k_UIsT_|Oh06-*g9McYMfUw4|AoI7znyuhdWS<>fe|mCj%1ybgDYgCKU{p zU=Spif#ro%D=B{ z@!$}#Um0{w)X?xuhX`bLFZkdj9A~cDXlVBF?`bIhAE!apw|hsML^moVy{2|E7%Nc1 zT?x4dnFcOUt1ZZwOQ1%YXt?79QHx#H*^$VAp50+J{3zf*8eJ-cdO!@0AX%rtLUM4< zDEz)=KPTh6zFKbnFKkHJ(?c;Ui@l2U=U6b}o)*k_fHNo%HK5~YO2wTS4;qjK0PoPM zz{vW}y$lW6@#c8lHa89cl=CdJ0tA5oURXfH*z3X=JfIjtH^?4YrY@1ZK1!;wAPqy` zPNq1CZp_s>2ZGpug_*J}&o8I7m5Pft3=Oa*8ir8dM~xlVW{Cxkv_Kp)89JaL3M#Z) z6u8hi;#2mt_&Gb?Vf9ddw_E<=)k(%+-;39nf&sDN3ior+f;8tF@INhpovRK77XIOb z0BA%j@>ofB3oQpwbjuap!Wkm5XQE{o{bgWLlCmd1DlL_j#O5z(S{x33{TUp^pojGS z^X)Of@BLP4|4&EU>e6R$AZm!fen`UKm;gnHYyj!5HYj`>Kq3oC<3+4{dGKNZ?=)Ia-ftj04I#@_D4{I9K?+bpg%L{vN{W-c`gbnF#+f@0Xz;5 zFdETxr*IfK0(>2Vut1myAVc-zT$#_(pT4`t$wI;Zz3WD3|76Dhq8J>NJ^6pm_J|oY zYw)ZOTEQVB+q4&N^u{54H6>3!Yarg^Z$dw^gCcX@Zr|SC)*<43C;)GRF@kV)b$>++ z>DKYz?mrWy9lkki*PdNa#a2~)xOGQBK%kZD4NX>oR zX!>>$AL8lu3BjRc`&K~uPZAaWEX}KUYB~}+#wr-n? zjYOl$N-v$jfQX^-(bXDWcJ?i)jIrXwo{(+1!h+YWMPJ`hlz^ZooG3i|`6T0NnZZHu zqS=ayi>rYFg7!`(PY*iZ^73{*o@GPo6qm6nYBC^BZL35fg#Vv1yS)nh1^$!}|D{_7 zRPa@91^kSXDd469R%c4cC_N)0-aR8_@4^D!(&OXPUUiv!*=*CvRg|sT%4%wkGQkWT z0}kf%gQiP^-u%TThe<->8G+l?&ZIYF%@5OUQ4uX~lZ%R-FRpOxbdl^LMz-lWhhQRF zq&sl6;^bhG52?Eg(z(BHtwJ=>apn(EfQEmhL(Jr4%r1k3s8ziG@~mE}QGaAfxsiYx z$A4xt<)KR<3f*+biw-53Y};2$`rXh9W4`hlvrPahU_|@ z@lI)qs1KM_Bn;tkJn8^@C@$a1O6VF5dVepIuqlj^`RaFNmE?7YbEG_o+}Iazd>LA6sG^@dLl4gir2=8-2ZthM+iA# zO=akD3VFsQL*oJs%w%Max7qo&R0#pi{Yndx)KM8W%W2#jRBh_Ucjr3Q$k~?=pntgr zX!D>=LA|?Jd3IB|ks`eHZzPLJ+F(RKH8>dWEg>3J!(nIOejGPqP^UWQn}ONo=3jzr zK~bGQzpCn@G6cg~P1VTkj$w5Dwtixw;VnWk>-8Nio?)X98WA?enrtvaWwPc>BrpT^ zyHY}CN>6iz$wU+6z=c{p zJ?R&pE%5kJN;xg&9)=Rv^)_p4R@Qjl_Zx2*{{C;cl7~mzeIx2pES89o2F$gK8D*NL zOk`{_gotF=abZhq`O|>U;MZugj@rNR<3bfO_ysTl30Q9;m3a?I+<5x-wz4~0}){J?@Kp#lXM$&aN8T5vHRH|qfm41Fc0dJG-e1E}C1~mC5 z8$4*V_$q8F@cB<<(E9zGxXYoL8rReo=-vS&0ejSt!twwm#140LJ(gQiA#G@%S6^_% zG|{CVgfFL1EZ>Zdl2gNDmQJggP0r_|W7Lh3+Y^pMC09H$U+@;kJ)34|ZK_cc1{$mF zxaLX2eYF5}Rf92neV)L{VHr1}sSn})%-{6UNi#*HqXA~cQ+;5Zu4$Hq447o}gpuQ)(%YCr!fRH3-G7Mq@6ga)xCY~sUGdQ~m< z(U-1Chis!nmOsm<5p9KcsB7coud)YlPfMJtb#HEcU*^Pk*K;Q;&0+>ZcUo&fm5nu> zv#`>4SxXZ2B_D?TF<-4H2nhS6Y}yHWbR!De>9NAWOH=}nviZn_T&O#wOI6{A;Yyt| zsb*L?C&r9xf!@6^-lY7N#GG}K&e_yv)aU6m0eTwESPnGA>@(6gcy<7GU%LgYjkE^4kMJ#C$xFAm(2 zCzc#C;^rc2oDW<{w=e*JHGr<&D?4Pzc;xN|1ioo9(uqZ744)mPyW|HE3Hi?kWc)B2 ztVcv|Ynz`HHBsuOGoIG5aCq}w?cDeIQ{4O57%HO1)} zGVwI4ek*PpkH|xN>kjfx7F9US2+|a}RG_C*P^doUac!g1NN5E+sD0y6^1P zN>?XeLLaR-lE%TIk&b6u*JLWlBfkLH8;1#&*K9kfWq2fcT=1fvv$cQS5W;*b05HRG ztqjdDvCcE|0aTk8(Xc@yfGOfKJr80e;Z}y%C2pBS)1%%fawlnP0pp>;-z9BNFBiI~ zpeRUG|0hMKGqRrk&r1}r`x}0oc!2CY0*{jELWb}^nxFUj=s+HuRXym1&`UEdojJ8? z;wXK!R`OwEGlL3k-zWk~5aP@4CGd76X-aGjUKUXh`~@)_z_|Y4xJ`r%45W56i6W4S zAK41rbl>5zBh{Ylwb$P#B+G|>8;6&dq5~4UCgPfg{p|^G{|BVp@p`$;1>3j0mgkhY zTi`HHS&VtP6834DWp#NdfBvMWE?h*`HG!yFZaOqi<2e6`+S>MIaOhVOK=C4sI7@N6 zv%J|)IBR)4^F@`0U(eBYTIlya59eZmoDOcJoDoNrQ0{bTP>n!dgHIp|u~Up7DMBsa zfnzN7c0$XknOsgs_lZShcqrCeq(nZc{*(RoqTIks4DU6I@$)0G$K#pHkPbDc7Dmj5 zl|6r@a}#6C-KPgqE+LN#5r~Jp+b_NLQ~7Vd864)P4o&s8`|vw2Q&bSL?l!u9=TH0W zKU|`$gq<=0srvh~oIQZ!>%_aq4whFbcS?{Q?wq1Jw*lCwh`Ojvzc>AGU^_I@Sr5-R z5>2M0l>V9lMSb*{*v4oc~-(^HPEye$4pP){~((*M7a>`5rDhmUnq zf%sclPW%^y^gTNhiH;~C=*i~aLv!U4iJq})l%pJT%@Dvgn=DY#0}-nYuY5c@8v722 z2(voIM4d{)V)cx~Fwn6B%1{1WPy|`7*L08IabB&fX>-el436V^fZLKcD=oq4 zP=^huH!Sh+OV8%jw62EWK-gm0I|B!ynv%01V@c{G?vgtYAdengo@N zlnH0g(R4G8nz~0kCVN#-gz<+^1@&<3n9{-%AD^n(l*{6;Uf$N_XWkj4v(;7MA5xc> zKQPP@K$?XjK0Ij^w~L_X9{4C@g6R&)oD)(cOe&lI4M1=jREmd(h!N92zWmJ?q5syP zlchbvF+Z`P1cxU>Jt=;Dj}$;Got@{Bzhx5>qc-X9D=7UDz9y5NU-K1nUB4Dz!|VOk znGGt2M?%GP;S&M05Gx+?8Z5{uu>db1*RZlOruO#(Xjb6|9@HK~Yb%|`WB?S6B=yp% zGHrilV)ZV`-rfkFg=w@AL!J^NVB)9~T@d?pO}V(OTNij*F5@vpQW0T%+fs4NmqnOZ zTht?rDHBgAkv=+r*Wx0we(go0w?Bfw!mdCM^bDF5UvhqF;k@8l-=~$othZQ@H*kDu z(FwWBEMthopbX5J-GO2!FvvDroR=N+dV4PCs2>?uPbM3VcT-8E5y>$VF*ZxZf$k+| zbg&1|vxVmVa6O)brv*3nt_8R>|0E2|{}M(-GJLMS0!>{nX$ZY!W#?6-*Q@U+ZJ0*0YxeDhRQx{27d0mqL1HKzzu2j}QKGxdtpCChzupEDFMPfNMr zK+zlCh~SJx0nxB1AzO7;(P#>iClct zJw#xR{~CXA!^$bcvu=LO;TU9Y0lgKbWovEnP2pWI^_(wL6}yj>F;-Ys=Cu_ZgP#wR z(b($aK=pBloa${{;b3F6WA6et;dymAGhrViWlvsYwX8 zwdJDy4#J5!5A7Gg!PeRI3-G zdLIeiOG(z31qM?i-8 zAV5CT+F)e|(_E+?bf0nFjkb0+4z#EV$A@%%6Rs3&Gj(GlNd`nWBr2Qq9u5wIQZKL4 zxl)Z=cEyS*ig64mvq^AKp`-C%WdWu=2JPTrCh{jN{1obHIgU&bXjzuSo$@C8@Ql=^ zB+|PWA*s|Hb=ekvvS*qsjWyWmiI!BG6E0Ys9^t&W`i5nE&>Ei+KCpZWN5%-dMZ0ke z?F;93a*u0aTT$@`6KO1tMTwBfpWE#l=Q%l|7E@p{g-ApVVOEa*Z`1LC9Z-BABQjoH+*ZSliu79L4~I#>~vH zO!=NBSE1%GBqK*+1}8`(@ANxJtbI(8_^D}=hF|ouYZz>g2Bb&RaK`IuFOfk3B9JJX z%t4pbxIvJ!H5=OoXwf|=_&s5fH^blAnN8F!qn@>?!p`3Q;u*)m|CYt8U!>WM1ZaHp zMHN4%Byg+M)w{Ucvp26w8%%Kag~9vEFc6q!fOWY>InX2|y%yDK+;$%1bYmON`#3q( zUeNJHlpUAc)I{b<3~nQ#)5~|s5^%>f2U=|s@4re5ea`GmR z(RZ>tWmq2RO`=5G#mn5lvZtJ^`g2XcuQD#};o0w7(|&hNSw^+x^34c^h5Ch?;$h5M zm};Hp5dZF##9lrB3#+N1{de)Bl8X|&Q(*f(&P$@NH}J_?cTxvE7&ey5l$(FoceE?g z+6T*R!EMO#aikuM5izuettG3 zfbPxdRX;$nsP`I~wh0xZlpRKYwzgqUu=J+X^Zmf{_$#u*i{b^VhvvK-kta#M9*W7) zWLJ@T(6?cE6F1{h*l*5RNKwyr;3qT>?!ULZZvW{HWOE;DuA+*)qp_dAA900wA5Wi7 ztUhTG=r?~cWwIp$0#4t7wKi~|u|ugbmeeQAN4h-ZlBts-o(VOvjs#)NpF`)XXmLoE z{%0S1$_2o|X@NyBHbPKAm*5hT(v@-&_N^VkY#}811O$kZ2fpXvm}e z$Ac%*;vVSIY5Q$c)u1zNTT?3Axm1NpP7>E^`0N34IAlm1yWOcfmc?PuuO{t4;J*9T zQax4doC?54`Z21w9B1XTv>+2y_iSG84l+}xg`DY4`oPWWZ zV8_d4faf%TIGe6!DPI1jZwGw;vpUyV2RgP6+6N+{W7E4UHvY}^!ie&ShzR-glz#Ai zRoUA9AfJbz`8)=7)cr&E%E_W0VPDj*%Dl+jGIfP-a?m0g)wCau>4lEHdv^MRNIurp zvG%%#0=fKD!gN`lP;PF^vKlHhhQ)R0fc0l?2HD+$d*Ia(@Tk!6kkAmm0HKaNv~0}X zel?wdRcM9^p)g7D?|!|}EaCd5%!SFV<|L{xvIK2kx$<>XPZVst)KP)DJ* zpLJ99Z7e--Z0I~W0qOrxWD_+sTVL5!=xRoUAJzoBzLOrrjZAvNQ?6R3z#@vByCf}H z*5WJOe*t%5dUs^cCC;n!X9OwY zPnacRLi3biT{ez+2iw~=$~tgV!r`3L^%KlzoT3n^OKV$*Kd=pdzz&H?rAqz&jizl; zg;BjZth8b2`qb*V7|mdc#Fo^a9Ns|$AV9!++RMrjmcIJwR}ZwzGXz8lDY)w+?MZIv zvo|}Yumu>F>mWlmBqgpto||N;UlVM_c{2fG`Ckwr&{<|%xlxnEZu^%e5|F|S3}_>_ ze+&7kYA7d~Iu{HHWbxpT0ae_SD41M-=v_dee{me3oAt*UrwaN0;L4c1Y0wN0n(ZM{ z%75BNDo*B5^w#t&JXO?cd~d0C9}S-H!Ysluh5ajWzqcv=Nw0MtnNl|J2OQ&5^|y_&0W36OQ13r<_<>Jg@ceB3fF-zV2uksW zP1fg|-g|Lx_SP}K?4$(6>To?;dJ>XWL2rzW6ROx+c$6YRF1(Qmt|0b5L|}F_g#f4o z8b)^AK_Ms*!fX&O9{~JADX*T50+t=WWx1S*mc+}doG8I80)5Abkx4n;@}1Gh*_~kH zq>t;4EGS68zC^9NTj|x^+xBKm)3z>tWWUL~oo7Ysc6PbZTBvo^=B%Oh)SK=8C7`cw zTo@tZr!PIW&KMZ_X=#C^iu);JQ-GYvpjH3kcxtFUPYh`&kX8J(2U_=QpU~6L;{zbm z#PLCXtiPWeRi9aqAL4tsgn1WuS@HY$mNS+7NCX5g5>oe6>1$-jltmO79HT_9OPv@2 z6WpVjC7wt+D%C@EdYb*m2_L(;BU>NT^kR0b;tVcAQ@PgbLt?4faOZ@L2_XTy%xhT_^`{wU?)z6FX_a`DGEO z_gGTcNj^t7 zw2h7``;8jwwt!1uFf*g?rxo$Z1Op?-r*@K!m7d+=uilv+88kGJlymh2>e>8mLBebd z9{8dDdiqR-``qS|sTbhZp`xS5ENEgY!fVKlGI)U?xc3P(vJasfVsDlLNMV53Nllk~ z07uivi}PfmpF2Qk1v|6?p*1Br3pEIG|8$kE#y zHhV0Eg#QWx9ITEvT^5r`8MCpD6>c^pzBJP;LbHtr>&NWmVd?$bG-NSN+h zG(hnTX22#kO}Yj|x@oJA+bGd%A2Qqf z!00}|0ICUyuBy->-skn2a&<7KP3QXcNJ!Olp&}qUK6vX%44pHpbZF|vlsJr}+pKG&#;x&cHFs6>n{a}QA@Ar!$5y=$Y`~IW;Z$qA#EDAcyBib#iGC zTV1qwqyRxmDxW}@&s|+m1$VsxJv;9}4{`uZ{OlbL#_iX_*@ERZcVhH70Z@JlweFjH zyZ^`Kc!{_&?>R$!LjgO(msKSteY%l`U73Zt*Vzl3m$UqQ9pl-V6MW5Y@lQk1WEgKA zie>Nor|IuyGq|@GPnYen1B2k=DXCt_X{q<)L;#AMf{$4cp;G|K`riKj@mM44f|{D= zaj><}3kMT(j#2_LV33|s;0@1oxUto}T?bZBrDH{)<%E)}95Q=%uV5U)iRzdC2iqa? z+VM*wmx?zGK}}-8v5z3Zk9?kMIv+netto4*vg%Fco5{Ut>JUIsd%eP=qZ0>B8+gMG zxWSTwsno`1LjSXV6QXUMH|CD9H^?G4LiEBFIDI9?bp97^!6|D1kQnYkFV~M%+6z_J z6a&nwLi)=y-cKe}oVDseep@{z#oW^c<$?_wt#qF8WRXX?n3=p6BEGxuu!}x6x&O$V5eDWf;?DGr z?bCz9lKJl)n-CpB52``L-_B#y8o_<(y9FpNFzM(hN0CwH2>qvmC!kEpOIp=iN4SUK z2_Ec!hb~x{R$$EJsujT`k*&tLdR2V6UC3*~3S4MyL5`=IB##z8gRMoHT!sS^Dlnbss_N>F;}4hhyjf|@ zyHR?2n?GW}{=Jj+c4IY7%^4H$mV@=xHEn}|(bYy~pz*RO=rUa4p!I7CZ8uIdXLfUIhBNrDPS`rfW>4|Vbz)Dj?qut7EUtiB+usd73 za`_azsYwa%50~3F&M@S3b0CKyCHe7;i0f)EAs}Em3keBnOh!C8B>-lS-TJj%WOMWN z2Li&^`O}r(r(m=FyBC|DV5WY#bWWo5qED<5E5lLL2d_DRN$jG93Al;8W~~X9UjJIl^65yqR;c`_srm+5G}oa zwyBq`fpn)*z(9Zz$G%bTcR9&@f$ z)L#b++7$E~c_dJ`jt(*bLawS)YbK^{?XZZ}PxJbf1o!7}XT3#5o#rvg-;^`mEVg>g zkSrl$WJ-z#RCT&6&L(zuEj92lFn%YrzXgARfk{j3>k;J1`~LGgk&?!8GQZOaL+1RkrzI8^PhV0B?U@9=*R~Ep zEC0u(+tn(vFX%dWye?ChTU)1JB1r_mqu^~1rY|qQ%FfOu!tCz8?9cl9E0iPnvK6(o zT$RntXe8RC*UO-CBZCja0x@(hK*4cWZcs4pdM+q?w^dQmp*1*&Q5D@`x!z`_U|OUT zaJ~VSn|r;U$$(AgW%dZ~h-yi#MoMZ=e-u7P68;_!1CL@TWlkdyo1I~eA`$Rf(g_!3 z(2yNV6o887on2(0*^8@Ts!n3ZCX)KVAm9piyMI+7g$Rp`)Wkq%wv8fXeZa=_sD})B zH$D%Cje}#&@2>Jl972+DCr-+@2Mrsxw^QOt&cDV(&3;$MCte2$sX7>gykp6GgDhN( z;P{|ZLAl%B?6`Zicqv*398ee_@dzG(>lap^+OCOymA~DQ@Ux3_h1Ba{49PMamOeYz7 z-Bb5t{n{4$UT6bT%4<>aMQno#%t;FIhxapJcsW_q`2q z*JJ%}B+L(tl^0ztR=0D)bzDDpU7U)DEGPB#7q*ZEAqx<}0#qO5Voz9Qs>R_O)4R@J z(fbaO%)g&dq0 zuvRl!p957Qi3VK}9dY@en_Ayd-}PhR>@yHBQy!`Xu@&zoff?4C8Pqcd-AVTJ93X%7AFG?(i+BklI#qrfV z(O?N3=V_C5OaGuu=N^p$Ah7GL)B`WKyZc+1M4t@Dm$`e54IT42C++5RWejlMGL2G| zeryVpc=7=Wl4v%r0fJw6c{K$Zno>!aFXuGYs+O?6uDwRc^@*Z9k#lk%Vxs#829_E~ zN}-g(UGNc-2t39_?_Bnl(kDQOG_$v05oJ6W&lEAa%bmacF8kx?jly?)=_&x)M=yHl zYujC=Cq zM+xw{-ORu^>}+g1lxCI}J?z~b9bvo$homqvaO#arLIoVN)OI_$yO#( zPxQKhCOFtukFDAyRV*JJx2)jEhSlM9m4PyD8@JPi^~N(Z>0YdVra|<;+DFf-+nGoX zmEgRC^`jSfD{KT0)|&tEV^ot4-gtVmd;N`%lk=pbNP%UI&#T2$+V%IOSfF%zoqSE* zL&DC>v#hD<%A06->*4YhpAJ2MQSs+b`*kx5I{fskx9v0q1%o6MqSU6Wf{3o1FYBx7 z8X6Zskhknr4;Rw&GeuhQ`_sm<7G7&T@DHN!T3Rh#;o63gzkwtrQfjO6^IaMiJv_kw z>=_kr{yGCR`EQm>j?OKmTiO~|&7FSzV;s1?X|`Sp3KZ+IlBpixnNiC`j*bcSa>6uP<1EKGb@BRo9BN@s-K= zab-7jFgWE&uoklj&IB|u5i^eXS?X8P{Dfm@t~|EX@0R?00v&GKt-_$_b54idj<*#w~92R)k>{oc1)_4Ki{r!b|8T=UnO}SfegixQqi1Dh> z*7O!cWW3<_x?bn(TIufLsr)~4IVDi zl=U^=qh|&N8X!SDd;3NQr^|<$2jj7A6Esig|Dt>Fs@zk@{?FFU5>8IR#5EgFqGe~Z zzYYP(9^QIe*DgUWGhBx2dmeLf;m=`F=hpMsJ2W%|P3cb|I-))|setXZ(Q(%PQ#BA- z5Zd(YK&mwc)6TPbFtmt*)i_WW&5^jN~yXjh30xcBHb@Wfnf>)N;; zhc4pykD8%)dh#}nBh1*OX~XBD_Y0V%s|Uuoyd#~E()Y!)zyo!!+#JTZ(TR&Fuq(eu z{Sd=3StaYxbEh;7*++D6t6c^55x3MUoKvfDw#*=ND_F&g_zC4(K(HR0OxlNbRfl#d zVp8erGa{_|9hoZYsj9UWPVg3!{_JQs8U(xcsD{%YIbz9_nFlP=M6g9*R|7#tRDt(X zOyp9NTII(MRpGyn$ON}MghdM@#u?ew6r_(HZpSKTD-9#@DVNM7t_mhBL-kzL6V*bE zuojK0?U%tz8&S`3-Xv@;8ZZb82apX^7}@h%Jf3>4t_-56WgBnh5Y{?N4_*VV@EvRN zp|oR?7NM%;Ph?1%Ge~eZ&I%(rl=d9o zmiR9Y?#MTP3Qodvxc(k*hG1YLtb;+6eNi$hT3P1#4pyXxZChP|UxX!8k~xEcl9LnI zRH+aj(0Myu6AVMwYxz5i5B+#Ijzzzx^gB_UmoXCp1c+N2X=&GB>Ff7z=+9p7R^|uL zxzR{_z;lwM-Z)JwDGz@AXvG$|dMf@bedm4Sv%7GZcuTVUgsT>lLqlS&uOR7)G4SmE#NvGZd*?q7pItH|7rYA$o zNnwXEptE3C?#y<}7?W&{CFQNC<_Jy@b9&+RtS9MvVp)i{`Tr#AD;Tl0-&Te#A%nj6Ne#m+t0B^#OT0hjh@CUlG;*(c!Yy%xu0jCMoF}2h;~gIO-Xd zO`xJb5Utqnlc~Tt2ITn4jmFgF@p}Q$exE`D5s*2%w8#ilqEqYDF$KM6?8_Ggh@+L|($4dm5GB9CfD!=m=U10A z%mEou*?*wQb0fng@XGQ(dAac>3RYd*iI5jij7<-jr;VaAtgo1vhScx0hh6>)$t5HS zw>eX3>4VR&B%>c=!&2)FdVZbK!Gmf6KsevsgDDQ07#n)BZ0yvjD!Wl^f?2;uQFif@ z*o0vTY39G)X0_EmeSCFZ=xre#zMC!Em3i_5hZ>NY4&xKj_^_rJT=5VqeknRgLb%KK z&^(4PyB4OLY!KDllXCP3ln6(OMpyh5C2EON+<#)r*RWf+Lc$cH^SG>5Iy#*+MM#Yk zI3$?skC#_bs!bx!0Y=f;`HAn?!jK|Es%mUm_5G`A?qeQE$-27vhs2Iihplb6~R*u4mr}V zZVsr6kAOuNNv|Jlz-?vPJ7SkR21Z+lC9K-yY^3=$?>3}mdOazp-~u~|Y|C`=nkiP5 z_57eF#sKTJhDj?J7rE=k*1s3ZsxF!FUAR&ijH&g&;3f}%Ur^xDC%O9VDpxlD-WfW* zr$>m>m}6l!T`z{Dax97S z4YE!+sNjb2tEgpCqN;HzuCiIXz2(N1fQXDTghn|7%LC$clW8`ISi@bODDEP44s@ea4WLOM%TGh(}YIsbek(+m6N&^B-msxoY#S=H~X%gm86{ zY=>Cs6k8PVPKf=}d%3XbK~JFJL#j<6^`*zxw4I`w`^OVuiT`1bmXiqy*CRkg-D?+2e-MMXqno$scc~**eMjkGz-wOnN#Pq#FB~ot`l4oYOwd*n5Fb*;ffO+7 z-@y8F4j%zzw?zjIL>{Fzi$FDo>I#MHao* zbg$M}&$}h1H6eL)?Q|~ty(94Ws7^Dy6T3H2$hDENOrkzAJbTPo;rp6uM6pbiG}=a4 zW^AEsYOqHL%x3YO#=LsBP6re_O(5!GqLosWjMPKOM_~Ri-{7otz1}lM>VR{JBcVBy z0#BUMcwMJ`s|kzEs6rr8E+{49UgDvV+%%`D-X64be4A%TArs2R@Ua1Xz@XUo&6O{7 zQn8fBB)L806{#&g`!u^sA~_4(+$V;f^-H~`00pVtR{W~9e=+4;KlVu$-0vSWDybIt z0ag>Zmf3TOZMNdReYQWAl%Dxgfx)xCj`$8FAd1-W3m}g!vMEPhc9cF=U-k(DJbU;E zR!2!1C;Z!L!VrAGmol zIp@hP{xwyX_0>ws+8^`t=L2$2NJwnVcs)kWq6OoMQR?dm0|P^70$~vmxX!C67K&|- zyU)T@MG*c>k{Hoz=IEc%Kf5*F)_Aw>uVH**il;qXG@-}2%+y+YIq@7@9QR85hFvh2 zFgxq(chWG};x|ISbdRVz<;)H}bw-~h!n1F!gWw(D0dM*oSk0O8#Hu-MST?iB$i40| z2-kNpd2z2m7UX#)c6lGd^lUsfZ|vSE2eb~9ARe@MfUVtYj-ES+BvQLiiYN5!5|bv> z)4L4NiiK@YN?x#r+Q-hw)K$s&ie)a)b~wA@6?gNTvfuLFJ6kOFw>ZbYEaa3s?p{p*WT&3BQVp;cdb;xqYQ_I8*iJct+;(&BNb zajUe|XS0T5WJ1O7A$7*C6_p}P9ToG5>{x$9**$4PNI#DG11xFEAFIv7`+lyVkce32 zn#!?yQ9v_T77=L7zYb%Kr#{!=MW?GY(`xbt_GYBue{lvQGJY6s!i7p4(W#@iJc;_@fQ?m+;ve@L5je{9A zQk+$n!6<&aY*x9`pd z&o!@dUANkRkfd2`CfPXHlhCZGKD!ib%9D7E=SjfX%U*6FGvPLkjuBamxan^v5&LU} zOtvs4DH~zOP=*m&9TQ^PKPzfaBt*qg%n@-}ic5?}N6g%kQ3KQ8_+Vs#l;t@UV&$4u zO~sknZoUjJ2xKc2uX^Vvwev>y!{n~p%iQ{6?ggeR~= zgiKH&nMM&K;P%Ik{|s(G7hBg7zMd1qFAU`rvI$>!+?ZaPC|Oe)oRcb3J#3p!W=@5P z0bD5u$yh}bl&_~GD;I9BFc@(^yc>mLS%WAq5@K2uKMh9?%@$*%pVC-(A&o&E|B4{} z8)BA*A7E)jK|sw@1oQT3|{z1 zh*tcElcNjBfV5R-%Grx-+H~7Qb|D2HjI^)o$PrwMTZL)Ny~E-qRxIFo(;U|cWwsj{ zIli?8n+>k@xW%Jvj~sj%o%4pXbYTUpL&cducBh*}Dn#vJ%FsaZWx|~;**tnVu~r?y9-n^s%9yJe}(F6hlXsfxbdfyXu7^_N%se!$2|!=4r_&W%=#n^ONV+WVvZWo zstnyZ9oR1-%mD~;Q6To7$ATrE+;C5R7%g0#duLbDXcG1K7axWoh>-xTeMN+963WyJ z>Yu3AzUv@?B$f}+T&xyv8u1Hl?SUFPf^IcdLjk+Hh}mL<`kV6JzY&=TH@HCTL)>IJ z!w>f#tPj@0_kGB97Olk~8s#7<&Y@vd($Bbsu4k$BKa<%A0GQd`j;S7wu+2c)V`AFq z^H6d8RuiHo;EBZ-!1qKNq-nl>rRl3@Q!Qw_pKuK&)TLc zeiWzKbZxX4#czv5i_>|Hu1Fn?1W*9OlUbk0&8OaT`yi;Wpke%!cDSTo4EiaNL}6Zn zh3aCw*s4PNE5zF=)Sa)O*Ck}|$p|s}^J4R@2e6b>+5P;=4loViMbwN%KA{-xB?W+M zuX?DjC=lo25LcPdeJk%Mzq!Gsb1h40_Ax*zGXO3G_(@;ig=Zni&$OSw2o8yXen4_Q zV2a8$>*Q0qg;Emva&$u%h0QDI1j@<$JTBLm??{B(BTFIk|m^FcpkoQ=K!k z49cTMr#pr~LK-HB@wK2gE0(XHM5UL;?F2N)MP#NwatmUX1!7D(6lgZ}`FkcW zjZ2!uX2L-bCx0U4>ts!_Kj@*9LQ?eD3pr()5Yb4sAz{Mff?Hrk`S~+TwO3pzYg%r_hbI9(w;Pv6lW}v7qy(atcTVdp9$4cAO_8~ zg2%wVJyz&B)Bi{(4%JtAuKNGjdaJOwf~{Q_3j_}qG)M!DLvVKw?ivX04#C}B8g~mW z!Ciy9ySuyVY1aDxefIO5bHgRG=d7wxHO6?quhN|hI9ZuGpDW?Lv#0<-1X7^YW~?3) z3kKB4V;l1q5bN|AWs>$?h_R*!-CP+JZSzYD=*8kV{x8&GxvRACf{{+e(J!DjY-U7q z?ZS}$w>oAR97eMzcv5|PiWoLHjwg?3!p$ro#rofrW)ct}ucflX%iY++qvx{Svr;ED zt;J5n%WHBpPh6LC*;4in0%h{B7M@Tp!|C}>WgJKm%n%xm-|8@30LFzVC}`gOOXz;8SRJcRU`zd(3f95`QZ1%QnHc%I-4&xTumXSP*#;L8kxxRnavl26*OmE z4N%IZlHFoKB}VkyQ6!lgz@yeSuE-Sx^hRBv8T8~Mw^5}~TERgY56#j#*agnVTXdfY z`qy6kY+>s_R{n`BvV(+Udz$6%r${Xgl%b>5ek^@?$<=~IPJP&___@xHMr5<i(ED8@E=&u7HS1!a{D)|_u>7=hC+ItrVcMzdvH+Nn)Ikx6Qmx@Im4 zmaa)z464ji^6n5xckec)$Fxtr`-yT{h*&Gr>}0JFC$~?@j(pw$1$}c;(tT@hJup(~ znks)%DaA)Fx821sIigm1EH`d(*+QMud72n@4<@a~DS&qma(a4e@lp(JXYdNOoX#ie zua?@{H+wrd810U()c(KE)EU_)m(GXdI>Tak=l>?#TAFT&%y@tPpY$e3`IFR3M`U0K2;4XeffOTJ6z1P+r9e+5m` z!aLC?siq|#*cuuSo&8Rgh(!ajbzCL;SiwVzNv9gIIqEaHTr_^-cDBySO64-uOKK;* zLU4ZP*b1QW9=RB{b{R#A-l9?sEZ0inLyTYlMD}jA)1#%El3zo~!#yM{jnK(J@u`SK#0R>yd6g|@5L*_yc9eTR7zX-Br2-sTycc;pkf zs}eO7@{)o7t~*~r^?sDdb|$17b z8-QMxay7B#K33{$jLI%^$+V#lE&xqw}O=pz@YeMNI z>FNg9(v;9(5Dpja7!+8J?VDFq@xB_XQZ8bCp?YQ^|91MXH$-w-H%_{HPSA(5gPr#* zURXGt>o&eA*RN(~1}3GaqRy`*z^-~@N_ZZxhm1uz)@bpc0&Y{dd8mCF3~2CAVrgqP zVy@WkKd^+jpA$y3>dJ3Jk(ExO_`6hC=J%MBYUOF%_Q+=4Q1O|fc0uXxf2$QImW{ZK zdU&7$-LtY@wg?CZuXEa-9V@b+Odcxmnq_w7VPmEKaTgHS#JkoblXL0^zRCPY^l^pv zvIl%ClF(FCpRHgejF>e2XP{~k1~_++oR)LrEdVJe{i#-DlSJ=N8?^RV`ui)Ox^?jhNxd?KePIR@sB;%2ib->n(#vsLSbS zCEaBXfkz`YkPzdirB=%Wjj#Y^I_@;Wtq?!v83rR2T|#+XonS#Wu_y|>@3K3dN)}y{ z72W8y)bw|n%SVgaN_6m^QTeDpRsRKQB)(L`ry$}CDuzNflfXg|Q>S*B1}2&!g2GRT zSF@a6^b1TVQ|$D6QevtofWo?gHYB$oC}7~}9Fr+|TRWFOhopO}{QPYZGA>u0BRY7W ziVJ(T@IW^4p^e{IC@-P-AYV1mCE z0-tJA9-uRQJP>~m*<@7((QkS ztwaE)>XCD7rmBc!?ax2Tq}|29Q_I;}e`*t;QMVslm2(o2?3ll3Xkff)%bJd~OstKyR=8UgK_0rP$Bwa6t_Nzd9 zwE4ToPJTNo)8&;X924HtHSRjxQ$v^Yzart&gWChHdG?+I|EKHoU{B|f11LtK9*{IV6A$+I=6w<+A{;48wN?~L-GF#nXe72;@2=OAZ#9kz zI@?0~HFlnnkbHB1cBgRm$GQC9RkS-KTozOiKT>`Yba-flX{TovM1EZ5ZmYRV!x463 z1LFeyPM%{sxs+AkK4KISf!lw6EMVy#K`3iJvX1#$*)Y9!r($4@A-5 zmKUBcHic_~keb|79UZlM+dWII>FFze5OV(>5<E`si3Qn{e}-E81g+eOR~HoCA|mx!8=SOw%UZeBx2*FRv3h+wW|~OXt@(jCz&UL7gcd6_0uV7b6rnd~FS$lL?!E*AFPU%mwT$ zd<7!p6|Sx0b%)WQ!h00M@~fi<^(U~wi_u|k zuZm=+jgEjDf}9>8L)Mqyi&51&}BPn?Je^FqkoD5l?z6eQggV!gc>#glkeEJTLAqq?`CYodZ zn(b}UsQ&(Y-5RUq=A@_l^J|auH8sLS@O;suG+G=j*M968d3XqU2?!{yX|R4Z*3s4; zDVUkLOcBYQE7Q25T$Pe(({Gx*iy>iWAUQ=v?k|PRExSyqY3<2>Hs9DNeSNykTrXeV zAgw0o`2?qRTkRGyasopCE&$0ycwdnOw-0T@14*_6X~4&rJ1$+9xrK-r?$2iVpyy?8 zFJvs#J@FHt-HVrjlhd~rpzY-~TmCOt&cp3^j^QjiI(p!A*?FpPMpJeyIJ&pD7yIVK zb+=lme{#*W|9*`PeEhDA$mF@TMf`#>1r&uEu(+Uw(QluVTuZV{wt@uj)=S;A-*GiR z4zrr@E^}7lB;e!1J~-V|W?Otv!ujj{29rKXTef)ZLK-I5by_}~do2WUh7Gx^L zuS?{+5mVKNTKxUV)nv!Sy&+`}_Y?;QlXQsix$R1m22P%yQ#izSZtz(TbD;6(Wx~S| z$H8CgtY&GcyJ)pVZRDKMaie>oaX1Q$_;LObDL&%+?zO`I`&=ghGM%{pVp>i5$}iTe zpf=4WG$yMO!e$)@Jo-m(XsRN?+sEo z`IIE5t|ePI1$WCF^o};{&MS&=g(og|efvU#P37a|WnMHUR{6PSb45c^emcDdexDKU*al&z9<5#{IyX9iPj~KI>TZ zfWP}3PtwZkl-hIu{rGD8Ye$Dl{84^@@Aew_O>U*30g;z3SM?x`ccfs>K=`*dBIHDbA$^|`6BQ38M`^)0G8 z``f3|EUDT%^~6-S!FJE*cGoFzPD!vai!rv628)_fai{#wx%;VG56w z2CH6~YHiM3-Ht&97oNLpIxSVY{HHcIWX(F8^@bX&`uIOp{^FKsMlveHDxAO|hsp@7 z6&LR=0}<(`yVLsTjV@9-B%JSO#W82R=2!LQjj>N8LZZf&RaJh^7Hda+SN5M={L^o; zqN2}V3uk8FHD(hvmoqagn6{)D!8dY5y}ry8BaY~x zlT;6e(wKg4^z5S$t$CY$q|@%vZ=?U>@&Evv{-6%$)6}a* zZe0t<=X_Jjco@A(`&^C3!MaIFM8u=Yje-(!AkhB(k<%-%aJsIwDxNP)~l{r47zyWfkjY7Dmsz2A3Af z7uC0sx@p^}WoAA@O?)BM{&sJw<~#;dDcBBgyP%#BNv&lmX4lj&;DC+8$SEV;$_HFu zbG$NCxv#A)j`xNJf(lYct10?jzr&Q zKcXD%Z%_FcF5*|B^m$xwX{JjMWB1|e#+J3F4g#^mOAe3cFKh69$*Y|=$FD*>&lEle zyS`t0;F7OJFIA`u?XSIP%AwaZcGDQ%kv$NHu4@c^jv-@G$X>)nWjr{1YrUILgesKB|4( zjF&DhIx3?Cnw|*Ks=a z;Um}d*cA5Z)EBK~RACx*nygLA$|`_QhEcnh3pW@pDhWsI&8np%gL;Ck!Ab#?4U!wK z!PzAU;yofN{_%KSq$#I_fh-)=6d@EC%z3=#;Ya9##2DYB`^i501*@sVlH&TvH+2K3 zjAi6^lnBXLW=H}9MH_3X(+O>?zeazz(=S>)bWA(Fvz@g3eKkWEOYZsdJ6gZa{H%y_ zG$Vy-LhPGTA$7r&;^I-QsJf)_RF6DolGMzDsSc9T2rye!8Ixw*uDZ|8I7NDDK)2t! z4Yx72DgDyj?C@=-b^F=cidz3lr_XAam6d#Q-_^fST<87(hk0DmSh7qhJ}fnT0tPP8 z2E(T;Rg7JB+PE*9TIAY1Hkax<#3+pw*~z!6mz}}rUQJpjO=IKYEt4a$*d@Gg3^ZAS z1wNyGIE|+_9A1lUQwe-$MkD<>Qjj!gQ6pzF(tb zl(H%#Bb3B4F@Ix<$pw7dT3Dj4nJ(7&V#GKJtHZ*r+^#tDGWcosmI5ZXsCWj5_N}>) zG7%i7yrt0lF{rX7e(g9iNUG|5Ija4UY{b;D?1heQX!8Z^+szVi)Z7{c7rvG z6^%Lvw781GZx(qqrKpu9lt>2*m^)GV5liTJqb(7D_Xus`Tm>Zq#`!q}0B0U33qDem zLf$Bq0E^tcwLq67?jEy7F`cEj@ODQsNhN|6QKZpOW5Q^&rLos`(H!6>;zjTGO97cc z!q}h)25a(+Z&HL;e{pL1rmf2I>E03YB#Dzc3TljC7YauR^(+ z1XfIL*y`+eP>H6KQqIl}TAFE;fxcyCWu77GTIJ;f zdQ|llU5K0r3`68o-nD{lSSsV6qfhykP1G9GE;5MNEHW4@qeIZ?b79x4um{^h>lJ5G z0iSyf!{W=}?V42sP{am0M%@Q;(taGBBM}QHgX@ebDBNU&mTb8sQ+mOJJC}}!fM)f_ zvB2@2K@=$&nS|bN-C6@SO7CN4enNcFBqY_^N*IO+@RtG5+DNn>H)-s2+G1oPH9qq! zk=q=y+bipGk>YCI$P`k;Z+XK+boX^9xa>dFix zYd{eh>g-TiazliM*3crvnnL^3r@_BFEqtulsJ#@QRjhXrhrM*sa(lH?DuC~vK^Y%F z?Ko~aZ|!WBdoVGq03QAmDxS(=m0=JMeUb`s^(Gw!B_>p|1ad5_`8u&;EhC#3yM4t3 zuYb|RUe;%L(Yb1MKNT*!qp4ofXNj*Vq-LFtndzp3su@CP&%*+*S-1%_fjWC!@7a+s zvADs)UrkTCx)iuFSy_K8sIY|xw^K_5;X2h zsyBA>HLYyU5_OZXEn5~%8X_((;(xBTpuTbdfo4gxVb-ABS@TrQQ`>BFB_gE^=W7|< zqv62I?bW%XBipnU(K>ls=qQX@>NMf6Qk>4p@kb+I!ZVZIRvQZLv4CxVuxq`MuV1k${t zKsy5x3WJWlCF(a$uVg3=|yM+rELXq{M8-)yhBNCMm>_&15@H zHb#@wS?vk#!&c~*p>;rn?YfL(W0)k>h^!OajqH&89h?_-pOkWjwu#HL+oyzmY#;>o z+j2?DE^)?uf=JKk1h_@Ir%rx!PBR+a2n^FwsAcj(7rzUXXPIle8VMpmlqyBq-ZZ@S@1?RdpD!P^ z%Gl%>4Xk2+(Mj!heE`&7Em`d{(#d( za{v*TN#-UC5iF6a%#@dJyS;NPcCRUv=};cr%%#pl!iM;m6U&dA63;YE`}#U8J@4@r zzORL9xGAvL9dyW)f_2?WJFS=X56u|huytU{1c^CvMm(C|BnlcD=BW&$Hi;z<_XkM> zdzCcI9D;(?xYa7_8$I60Y4d*zxErZ9e)?|!#jw9%16TzHqCsBj=oF4H6Qo3HMP`&d zu4reFe+n1T;#5!jgEfD)7e#5bb;f4oK>UtSY^}hb-KBR421B+nUKjHB< zr3M}9Z@)X4$4K;q)^_BYPD(f&@xJ67cr`EPt-GHJ#I+H72+i?f5gDP{KoX75|HU8>bHb`uutDdRjb1>T*2HZLSf)3R%FETjca-a$M9#7!a|H{LhRmN|ALrB*YIzV5Yzlw z=t#Q=DYDKf$4Ro!VbGo}ZvNMcj#3re*R=z41bqNab6By^w!+tZSM!oU;=yv)9*G9y zSUO<1_^fm)(Dtj~t-LaQbiYmu8(`_o!Rvn6BMA{RAyRtI(btWXpP zzV>m~1T6@5w(+RyQg262+OeF@Thl_y$?L1m!uz-3A!llj7dn&(Xf)wzRIhP<=1ec+ z(N_jsk%wCTKWL&8-+PTE9kd+!N1xh>|8oEYe;8eRF2f2hKYdeZui~I>KUI7hN5RiH zOO$WEfohW2GSVM?9Dy2(R`tHcIwh1~Mai*c$7bpJN5c}#tZ{Ed~ct77o~#GXvIHhApp zKHmY7010}lu!mp@HFGI5uj;722A@gAXLc)nfsPhu%^zSCwjB}Olp)CBIyQuLdvBGGpcl{zRMiOKjH-vNKD`?nmyG(NqCfdUkXdLe5z&c zWvZVJ3^TF|USiW`(k~(K@>+=?C9``m+`Qp#5GNAn$}v8VMa&+uPxiAs3y;}Zz;$QP z%H0=^Z&)@Sc9F8uvd`8t6wj9K`pls?P@@5zYu*NDKJQJ>qJSez6~%k;%RR#D>p+Ww zF^w7|U!b_p+NHY;21Q@W!2X$|1i5ED+*nn0I(m6em>`?E9pV?lIJ>m;4H9q&%N z-nZ*50YP)`nYv2hDKzilgjH3|GM&?A|Ily^=Y~Dg)O;+I;^>u;RHH~bzx?|A9R>#q z2{K3^P0VMy_MF1wt8+QK-wCcYO1X?Y6cF1>08YDM6ypQdndsw_h419g!xS3Ql55B@I;AfGGw{z5t$36tS=+j`e`)E6T8uU!}1$o%cyb`rhe61k04S5VMQ z(=WWqq2tto#mPm@q_)>vvXshGGre7cevt#I+?>1WhCDM(awQDBQm@{F#qD!IcP@&L)VQ+ z*VU%)hBOU6v!FuNW>(64yLnK1ZlEtJ#}fI$ClhNZER2;RWW;{Yw~b0!M(#jm!`JcD z>fEmFRi64x@ymWPHWa=={|MRKgcRsqdN7xi-bFJKr;qV7F1B}Vz;>M{dgoA;itPMv z8byNkcg9EKN5@PxEaY^6RLo7sCs{Ozl%!47QK53EioSwob1MA$-mOt+yY@?*d#ql2 zSYMr%yMNvgvE0*B*4igoRp2Z76f>^tmRBCC?zrip)cAb*Ic!&sL<>YSf7O6vq~$$j zEpA?jzvZdZN|OocGbhxIwbyN8SwGTe7>Y|96e4UnklSt&g%xJ|_o>FBF`>L`_PLJVu z7{fc8 za0-4FBiC^&D=j&A*R8lhu==8fkSAbhY{ZQMg+WxBA*s;R?%IE)St~vpDhW=6M=mJA zCG92jag%;QP-H$S@x|Ir2iAJZW764VE44&i0(**f$t54Kdkw8`pl`zUOXL1fPVf8T zt5Rv%{=Om#7Qb42yo9MmstQ}0k({h-0wTEF^eOJMX~#@J4S0SFW67ILC$}ntp1?K` zEtVy!$JK+ZD1nvC32EANP5}I(KEv}cBkvfpF{5f*C-etA$yxJHpq;N4uDynFn8eBz z)trXgn31y3czoX-(Kjn`&0L05f1V=2!-xJ=;#I6fcV&`2_~9bRY~h!iXjaYcYl8fY z!?uYZ%IbvYt1xZX1aNq{CknPHC_4fZkmbDfB3x8ZH)CGMW9+i8Z&}f`L+}n1ff>jx zDIX(yJ%JWYx7b|V%jz?853=i*Lt~8n=jX!J39dEWr)Ja3>gqJiNy`p}NSaUpuZI-9 zDN{;|Uh&g-p`boP&L_fJ~NYW{q{rY(8N8=FbGo!jUu@tg)Yjv|1%#tay6( z!9qElT%Ft-SHaN~2--zb6kUU>W!aCKR+)}R39Z$(F7l7q1ix=Rn86C8EVAOR&30k+5SpYK`y zL|RYJs#SwFC3b&*<3I%nSUgE9tlw*)%*9Y8k)_;9@B=~p4!$I=Y3@+CjE5&ZJAbM( zovEPI3d6KNkpq=6D=dZO7B1Vhf-+Z^26~nWEEs*Ehni}PylfUoIXf^I6_gVctJMa8 zxAD(px`g^_?UC+{S$Z{G5zdTu_0hd<+1nsKpXGfr^A zw-8xRjw?ACnSw6nKmz*ow(I@;L^F#|y7O=g_tfD2we2xU_Y!wu)*a*>!_(ur*znV9 zq3>oi#NjUXny!y+&DOp^=d-1J$noVE07MLP3}(SkhRn760(N(QT=QpH`r$x<5jZ#C zl?wvaiETj2$sGa-2geV1aIMLM#D8}0Ri}=eHktO6$ahY2e1_q#{?YIImnp(n!f4Y1 z|H=vZ;GPh8TgI}YDpuF3)5BZtG^+WRqnVb3tljsEnL4nOK+Qg*S$y(?kqh?ErNQaP zA2*Hb*lE!_OvDDv^7Ow_MbouMuSI@HOvhnWl&sPI6BACm9_S^v^20Dlz1dZqzV{WDnw+}ZPvV_vuoGy(%0kRJib;n``AR1+6WBtVMsAt6;< z+&PQs?$7eny+?~3M-!7CXI52HUtO=suE=M3i$`Y*DU{y^*jo~6dZ#AC(1i(uSv6xw;M%YI;qtvX@m)nK?C;2|-9ArMWB88#55uuGSOMH-a$! z%R&DSO#{6~3|ADsdXQxUIi0#esQ!>)zd3fU!3Q8ufR}X$C2st|Af&V8GY)54BPWlN zJO-TrAmtfNpkJX-*3|hO1go)^ZfklyN^oe0Jm@Gu0S6M;s`=}|C!;R z6!8BdIvRM}EQ2c7xqXqcfMf=kK13cJ&r5uaUGuO$J?=4H>*%!J4s5nV*vnj(^c(Hb zK2~hR7LX7_G7g9n+ti&PC`_=5BsuU#fu45V^pk2k3|R%V8w0d`(F>8s>nlDEKL+Iy z>`B`8Y;yc9^p!W9^b<{tF`T2KaFf^G;}OrNjTEsyy|Qlx*CT9``|fySt>e56mQULD zURlhGPf)gs?4&ST%GrEP`VRbAzLFz9m|;?}A+66lzB_jkG3y9$i2#n*_GEh_( z+zVX6JMEg|XIt>sk9B*e;WX|fCFTvhM_jfb;9>1|o4fys9s9HG@QZ2dAD_WMU1rF6 zqn`YxLgvmps^~$pNXfjO{6$Y`h>MQ+WEP=(s90xMpCrhUPfR+nVH}mlofdr42IDPB z`+IXMe8wZla&9~&%|^pli*0VVuJ;m-B2;Wf??f?IP`3B5L|qaS>~HFi-+dH1FIs$> z={vhneHIvEz1}?-Vj)_+8QMQl5^R%0{@*AFX^J}UF>9Nq2VAzDMAjSCtenJ`Ylfzs zr}4Y9*R#2;tuTcTJlaCoOcDyk#s$ocGuxKk|7JK8K)cvL6rc;{6Mx#8Xb$vz${&@L zz;S47bP=xfhl?KR9*AZBdsxUng=l`VuufN0w1C}YF<;VKTwHt|4R2?};juBe`A?i* zQ=zIs7tDQFeLTip_-2DE>ts-%?^@?k;+n}07&HHR!y#sQW1YQP!f->pECBalsd)JT z0hgNL@tfFhU3coN#v|eg5YbM}F-8tDbjGWg&40Fi#uh&HUcX6P8>q9GNWQT8>N^Jj z!bo)DKYSIr)Hg(Iq$dT^anxW>sZdY=ry(t&nC^}Wv>X8$eA!-+cMI2NH~`=WiPF>8 z*JQMKY+!$}k&5Q(+G31C9*COI-%l%{72YcY)khBV>(-TCPraU`I6b)G#TKbxuj;BmOAdJLhX+bP7 z)8u725L0TRqDpuI%F^X=nkkZ$)1+0n6An&XQC23SfELyTFSUq(fLk2resm^x<~~N# ziQ5!Rp04A2B_iyMSP-Hs`JW|VGUuy!*IPEF z)V;aG!qy7-x3^$dvyxp#lm7hSe>-}(B&r#M;j+{nnqa)&w_0bXqNnF!;Cwv#^ZR+Q zh}T`UZNcE6GqB1o>D%yfz5S0+#aYi^FOA+OYi-of9E_(CY+!Ksg8`_U@=sF&U$J~A zmu(CYbF&shvb~2O6yOf#Vu(V+5r^dtoF7Z9S~`XV9xvBf%lJ>GB;S`3L9B)D_xa=^ zLYSgk%CjR_|HY4v;vu2MT5Fuo8@%OY&+4<)Doeda#@DC7MoZA)ZJw@``T12!0j3rz zI&WvVug|(~hCc|Y`6*afX1sO=5CCke;?eCdb;$T$$*A$`)ACUYNirS@ zU>3U7ZW3|T=j{ET>;tqL*KIe?_n!i8er8Pj6QPn|ETA@)Ox-s+X!h46IKaXNK{Lf;bIz-4L`pQtlOT{}NW4oI(X&OtqP5(=3b|;O3$1M(@B^ z+n*mjVKXG(#P7S!eJ1rzn4Pr5+ahg;s$4yx_DvE?&}lLXZG|slJ$d#~Iyj=D6@PD! z)kfuh9NlsvXJ>DOv@4*Zpj^s(fj*nW6j54xjc1-bf9mpR1$XzyElQ~YAHCtGowFqR zBcgSF=jXfkH&ula5ISs>yTyFPtQ^IsKVEZIwjFeY$)A2?QVg?Y;QS935=I05K1*po z;!AdF_1N3$jh3f^w|YWe8hw+>X&3Hff@ZPW z$3^w%)0k?}r0mHGV{7(CXGBlWj58vl+)v@^>9%j&s{Hua*lnDy2LTML_H|bM^(RfC zbM3>;j#VnV`!=3Mx*aron3$LanYMd!xNH|sNNGLXbCvH$dYu(f1g@*=>{gnLmG1Xz zQlL1mx&+(reO-2bs-!MtrAqd_y;Nf((u=FG)r0jL?sbFBU_Ihswjr_;1dOHw={)3y zfv~B;=h{6t6c^}qzlEO>mLIzdOlSYP;dW+WE8npH(@huLwXTSwM|uTgircBvz{_u} zHJvBX*S5WxR7XJMU@3$b6cZ&AmYJkW=h@HbLud}JNMH@sxmlp_UFy)m8%D9jxQnZF z?`6pC@jOogQ~o=;gM{>Mj+1U%Vm!;vY_jja2JE+Zhv{OaUL~;K$y23x)Qe*aalj5L zfy-$Uinz{0AGAdliN27=c6hxPHyE*!#q(N3uFP17yIw|bGVfXN?a17BZ1!ijdb*o! zYz!z{SXfy7^ojdjIzRwLhLXG8;TH1>@(`>p2ruWScaI5yj}2+HqOp$K9YTA3lJV-= zu7a~#tTrc^J)gChC;`(o8CEraXd}VIe>kNDwNX)Jc{##r-EpZmgo;{!FS1w6Qq2D) zekepryAa(xlQH|~=Ywsn8khC;X=lODCpwrtUNQ*_Lr_9MWakAj8Q#3AYB@goM(TE; zh*%PGUIhg{KCZ8OC{njrPGleNEfV|)VT=N=V|ol2*^;taP6K`IsFM>@>=?ath`NpE za!==8>87Ro7skUh0^hln0oKP~>i!voAL4)q^v}uK53CrrtFm&^Y-bCh*lU^*&bl6i zU{#EZ9^;=;2;&vb$Q1ikyI$9IMK?kW1njb4_P3N8FX34VtD}w^R`W}%2-mPZMVqfm zL{Ki33|GClXwj52X8?$M1$;X@VM2+Q*@R)0*&dazr>C(E2LIN5Q>A?VLW4V(ucn5E z(JO84HScO)x}(4#?-?QyqC@1t9;wmKxG9DWb?_S67I z4qj=9NN)w9tkP1eCNRy2iwa$+D zI*bUi|Lj+gDjgP#2D+v{boffV?_9Kz*-o+<$egk6RMWVpe65?lQN|{m?fQj7O_?4% z4m`;Q6^rwkPqS$y)S z$Kg;y^(r=fBYC=ocNNvVZ`PbFCEe;Jj;(XZI7#wnF-(XsX;D4r!Ds{Sm`!f8Wg6+s z72&et%g@b=b19+duh((%+*e$p;gJx z68{0S3qkeW+f|1+B_+zb=PDWk5pu>2ukfO+21&cE?iIrHn;B7QDd!Ud9fm{Y%R6rXxP^w`={DA8@F zUKhSwVd+=jwmB2PMXPw;wsYTEh;ANn2-0C0$%Rs;4y#rmRa$gK?l1s=aivSw+xIpM zBm{6M1nj@=&x-Vk)uGoO`^3eJT}SIFmtE-!)2wBr_9F8`3rFim5H1q!o=%83!$Lv@ z#xA$})96sdlSRWzn2Uelh^Y{v(>B(tn)#sQ=Tl7_~{uGz`_hRVRe4zqd3E^R7-kW-0H{j4~$%xcO z)JeY4&twXQ70JZ~O2jGzNgyzU;Ju28MD_`CD2LNi4Nx`C!8qA5nVjn0br}_CcObE= zmj3$?)&yrP$#Q--9s;X`jxjK%V#=1=kr9o@0!H;GUu86f4HW;HVW3p3$G2=K?_3j# z+G>fECxRLkRc2+uAn;Jf+mgA>F}M`9cj8V%a~};y>~uV5^W+1Gq1L#Xnws_guX9C; z!lw7C4ev2p9-W?-tWvMui088#?7f@fRI-M28}IebAY09zw0n&~2FV9)($02DgvMAK@WNSuK`R1AI399P0)Uwyg#wINpomxSo z)((~ZKCHk$e?CdNH+YNT_R~QSh{y&-w!N$QEgtQaVnvVkH4Q3D#jOyaK>^^vdZ8@` zOEq5rvc!ZBlDCYc!S;HW`x4ydQl70iSi-T02`c#_ zLm}b#xGPb7PMI4;ij0zysNh*?+*=W|n9!?Oh-)={&H}sb4A9&uliSX7|0;!Pv!lUy zG>=i`1|_x~cxE7+icunUdbkTA4endVGY1aDHSpJn^@R1AGcB@syCP}4o`ZOh?FPp9 zs32pRq^cjniAcnxy%-(K^x;IZS=sHseUW9$R~5@I?@+<2?3Lw_(EEn$M zT|bfCsZo;N6P;3({wvpr`-LFSZ6CfHA&BJl`7r82>-YIA>2Fpi<%;t2_HB-2t=n1m ziUXB&GKp&3-?BjEom*2V5@}T5L1@ zW1OCMc>NuR=1)3K0Dvrd7O!OKl>XEa=hp+l&M`bZtHL?=)N5 zbgt*^i*)aedoy&~9y!0`VSrCu6}$F(`x)hOt8V=FRRX%+{pIcT`uB6?gtN(AW+l>( zCUjo9V0%#npHA}t&*(i<{?nWN)Wb`h^jw2eMU|rN+x=^Q7gLAsNqBmS{ZCrIGA}sc z|9mH;A8hGtK43oqa}V^7&cY~+cEdCVXwK^k*i++2b1Q@(NKy+>l8NU-v(Mp>GDxOY zp{;QUv3B_&ZKEl);}bGC^q%&f_0OGc1!YDP|Fd|$e{|H@>m```A1y9cAi#_~a)iCg zij8wXLw_&u+zDX2HPL>%^~8Te0;`LxmQ5#!kwgG^4^0O>erN0>>1zUn8MZ8Ca{Mgu zyROEcXep9lT6>@^3w* zHLn+$r5nBeI*%?;!eO~!Hp)Pqgk>w2u=a5MKDywDtq2q%UQNq*_*SosBK zKGKfNjvAm682CxWPTPfwNWVC&zSncP?$}4ALgEiwckx1AE=vPD$h_7bvOsG;H5ZHm z^|3wqegV~>1=b91h2#8Qn|0*FEn0`&IV!Wl+Z_WQFB)=XA?<$?F`)+sM3YQUwmUGR zK6Y-Y;YbG7nt|0+4j34u2x@KcNs>-QVXEaJ+D%$thW>r~;UpWiW!d$;t1k{IB)QD< zepa*u$B~*AkT0;?J>-I1qLCo|Hw3WKy2V(Eq5-n7B+OabMl(mp_!c!Xq8>e-l9jRM zoImddM})|{d$fTu5`;|&mY%?TsDKhbL}_3dijMx&|DSb;KidV}uGUp}$lw~*@SDIA zp)W?dAE0R^S9DG}rNInuf9I15%O!nu?pz>c#Zqc&cIt!6*w~e6?XEL3=#=0;LKhw! zs6w<~3QY^<2NIua3&xc@+i~bVzx*c;+cTK*W43T~qQ{^Q+#hP9t^;s!6|vEj4(*0# z&Y(+Ty~ci)Fwp;k5v%qMo%Xk&W7DTXjZIe>6%|P*4VdUbl16iXEb)M0g(MK>Ue7aY zrYfEm%?QVFHS|aJ4wov;79S2?@9g&2bUYS5Boh$6bK2vOHXB;Dcl2WQKF3V@|9L!C zHoTfeGS?>&>ED$j&GW~#m9yqw%a`(OopRG0(njeuru{H~AV>_p(mIta8`rp~6Gp14 zJC+Rt1vj9ioABV{vz=FyZK5yVtgJe+!fywk$QLrlqiN)&$AXNsx*n2#&7?YwVX61% zR@7MT5HQ668vN=zSQ!mG8@xZ7_1g|O-=aROrK065(^Xn=&nlFA^tyQ zds#Zv#7AlbR06!Cn23BoJw0P`uwTO8R_#j%HybkA0h#kgI z6~iHthM1XlY@8oHNHLC9|hkCiqLY11=N+-+y=NI|2$BV z6vPQMlg`av+oZ!enAFREw$Y62Fpvey79-bQxSwhaEiohQVHqD6lJE=lLQD<*))xO6 zy=D33M*f!-cHxO$QAxMEY7^gMybO(T+&j;m?e7?X;-)9Nb8FeR8}mGw{}lQ}7v?4l zGJ?nN29prYNhjhMl!ZQ7+P`C&<^uTa0HF-=&jccmrd7S2`Tt?-odWB6!oJZR+qTu% zw%s(1ZQDlE*hypCwj0~FZ98Z8|DN}|IN!O-UG`ct&&-;6eu5n)d#Ckpko1?v(8Zw+ znbtCs-IVbGe+eDYB;HGy1N*=k1PUzsF6iAPmhDA#SH00lUIe!e+j9>Oz4!OEl^#my ziI`LQ(6A3BV<(59#98R>D>D&})X^kbNdZ$}a~}E!2ST5FJtbcLT?btcR?j?HDBSj6 zhSVQd>9&x3pg;Vue;Ey#f*DBr!1VBdjT0{P9&%@YES<6V3vZ?XdYw{Ne_YHj^q07XUrW-!O>0I=#bEP{>B zytdcx&yN>d$PQdmD?-HzonHq)E%Mal=RR{zBFF5{CkDpa8P4`Zv||jw97u=wIHZ&Z zN@<6`kxH}C`a^vUWe4K(yXsYu-ck?W1({?vKr1kyS`YGCaPtv9O6s304u8(jU5}0+ zkU%Wfs=eO*^)}<-@w>SQ*wX7V8CyaE6gD_?yfn!1tmH*;=(vI66g+TcXSk75h4^M= zXMg=^wodi{w#;AOhvTB)ULWvY)SGR8#XyVHY`d9 zCJEMB5Ec$m19NI-EU7h(Ua z83n&&qqqY%9z_MnSENd6{e6C}XgV+?d5D0+vNLCGmWsnogf{Y6Sv=?HbEh4ApI%%$ z##_a3=Rd2|7oz89XKDEqK0ZFKAw)Bw1?GK!!v|Ba4{&=MEKX1&QW7+a*V#f|7W|Lo z0W@hqwCK@9`fsZMiu1dw@a(Rw!_e8~%gw=*T5w?rQU-%UVTKk0{$tUQLRZbQ0}EX* z#mE(OQN$|JWsV$rI{4iM5Cb5i^_MrsyeDIN5ZC{(5t_k{?DTQX&LiVTBv`%8zTA+U zxZLns9%Q#ldZ!@y>s+Cjt(A1R@6AQa!BKHOPxG{0P|#mkTbs|3{HKyIDO-;vZ4@0t zy3}Y$LBn~wCq`K@i%-C1ItRsX`Je)BXb0hngxw`r%_@#Ny#fQ4IU=tH(%u+b1^ z?$p7YeF-t{aJD?vj&d<#B?CQsgukdWk4@X-khSVUqm^JPNQncs*M`w>+(nl|3?wB# zBt8&p@dc0zf<`X83vdJbX%EUnF?Lx$fgOB4*Ym{RR0`+EKKsMDSe`(OGvlB0*G7g* zn!+l*T)HJQ`|;mR#**9!A?K^GIZvw9?>>l$zt{y^u|Ph2k+fZxy;$^IB$uj`+GSyi;?MMa#sKkb-H4d(&vc-{NLOt9>_vj`FG}m-QB5M)3O#V`Te|II zP@s&_$j*=NQ-9JfB7#4^`k#Q-N;VwL-hAWDY*KI3P3To(`+H6DF@Ps`T!#~UD7sQY zq_^`}Pyo)V%M%7>@c~=lLz!+Wigl)RJ)(IJ{Xd3B04%k1T3gr%hObNVuT>t3 z3L#f3!UP=G)a3Hj6qw|IHAZsEAF0Q?inkrwhmvwBMAGS6QF1v>#6qj_Swe$wJ-W&w zy|28XQjtK_-qXWbGC$CJsncLOM_Sg(3c{f;cf8vbqZjVSoCM>>^FnyY?w)+>Kj}t< zykvLAiVC!#urF-*?umf)@;?{Ep8Rk1pHuY8b8rR7v(Q1v(3#)Glzs}4hvVvOm~7|> zZhW+dtE;(TfO4FdSNN9uzWKDDoqj`!6DxqW0?_0J2Yn|Ey5Ag2)cTrAO~qp{0%a|j zh;_>f2^k;PntbEE>I9M-`40wN)?!Qr@%Q$U`y3WaPEV6sxScLN?5;-8<> z7vEmOdYf#%JYf&gcwA1}$Rs&B@QH}7HEuF^AEyM|Ce60GHmb!XV^)aANVROs+E`8c zd;k3X>-?6=y3(ws2FF~p|5PpV_% zih@!n$nCM|Da`bPn>$b#KK7@Fc3jA&upXZc;hrY zeul#1Z4=5|G?`qS?QMsNqp7Qm-{ABDzUx#269Z#tgOd|AiE2ZtKNBbMSt*@Gm6UGk_lCCa zi<6SlYB3I-+~lHluf6SSy7tyv`R8P1MzgY54pz4a`P;shq|lGXTR-4{KQTJ`+I>Vy z3OW{y&~B^c`?18mF`D5U&(nE<^pYSRHuh{rLj8@j zWH((uE5qd1)?5+&YPD{+f*CbEO=*YMepAuw5hBOez2Q#)}toD z%Z>C8DKT&_0d9{GPrkpso%G=yQHk5W$OD!(wwH@o1dcidSc2XDM&jZFem#xH&Pp~e z>$UxN6h~S3td_T9;zxJMAy$Eik@y~W$pQkEfkv4WG&Ieonw51wwY-Qw=S%CyOsBHm zEQN#;O=L?Hf)pzP$siqal=lX4 zFffYy;+U$#claZpTBgWd<`4iLyhD##V-pB3k4e9<|5IuPEejpRaF>}k1e&D>I!6l; z;<|hZlm2$@@W7_Cx-BgxooOc+2@bZ&4DeImT4ITojqPR%jfz31`R=)!2+;^sHor)( zx%6IW5jG96G&D4nPf6F8lAnR$g$Nk3lnnzf=iX;+oAq6J4wu*AbK*-muGs}+4Dx`I zT>Fh;2&dro*2ZnyZDfS?Q&;_YL(kAqqANAl-o{o^GJ=HDZHZP%DW7Asu0Lgh!c9!R z!=jPM%$kv5GYOd6#d14{m)zB5G&CrfV?cn*LtmVuKjsJ4Fs?j?i^<{8s*3khS2ycv z`S}KpkOMm}og%E*T$AkV0dvOOSUhQAB%Sl?!h$Uk4Xt`>dJ}PwOtQ;o#A5>)_wI0c zX6gOz{&V7Lpg+<(pNcyn!Oo+!#QbZb(eP~e_gqp{c_|HHX0n_6L4ow#A~+Nkrfj?r zbEJZ$5!dDqoeSmfH3uIpEjddPQEfC>QTsp$UjU7eP`zsA_}l0h?NtWb$>1N{2_{+j ziOYFMi zRi%s7$)u#co1@7C{>((@k2K)dzbZ78>0H$CuLE1Bnc}0efdL4H!CsMV_4t=<;a}ut z5<2TqUnRPyiLp0d8$-k1a@BHna2R2k(LA-gJEzZiR)(!AX({ZF*AgYCNoVJV)2GXg zdsx)ImKF`Dv9YOWZnw*2RwJ{G+rVr+^|9Q1Ji@+CG}QR(>;x*ePYO!P(}|#t_Kho^q&2;B<4u8(GTwC|XLK99-Tjs3vL zBm?&N(49Ui{HckJb`DBPmO0BpLo3VMt?p+{*mZW-#a&6ot1kl_0L4_6&yp5bF}Vdz zltdCdWPQofo3x3ExG)67*9$cR!|_8(${HdI{M7k+E6&3Y)1|RgjJ?4LzkX!FJe@K= z&Y}YHt6HV}A4`~6M4knurSE1~6F9)xu1Jmej4U>yr}r}SeZLucD^k?EEsIgi8PG>A zq_++Qtf=rwQwa9B@v~$G0vrxV`}^4q>n0P?fo=+a>&Aa;Vsm_#jDVCjG*7)DH6;DP zA|HWj-#~0Zks!X<^b+n^Pu|#c_$;0VSsH7o*i0rOHyq_zLh7GdAn`Xok`ohn#o8Nk z`>c>Kk4k6r*pc**Y_5=LXH;UnS#2rv@k7w1k~WQ^{=p{CdK-qe^`2zlT$n($b^Wl@ zr79bS5-U<6KZoVU&6Kx!|PaRwoBZxtRwWlc>IXSXZKgx`iEyNitbB?(I&q%E3k z%i0sXhkPQv`F?p=v!KI6pBZuSqpM#YoSpF8ysBbi;D0D7C)bwe$zKlCY;{;? zv0F(jcN0bN%~O#T47n8guK9|2eR$4dB=$h>_6P44V zokHwT2cqMEHNlH7T4#4i3gt}63RE~CW>W4T%YQ@>kS8H3KyD~laNW#xa?1~G*UT_M9X!c ziaqi1rnXa4TXnPgp&#E^JUngpR`Qt#20R!k$;kzV?lMUV3+bQ8C%Qf#l+9fE@k~NL zEY(Nv$qZ1d`l6Y49Z!EgI)0_>PX*WRO-cPIe;kfOumZ-aVApQjyFBFf-_e_8<7PT< zlyPlsFXl^jdn6jXkM$19uf=C~e|XG$Ip5!l!e$v*Uz3=8xPullKWl!2b1YU%ncCvE z>+MZe$XNbBzRVvk<+N!?N_@`ZYjq-sUj-@#-`CeS81s2arqc7Rf|8a;ST8j>gCTcf~*VVyGz9R0&`C;}dg`yD6(Q84V=F*DUbGrI`-f=!RDwakDxiah%?E+S)j} zjZD^bMOxue;$8+1ef$n2*I(<+MV+-oMGZtWR%Q?jDwFl@Vz<(SCmSYW1q!www&}9%GvzgLQIjhq- zzJ;PtDw`JRKh#i(1p$LhXGgF%LxoTWQ^?83JqMRK>&O`GjwF$B?cHA!dADeJyY>)8 z&DZQMeRqS2T>Zws?s@_;?S2nPdM6+|*gT%hZ3*<(`BEfM>DAv{?^GwV%9+1B-*DRU z_uPyDKF-wJc|>xuL*zv$|D4}H zA{&(F*LL+Dn$^rT87!cQQ02_v;qS^bTvAg~TG|XN4X34zsZM3H*ffItRcr9|S$PEj z#|I`-UN!?WlE1{%)%88@`(O0-l-xfFGDG(>cDC%u%El=bAKQXKF1M>ZmWN9j3K zQ=N8Fa;COTZH6z1ZzpqQTzCN=0g!n^a49w3Ob@a0$33<(ywi`L6I!y(>6&zmI8(K@l+4-Nye&@@Z ze-fysG|-`ymG08PiJTZ$=o7w7oT?JFt zYq-|PYZH&zaCbD8IUnx!&aDH0uEOeaXmho2cpzV1GVEtP&fd&$#Dg1%{8dx4jMN8Q zF~L-n=;BNL;~f_p;iB!f<(2$j?MnGY{KF1K(~ipGJXt@1F&A?wwMKKgJ1q)(xuR=Z zh)6NxBHFO9O`i(IcwL;|Ocp_`TnN&Wo1I+bnv|U4|m}^b{UYi^P|?x%o0NgcBZON%A{J zL!0m4`s{&h!6vhG^EOXl@qW><%ZP~fO^yH|Lo1L$IBJy7WX_=JFPp=>s(U9r^7X~|`; zf0Q1o=;(M#2@uRJIevpVI2d5XV)Wg15w7{+u4%^Bbd#D2k5q#g78Wl)fp?Af@q0WnWKfbD z@4iXT9s1GL2D(2^fBtrH3E6~(lhp|5CyRukj!5zDD|!tin~Rl_%i?qMu)hx4MWb?E z4=#qnb`zPa=y7my9nO%SW^`-TA3mt$33$IhFR@4 zA<3q?HoR{K58>j<5JEw(BlMBE1{kyCctzg!3tGN*RKH9jg5fSjMIAitEbr{hW#OibW!+%SN0}<18}6|fQc)@ zMgkrzevabeHy1QCaB4SQ7XrnPHeP~sbe?;_%vEEO7h$)&{{D2em$x^zH6URtOKwd> zG*3`GUr+Q!oxD&%3eQkw0C@F1+F?fy{U$T)}fS9*p2IdQb%iR7&tMZ?bhM(=C6DCPCF_ryX(e(AeE;e7u)L{$Ov1U3Y7o|T~WSuzd>_-!;)v?*xN`*WNWD%w4H z32=^cA`zX@%;xwW*+;z;QF`@f^EU8{rr&b8#-TdY&`aBJH-q#2T|_II@WYlH)rnmI zo=ld_X4~!Z{prfk@ZE_CQHF#Po(x7q!!#Ng*Ss}646PRQzemp70QQ;grbWwr5%o^G zu*87I>tkPkfg0=#H}N$)e_jLof{zgGB)Q176Jnbb3oIdB_hYE!}3*92_rnNUL+=&gJkbP(!hv}Rl2Vjhsse0)UI2tu;n~qXqSR8qh zp@v3p2$?*Ou9(IjYxPrXG&WS`-;6^qbEm}SS;giw<7E$L`VH`XE85HUbk1YKY7JEn z;h=@XVc8@g<%KvnOKX`)4-@e@GxiyObM}}3JR632tEO@vA{n#Gpt^n{XctbWCwo=J7hcQ^Mk3aPL!vKkGC|Q^B`>|@Ul|;9|6Cd-T)rvv`asON28Aq{aQMKYQ=ll*1NhTBk@jqy=TINCGkijw}6<;Qyc zLhyimCNDg34fVfUQu*GYLwa^2p6@FNf?6TA*5O?mi`HvMEs8fz5P0wKPx?w5sU@>} z#aC&pW}joYQQad$l6DE%87c1LKK3QBBLD9Z=N&=fd10Ojk`0ncij7Ns`~9O*+q6g; zaD4}BXt>l^nS$Gu=zTFMUd(r3DijL5>;?`qPebdo+f-l}`28O2;I>$uePWgX+aks3 z`I>2|k3&n%RaZr3$BnaEg2jJ5Dvy$7d$+;r=xb4h7iR;lrH9Ni0`NR4Me?UR4Aro# znZ{rHhHP1p(KYnoSg?U(kTvj%62X8@hCvqDY!V0j*cC~f3zG=LoY5Il_`!fZEThU0 zTs!)#7yuyp-2R0@PJ6rxff5h7Cl_l^ZM4Hv!=F`UFQ6$Ar%a;PLI?rZDDuZ05|8HO z+pwl6qb7RQ$uWSyFtUZ1S$H>Rn-n^7!hUd-idxOg3{XBERRDb?PKPYY*5ELC$>cgH zBM*(9`e!O*Bs?uL*E=*!1Up@rcG*aI^2_@5UZeU2*yFpvsbYvlhJd1=XY3m4{sVB< zj=9VFZd8m6w&v@gpZ_VhVl|re{Yq3^^&LKp;^!P+JW4zKBf$OW!~d47v{#u;?yllo za;*h%_E#-8fdnaDk8Xt+uKu3e>@)431K&yEd?pYv)|^16#GQSmg~M_a*QBn|!B zbB=sIOih{|X+`c8V1dB|Ssc`RJc2Z8Sy}l?l?}psxY-hLpa;|(=6;4zK|&rsY#L$V zahF^TjcXoMq!2!%Ai3fZ5<$LbjP_cVu|^P3F*O$9QnIiW?Ob@m2NVB}Dtk9tKl4Wi zti-e7{u;kCm5Eo!R0Il-8w#-{0=Lg-p;J0X3@w@~|7s}UE0ge8lHm*1kICG*{s^QR zR-Yk6_H)(sib&d1r;j#c?Xrlfn8c)z&g2kHJE}}nz>;%wr_I=i-FU;}-mHF6TnqrKK;;74?a;R5bLa}2jwD)z_k)ZYC zG@TpY^#H(F#Jvt5L@ko3OG0=wwW`ZM+Z?Um5%yg5s!1uIf5Q7o@o{nF6IGQ9K+F zJuMvqGRkfMOOM$WgKW{ZW%UgwDj;5AiG_D*Y&wM@K+udgycXaW^J!4?BFx!ZiExf z?Khu!F525YGs{Q}jTsZHp}{NPI#Y->LJq!Dhy#~Rv=XiJz_&3E!JH0QX;GbTb$J2~ zNZ-!R6;!o2=tAVUnmxN+T8YLa@WOhoYMH1msl2~dfld2E#dIQfgs|M#G$F$%V@dg* zL;)$OM4#}peyhGNtZ6t>RlsnMi|3xGBvQ+76qKLP+b+}40D&ebLgZT-a*8gPVu_6U zEhpA z^U2)k)#&EWNY3g~jk&8;6100NP;>M-0L6KSM}TL&#-ebIf{|04MPiWF*K%uM9`#8G zl76Kjc3zwb8H!F-;e~>i%7tzC*3KJ4v%-)jE{#7fZW8(0+iIEq5Dz@-dsSxLhZGMQ z#Bl+`y%KcL-E%T79u!@!jS-aVcPZ6#r}Cka_zNl=6?7r;g@rCzg~G~&44th#qUAvx ztOKWVW1=lnVjy$}#zu}`=Tgb5-R4g)TG;WO!JFIo*zrbXZ=E1|)IGTuI|uG9;@WM| z%B`*DN!*CAeKqnc!r7~|Qd^`?{8i;X(C6pdUk^pO5{@6lHtQaYiDFEsy2Zcd-6C(QZD%`kAld&Q~f zD;Qh1qYcKLUC#jNboqA^OTh|B*;yEgh+&THBBV=^Lya^XRGL>Vw6D9>^Ag`bF3BW^ zdX#)YDjwWrLtw`Rx4TNPMm6DCHY#SY_I2pzhH58NyBD^9HqAxmQ~B&?UXDHIqq8Cs zQN~g0dSCeEYWY%ml47T8``hwBwZNissFAm~yVV>>^i~4H{8A9E)6pY8f5nM{;6`O} z@h4X|E8(P|p3W9yCRq1+3+KL`;DTHJs!1!A4yaI#Q3d5ebFYdudg`mX+AmMW%Zra# z{hPTnZ06L^Cp9*T|K$RNG?Z1llT$MaJTnmN3XW6Eo$oYr;HnhUwWz)EWHzorcE|=k z$>(nlAG+!t$)7(0k~N&{hR$rhx|Bwy@doG(Zy(+my*E_#1cLLZa~l^%K~miPRR`!r zUr1afls?GL-uDAKy0I%aw`X+p8Uu<%9nZ>atC8%YYc3*V8syY5`fVRQnh z-xV6X5S%;Pyz&ln-voY|z;l!!j1n%gj?Z*;r9Uip^}TB(I}JD(*de&3byrb&>tMsR z2h)5ITv(}GwRfGFZhd2~_k3oC?hZA6FAy|EQ`TjVFYs00Bahj$QH!b~e2R}ayU4%s zObTi93pBZD^4@3$G_`zN>&hu{O;49=^m)Bpw0a}m1zl;ZEM66u8hAS_cH*VY^{Z{k zU=X|6ePLYsG!zL}%Q4o|0Iw+KDq3(QQ=?GMj>MDDMd zN~(A+-t#|Rs`A}3ONb4yhAsh%n;|0nRg{_gSI8kD%wT0l(+l8EKxJ5HO_Z!t-E z@5u-%6HILaA@gnRQnkQ1v2ES*PYRNCNG*4=)fN3#xw0&+MG!Mu8qafg`$O4{z3!RN zt`iM+hd7kj_$es+%rIN{%Jw zFnZuTVqyZ)Nl2*NV+b)5LZ2Xdh3uy5ya$WZe$C&_>3x&!D$3gSiK4%Nv#ibYtxaCe zU6^A8eU0?Tq6Crfl3`=oM9PO`rtAIb@3DH-!;BXxkE;xv()K6*hXD*juZO3s#?#NZ zLGI2om+t2AIGV80m;NhaMOhBRyf|~EwUIFMNDo<^!cXCdNS=A*V;TDM60%c$eh8!q^ki zVMAKlf8Rt~JPBhVR)EWH;-eTtZ@lpP_^Lox>gPc*4>A~4Eqwe%HL7S#3Vja+dUiSC z?fG&fyQy?KLH%IV5m1r!3(Qtp}$V!&y6Xk@OG0Z1UNpm|7Wdk$j0^RfKv<1G2?$q%s;JSNn(u!wdWqym-No19FW zj-obIo51JO)EAKLIyNL)a|xSOl2=<@<+VF<+a5vFHruuq(m=!qK7E0soNl!0)~Wk= zp?~k|DZ?VeCR>lGE0xW%2c;G^Vm1`LUOY3Ji4KJjPrh{GJl$ZUB?JWwa-E3f-47k% zPccRY2!Q)jfo#(Ns3H9oL5NWRpBKY}_Vj>rCvC!TL4CbVeR#k%BH(>HWsSR~rJYv! zDoN!7TJ+7hlS8(%88smGm+>2bI$*!N_#0jW(e zn8XxGZfuYlQf@P$bE^EKOIQ4rT=oR0=JI)WyBobgdZT$zYE#5mr&8AWOMIF*sWzSI zd_xSLpBUd$Lw#8$gaPdke_QRB(Kb^7p#hDJ_#1Hh?Xp2IVJhtco% z@P`rvdw#R_kN0@Ins2>eHv5$H(dm#T!SMpH2z1w=FqAQrZ4z1jk{|iZr(|7z{ITN2 z(6}_uqY^rj0KmcYA^`PXv4o@srw0cxE$qnxkO%|Nlw5{E5$FszJ$l#DfAhJ78J*7@g zTvm%HWz1^7^Gr&P)%*|o^j0lh>F_6|f|2WOW`_Y4^kA;K7joYIQ?t6E=nch>z4A*%0P>t3yGDscg8yNm8 z6kr`5Km;NL5W2+$C{y>m9Dx9wejf5D7$kxA2oh+0atYn~08Yda`v})e0XCec#$=C+0`IDV2@LKRbVZC+2QcpA)WyDHDArRB&gU2OaR|8_K`1d>nSPH^Nls& z`S;#^A3VSaL>~jdcN&W@0#OB}hXcT21ba8)=y}lttUt5$L{ky7)PWZX+(Q^&ErD5! zzI?&~1R(vf{Zkri=st)IvGMS3`YOk^Hg;K)Bl3}NZ|?^;?+R#~W)Dhffb9#eO&XUIk!z!( zlx5jWS=!8-7i8{+#beouxTNTe<3^P3Z(k4F9WT66gG zn9#q>3#4chX&MLC{&jA6c-W0f@$*3KKlGpPMoRYWVYLEHZ?Yze`!LPqJGv6MetAvA zOSOxuA?gzi01N3m4w5X(qKJ+y)Bd5UkfkN$elWYXJ8U`%IN%JR&kjHbi4%71Y-_hgw2r!uork!ApKh;=_q))I*LxMRrr`wQjwns}2ee>T5)*3vH7BW~|y=L%a2W##F6hg02e zm6^Otf;cFDG4-4#W~VAu^}f-bePu<2Les$^W;L|eT(>{v=MQxe5M|eOcM`BkMq9fB zNe7M}&o>cBQa_4YOk@#|rgK4-Zz+Y&&5%b1gfRpyH#@Ss!wh#j9^bF)oO4qYOEHPh z78;f-k6UOr0p z_L0d*My9mB{6k+2jq*P;V`DvYIy)t@)7#x_obQjTN#m>ele~^2Fvy%|pppbyDeGfG zVVLK&+b*Ta?1Z)l&O=m3>g1~B@NQVzoL5W~nlKX1`WoUk0T6L<#QxCVe-rhV?QfZO zfXez0Y~{#}*^gWfT8*iS5z58+?7~2oz#V?O{Z7R9k_znU$(}l-Ys0%3vV5bzNab8x z)pX|OUdxs+WO3XNthTgtElx`Rb|oX-`ch~g6_;*iM9KCdF>AmxCSnA(IE z%<>hWFj<}Z`*$x*R;Ejlo`$>Yq1XEJw?hIIKONij--Duhx9Dsx!96kG$txgvZ+3e- z=t?nb{U!PMxS-k4u;?I7PPH$NY^w_$gWYnk#R2X1U&cp?0;l8GEY(*_7BX5ggZivF zG>LydIC+k43;pe%h%o8kUm5QOpwGx6A#^U#q(Ygm*aZbpM6>_X0w8G@1MPW^kGW1G z?l*?Eg=JK)iz@NH-Zvv9p=7X#Kt@|iQC$ifQ4E!q8-KtnD?=O?Gh}g?&BG#N6VT?T zl?Ec6^_nqww|7Y0kVb=@9p>}ES0u)pG;PwF|RCn`FgL6|Xc1u#(@+ES_6-?ddp2&n%Q0X5sS_c>V`R6RS;Kt*5%f2#xvj)^%P*i8g9f z=WbTAMCA72IVxOEfw_vjmZqLH=bGFSoKE{=atLsZgyd>;+#im^8ylmisW;pDQjnCC z|L*(A`9(mGdG9LLA1O*ephEIn{)-X>rbtmk>n;*&SsE|D%xP zO#=?iO!C&Jg^~ljOKG?SrD($d-KNgx4ZXp$Qu_O~zf@FIY%N<$Nqt6x8Wti|?FQ)J zt;>VqU|H1b>U8~Z^|2e>Z@}z`xNk2yf!^rdF_~;{Pa>jbp)0`Q2BMhB_nw^x&o>*g zmR9LS@@dX{GFew_z#Nz-VRQ56nJ~1Yuf~$&`^4K@JfJ638NzT~N@9Bzmn?Zhu&U9z^(fKVlxw#rQa~ zV!}q0)Q|KnJZ{HxUiZ--N;e-mjg3cNTm4~6mFAYG@F(Z*%r@uC1B_T02k*fK4JIfF zcF%3E%YL(#zmsqhis&>q>`(8X!^3s-#Km>I%#NRFBxw=tynhx)Y$|HEYIo^N_vQWu zAY3DZ$&#{LB#s=8nkb@a5AXt4%hEt@BT?|HWod8s-?DwEP}-&MThO{KzCZ|94VQ$n zlY;W*hSTo5p&X@L3wPhvmiZ3XFLZo5`?X+J)n{WrK#%VDs0*3U`!{IIEL1$+JAz!o zu#p$uxD@QDuEV=b`A@S)<6NypKL4JK(9mVY%EiH#y}^wJ)%=@!bad+v9nrp23_w7; zfxEE+cA-UR7T1>*?UrE$kk)2mWc1?Gl5~A-F$JWXOmN~NFuF?04dN-wC}a%35WVpM zl$4yVU$-QC@O_i@JCxan>fC7 z&haogcDS?bq;GC;GU>-yOj!N^sZE>Lw=sg3pX{g!BmahWbhT(~YU>7+E$IVaB(L^R z)+>?3)@!*S3}|+{*fUrcU+hn3W6=q-oh|(}r;#x2k0wQFX@n}X9C(ON<0?n`O_cD-vtXaPN#>+vo`vvo zU118yawIz+KD+2UoDtQ8ukrYG&<|mzY4m|%+$eF&qK3eEVmKg`Hbn!RhZjs88kJqR zr&gvN^Ov-~c&8Yv4aX1CuupW{XO6xtgL|?O=pAwibe~d*DDhhhEG|90D3f%K9?+F2 zQXzy+bETF+>n2MF#L7iEGVZ?)_VCUJbx>n#3Uc6Das3o=X%O1wUAe-GwSA3|--p7m zsbh@c16|SpGX=sT#(M1vy&g8jjPUVs95_aX*We?R_5I4L&~P>vIS7()T_Zip=+0+t zA7Kl4!(m}(YV;P|Y{|isl=puT|&ZwW$Y*hL1pP#A>tZ2VJnC}!J z3oCH;ENl2jbAbHJ6vLLzOoM}M#3&$WNKQ&k6^|@Vm|S+O$`M_*W*4z%mi?M^4DiHLH_JMgfiqgQz&JC(wxySSHB8G9jZBDlT5KsEvkc zb6ioBjSQ^(4B4a>ji}xj7)|O$He!n%U)FWjOp{((w_enO$L;JcS=bJ-fgdu`mNYK` zQT*nvrQizac|U)6&{QqXx3<-mQiq3Bnl*=Sx~bi*RKT)+LxhRDC74R5sZY(VC5opA zjti=&xC0f61ze*n3e=z=sH667(${dB7D$vJ;qrE$$;Ij93w*uP9p^hd~A;?iW@#>T0CNh%ZlIwG>N1_9U{(7K5Oc{lb)9(v~YS&{;2P{w+7 zQSntXyUMjbt5Km)X&&N6XZaIw@rMg@R6(JP+AF(?o#%CFT4qL^m!vOQQ`Niraxd0L znxzoA=EkC#9nEm}RYg`45eHoA`Yl$8U84jJ8i1RyNnN0;qrm zG66)^{2(9Vnej3w%gIUJpz-aJI^6|Zo9M^A*j`?sg%mV?f4_ud#$bQ*b7vZ0WtHnm z85;Go8vK~|<14{o{&!i%TS;@WB||#jq@!yy#)6M|#rE6q!;%Z?|9KQ>W*n9>N;nq~ z5Y+ceP$}U4ObR?hpIMUpWAKuy6S#okSIO%;6*!%hmGZ2j38lTNmD+^IOs>N-=PEVOgG(=O}0%itd=rBqT7D>|zTgu5GF zThaiYR6fcm=tCeu`~O&(AE#E#ngCBR4mjUtr~8nJ`}=d!rPp;}rI}387YWQy-pMWP*-8^Q}Lw^#X&=G%OdCFTv;JmcE z9fwK1DF1sJA2npdSvbR8p7DZ%LS*3SiUco+_*xk}loo3R13VxC_@F`7(01a$A6a6T z421zM%Bv(_OX*N)K@i#C2hV^1?Wts%d()OWJLoBSQA)MyQzR*JZR_7&#nT&<0{ru8 zds3VPq*bET7^_!H0#|dFQZ5K!6U3hgu&u1(Dsr^k!wsl`2V?;N^>g!+Vr2cyi=dM2 zF@V`D&=f;e6PXU}^W3}Bc}L%aSYU@^8UQE2 zwfr#mPoM=U5`?U28PUZWRi!=qu|nMGb?3&&PeQ4duNpF#27C;issC#bt|auKp}J|o za}fYpkp33{2S%_AJtzPTfb0^={hAfZAq4`^PLSp*(D;l7sDSimJl~3024xb!+nzoH z_-2C?TtIMPL&v^VKnxK*7%X$2Ow4-&GW2ypeZ7iMds8qNaQ%?6!#0VE1?(-)_j z{&;sFt{pG{=GeAl&hLJdDB%&=zvsofgV&u%0ODWZp+4}$J1O}(>_V^QfVWGKk`5&O z(+@xqvcGb+xP(L(9*VXrPaVhSvw+u?vjJ7Qx>FTWDm;V6$^dJY%G_ zvn?&1-|Z5?Z&_K300u~#1iiV55xqG!0<7tRVb@~mKVn%}I8-c*TFFrcponK)7#G($ zt~Jcg1}>qZntt3`1MLH1KUU2B^Eg3Jv%#gPp_boy04=0P|7o*acy#`Wn}{go+dfx% zdSXq3XNJ)S;CNlxoB$&od;4OU%(LyBzEiUa+fU^x^=e;j|7LpV|97U_9d*C}i~zY0 z47&C%1c8?!AfFa=3>7Fg`L5)^w{yNil%2|U@+#QS@Xl3MP;h&>QeW-E!RFl1nnUcg z_;NSlm-2r^RB>@>yWCE;U%i$Og>`kGSKRnU%Qa_BKod9}0s?|R+@AOIK2cFe@3*&z zT_C_aCiwrfoj478JCfmGT`MC)p#_+1*C$fx%KtRmye%pJYq;IqIMx4?dHm4M0D9j` zY$T2`3CMZz_Jxz$kx@wDp7$5LkKF7X@uTD7uDKtMAGVj5r<)cPO?pgDF|Ip4T3?RG z$A@Q6q&lr-KVD9J`nWj;2TyM3esA=7_@^ph#}zelxVfPkifZ5S=uT0pWSgU`uf%1b z9@ZZjWzhs-0S5r@)5jV39#2s=<}!-F((7{L`Jx&s%*NGd-)1 z{;zNa28Odjz>DMQCKS3)fE*KFa?b0~SP%mf^E(QM?djv_`;{s#yaQfuZ_zo{fa6w2 z$JG)gC1rVsSW%R zEN#sOpM(CZzK8#-`l==MrO*;uo#wv4krBNVO!(0T!GFqS0U57tZ3#C=Q&?5d@@=+- ztretQz1khlBKs5N?;lY~b#-X0qhoifF9NcWb^9H9Z=TN z^3VkwIa&&uAJnvKS-P}MVpD0Y$5WtY1)}C*J6s6A+F1n!@1EfI^iY91B1rG*;nWna zy>>LJrcQsyI)mV%rn}#?sAzVR*EcX$Gv;(Z_K+zk)rIl4l{oly=AE6H8mgG~NF!(H?I`;O?C{9hybZ|81zTv3oSozi{f>!Ds&OMGFA5C5l~uq@+4 z(bII@yh5u21OKys;U)OZau$vxEQ~7p$VLn1|BrvJw)*?`fG;+O?J5T!b1roo zr74i1u8P0vqGfaOvK58Pejyyq`Wx8Io263Fyf>T(Th{{5^>|&bwWzk&F20%0y|4=j zku;^SC%NJHUoHT}#K`Hn^)0VE(_3Xt%`t)$b&#fDZQkzLT3NYY2b}(5HF1|K9eVSp z_hQ8WqrG;`Jas0HvZM7^+VV)fDr7K4k}Ce@Z3=l93XnnG(NwT6XQ;AJ8X`HB^@MF_ z3ETfraxi~p#2Ne>CoMLTg!$&_$-;JiHm^$B3I@7Hv&kB!7M?#c+0 z3c5bw!69hS0KwfYxNC3%1PksuxI4k!-66Q!;1=9ng1fsr-|)Q8?tWXfe^E6|-MQWO z^zGB|*@Cwv4YYYvQu?OZrOk;~;Qh8ERy!aBN9kTO-Z4QVYBuJOqes z#T-8P$XHmdz#?Qc^w+}=0fZ$rQTQLMVla809~QYl0RVj#wE4O9FE!BXL+G%ukoi?5 zuJIho7exL=z#92t4r3cqc?}(!_Rq>s&xJMwMBQnN2Cz=Xg>Pxn_Q`H}k_2O(f@Eg4=9v(Ui<^Qh;EVr;Qm727PZsfl~Y${5@o9eQ@ z7*u%karANde`Gk!0ig)UG2MmWDjnn1_zZe=Yr--+& zDWF5sQNVvS=D`1wRb;h21wQP(I8ygL+1F#|WcE!M|D)zGcT*&rA{{F>`dKmHhGXf6 z;Y1MUw8%Ukm&%=iFHJ>RBmhfu*d1IC_zERsU_Qtg`<2}=NNLIFyrTwL?hu??XrKR| zCFdn43kk8o0(hVTB$OIaD$G1d`57&~34g3Wr@r}7OPeXM#E)8|3iA&Od(~?;|HD_Q zFmUN2HfJ#e&@-IU9%c=~f3^UN>(^3eskiI$I*y@5^ynSosaWz3Wb{41vlU?dfz`OU zG{^b@i&WVdi;@=4LWdL8&8)io{?M+vOi7dN;#ggd*=6SMTlX2maYQ7~?@TZ5KPUH! z!JRe~EvU-xq2>rENfjS=JuT=$#A-oA_HnZCMgQONeuu?!3E}%4LJ#Ii1<*wW&K-AS zH0*!cs?t*2&nOL6L;DGc>lMRxDueleLI~k~h%AG+io0%>3!$OJUw}T(4+k`Sxz)dT z&G~ZCpmzgA$jI!3M0|Gww_nWp+J&}txi_mZ;IjS-xVL9cZXm#Cg_$+P{fR+5u>`X^ z<6y~QYs+z%p>X67A%}M|Sid}P3CglrH4LMVq!~p@n3Bw?#}&z1JBRzu$pJz+VEnZlx~@9ZXca6)wlxcoWYWd{G@Xb#k=U zqUG^Ii0p{{dWeG%$swxRkj$jkx@Eu3TQ;n`L}yP-lMiI%opg&u#G#k!xDcrJmu^g< zE?1eJ?`Pr3%uFFBxwu~l(}0KzSm)$Ki~zGom!(EwYJGb}9=|^8x9FBNNU`EUwaUx7 zuF0m3Ayq^$gk^3;!TUf6&@?niDG&u2`3wKf8wE0l#4#8q{HJbU<-!dqbWb)*fsQGT zUBFP;ZDf%v*Jl7Il2 zH!KAXrY4V;PEDa`D~q)AH+Ss*-!li(PN#)Cr4)B14{*Vh69rt&?(Mx@omOC|3P}mk z3f`4{I}41AEUK9o^3?{#D8$F1F9ZcfR+-yyT3jGdwMat4A+CTnBd`R_w==RBX*n5h zk!2sJ4$cPr>pS)SAgOqYKj9)ZO21BeI!_~&ZZ@grV zKUE!>dEz=)!;P6^$LHHCME`@ORyI*7!HP(*1g%Q}7Csi@#~Zjx;qgUi#x*1{Rw%ce zHDRMS$lZ4~9@K=eo2X3<^%ELuHiz%QUeE8i>+U|I8Ur1lMe)4R9Iz1%Ck@bZe2KKK zxFd(aSu)5b2Q)ozUD{>E76Aw!rtPN7IUWX3be_fWt)BG}s?8HZh0%jyI2E$T+gF80 z6FlOAhtJJj-2?g5t(?aC?qQc(`2naEHM+{U!*9Ls{0;oSaE zEnm7XcXlQ^HAJ0bvv9wi;-DsHa0^tmwOwHQa=cug-eF;4HhcXIXjQ8&53&UA%Jl?? zXGYDYnFI9bO!jV`@QAmw5Mjj@qF)IB7Zm2G&_u1mE~co@rWjpS-X@%473f{x!)ijF zi&|gzOrCR2@NHyuO?*VG(0?inKbv{lDrfnbWqULEMkApebA7JHC6;L&U^By@_t@CS zk*8{T(tExYZ1?u(=#CpWtMjtv9qYQ2B;;U%DSpXoy*oU-fBTySQ%Y9}v3sOJ_;p=^ z5fj}3_tA$GH4fa6`ap^>{RL;__rpy!(bwbCUzRwz&9cwoI|H}ic{fIVY16wC%+kEh zzG(>aSWo&L*(f63SHypGZ}0-A_LhAHN2-v#mGF9aawHISTO6o%YW)V0)Pi zB%?cS)8nLMy(lqL2!b;g{C3$*We@KBw-8ly>xT(w_38d?Y&j)IZAw1UL#5iScyk)I z{2cr|u*C;tcjOilvbH!nt$Kd?^gB8lHTeS~6S0jR$E9{-EN}LiU!HmB39|dWs$FE+ zUPge^iuVq6y}w?kipieW?uFwf>N$IA?g5XtJaWfBJk#@V26EB%E_w|rNy>%+UfE9=Q$fVNfM^8yh9Z1F{)$;&p!5(tnY-^{|Xe$CA;1(MZp<05$7|-V7tE z(C_;38+hV}bgAH6%&JM*Os=}Eczc4`=Ev&Sj^OFV)eyq!sUEc2h(57j??p~JIa}N) zrKp6Pn^>AlaDcTC?K+^dh;Ql}7`iXHVpl>CP3vz8x)1AvcJ-hQQ87Hu99T=9wZ z#7T~MD!1o~9vfcN4D*Dsvg8#f{)+r&W0pIbn_JIKH)7V%dZVI9xZs`I>3j!v@URf~ ziI>1AF5>b@%a26tk9_WHG*$4Vk-A&t@|;4VsKvbCV@h`ovPQ}4lMrTRKVST84&IzI zQmRuJ`n;h!>A#2uiQn{ytb)(8#OdTYnof`l?uAFQ0Y^)J*R_eM-!jR*Q<@C)$vxuT z1i8~OR|r6^l1f!naC47k-WAcRVA5YNjMLe$)juCacB@Wa^1Y!U)=H4se^5friu>xp znw3)pb19GC6J6)Q%@nGJt*F}=X8Jc7s1r&I5#>|9iTiHx-Ca&+i@9|%uTqukx%QoZ z*RwchIv;&HS8F#IT2u!fpVM6{lJ*({j(WwBRSWZ>918)%LTCFs_aigj>oYSN+QtP_ zX3W(c84?%96>VU&1rLHcDGB-)I?XTGv^=3W<0N!;)i6%;FX7R8!1IGiP=CL(GgvL& z$koQBC0A`v<1ls_ALw2E>W)|YLE}%(_#Ym5DIF!{FCDA8qwXUzW?2od&GMG%nfJM+ zU#t)dglNo^E(S*oK4J!2bQWn4OPVfcmKz-RjG~VQ0sFt=7-M5SQ{teI}RsBNm%y zE*KPB<4kuIFRw9a!SGume-jU%J;~QsweFQppBzUQU}j^~3umIhTy;%|XoQM0jgBPKZaXH9)!&!YZV zOvYD$E>WZwQ~gq4Ia&a_PXdpyJd0}74D^I`v{SMz>bij48C&+*h>s=>+6X9>Tv$)c zznea|&pdR@(8}@&xV5eqpbJ)Eou43GkfY}Qm*^XWwrp!yVvT{J7{?=2 zm~M=R=lC1c-lvBSDa#Ytr^o(a>)uZN>DSG_Kh%DWc)Rj-<>t|Uz5$~)Tn3bb5g#vD zdJyMnxQn4fiusb6k=0ek z`F}&HU1eeJ-#WiRE&H(=>0l=77{}nL0Y6~<Oy%}TRli{hr*eIwXJW!P5IN#@6y)d{P#yMT$RM`0J@c( zBxph5>WDWa^i;-WN!hZNQ0s#^edI&BK>FAXadKz@5q?w>9$0#GyyzYAEK2CIOLh9} zEZF2v`o!$2-8DSF2^o7n-P4P5%~on6>GfBo$Js zA`0h8=+XS5W6J~eSg9DZ{0-Nk85H|O8TUK%NajrXUeqP|wBXZ^mg%ft?T4J#uBrMu zE$zlkEhUQ~QYP*2Xyja2pH%uCItEJj4=eaA47;!%rJlnTuV7z1rvDYJd~aEHc%94Q zxn&8FLKXM}v+-qlXdK4Co`y5|E$;giGw%Ceo%8e84bLivxrU+C6s_@DyqLRl!P~>q z_0Gp_y5S)YRMad+s^dh@a}b0NMZA`N_J0>b3=m`FY5C&Yc}w0%sp{ zPm3{@YWjrcnwH49!{3KsgN~E)Dl8SZ=jUmKYg#pAjWuF2p)#*BMeJ5VFRXPa7F;8{ zp&MvFZ*gDR7yNQ*Z{mDjQTf-d65T*ze+=j+c!=QpzI-e9mSW*#dtF_{+6Aj$`&{gY zbt&kkv8x;#&t_wlNHh5VR?cKXLg{F6-GP-UDb?65L4|=qnY@Q61A*mXaEi}K&MJP+ z4^}ArF+*YP=zfd_aT2LkRFoREisZe$bWTzMXZ(=<=7YC7?yQi)8wSv@4uaqSN6oo% z{~x^uuF#nK)K4#Q*@U0&!_%4f>02GU;*)5K!L0um?{bSK2RR%}yHw$z&~zsK;3t2E zhMkGQCq;`lMj?irrO;}AdWN0^LU{x1{zJN^=rsbcAB!vBQm`D3|LF1BFC{9)>6Q>{ zU;6CI@|>$e3~~Dx7+VD}QLAl_t5Is?xp=h*_A8Gjp1iFtxe!%Pe9_z*764jymn{YH*e3@vp5tdg3Sa5!1C^Tfd76rb- zTBR^)CmtA&77rQv9`-D%kQ}ru8?I&O^&9+8FGw=n9a=FksYN$XnnI?<02&Mg(gj61 z-Uva%vY8CWpRWGr=D_@FKeZsZ5V4R@IBLI;jsLJ;Vl7BSkkLP$2l8~>P`w%pqfeOUf_bFq=wk6pXdi~>{!4F0Dum5W15LP=Qqg>-&{6pSds;`p$(4uG-M(1DTw_*ujc z*!1I@H(QWL6P4h@x zA=rm1JV9KHfD8Qd3tjqhCRd+6qVW2YZ%B+z;KxJM(YB69oMZkF=k%6Urb1vOp~XY^ zr^)Wf!Gn=gn`!J=Cjc6;Ml&qHh_w%l6@Tc=Nx*mH+}zChnS}CeQ~Vd|XK=9Kl7>-^ zIAVRE=(I|IGC7HbJ`mx66xV}9>5$N1+Mp2jrjG~F-IqOjX7>RB+tHFh-a`H-YQW!Y zZ}NSrqa&ew4Q0e#PXC~Dtd;YVdgy*oTyEL(jM}=vLo_U0iR$|zl=GjZC>8O4kMYOH zUHoVoG9rxX(!;YSL_z*Mf%y5$=<5jxLeTf&?tfmztiEZtc_r{Hm!!s@72!}mNEEi} z@u_W)e%;@8+8~KZ|EQ6C0K#g?%R3_M5g!Vz%Th~|t^n}*?8>3UaKiw@?W^ha;zk63 zk4T09q{_1Beaw}JtYpNHueSA>95{qMTw~`&p+7iXA$dcr+TtIat}smVePr;+MLuSR z(7gb>FXV=i7$7r#umEf?sp>qwf>{u*8PXv_?Ly!{1}BmsQcR3FZzs|rQa*Vy{dXoG zm^!Cr^x)dU2Xn$Jk{Z{B89c-knnptwShV8*EF^Tp|9gy>e&Hbq6X_-YwJGyG6%Idn z;LH(;9fF7S5BQiW|9T_VQ4(QK=#QjR&>Q2zhge zV}>g6z+tF%U+S2yRUBmZk#(w#-Od&vlJxEvaEXEue}F3j;I5=Y1j-Qwz=sOx1o)Bz z7Lh+NedF)ER{pPoc5S+_fJk}68>2xT3mqq-1c(7INWiE(udw+&E`02j1?6&QdqKu8iPN#(FtOnXP@>y<7y;!`!zBb>p8`dzcUCp~TZh8igw zh@A*`3{j6#e^S;X@60S?2C9_MzfBg4m!i z#q$(Uf3?mzJ*T2wSPlo^jXUGUOKP?qImkmGSYK!Qbi!0$5c-}7aBe4Y0+sH&JuhXZ3eJ*YPaa%%4#ECqs)^wzb!PXK{ zh$yCaM9Pj0gqaZ_&v+m4vu;N;VCM}lhXOeVPuJiS;BW?;GK+#n3{{>5^W(L8`#wVu zJa=b5tnyE`23vUWsmj#ajU~lpuPUNMqT-OIVNI9q$pD~s)R>E#Jn>|k#$T_vnU!jc z)nd}sEx#Zq!)Q~LGJ1C=0FS!^0V4yTuaLg)fF0fu{;1g|P!B=n(YJ$*xA{YOv@M|> z)%WvCK{Tpd!PU)k`F(#b);}qpw@0wUz5!SAzAsVU%mJ-$&OK~IRq7sc4su->;n>=b z<~B?N*jQffUdr)K99oWjUe$i=&3Xsp!UOB_6v>vYtBDS^9NA}!n+REdtVCqd*ox%n zK*3E}vNmQ_k|NeTNjAVQU7-7~QQUVdxBFπXd8_ogmcdb33OJc*H6pA_itf4(N_ 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 Date: Sun, 18 Oct 2020 13:52:57 +0800 Subject: [PATCH 155/450] Add state diagrams for developer guide --- docs/DeveloperGuide.md | 25 ++++++++++++------ .../addModuleCommand_finalState.png | Bin 0 -> 27278 bytes .../addModuleCommand_initialState.png | Bin 0 -> 26436 bytes .../addModuleCommand_state2.png | Bin 0 -> 26713 bytes .../addModuleCommand_state6.png | Bin 0 -> 30561 bytes 5 files changed, 17 insertions(+), 8 deletions(-) create mode 100644 docs/images/DeveloperGuide/addModuleCommand_finalState.png create mode 100644 docs/images/DeveloperGuide/addModuleCommand_initialState.png create mode 100644 docs/images/DeveloperGuide/addModuleCommand_state2.png create mode 100644 docs/images/DeveloperGuide/addModuleCommand_state6.png diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 7f0063fe79..54fe674f08 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -125,39 +125,48 @@ Additionally, add module command extends the `Command` class and overrides its ` Given below is an example usage scenario and how add module command behaves at each step. -{DIAGRAM FOR STEP 1: INITIAL STATE} +

+ Initial state diagram for AddModuleCommand +
**Step 1** : The user calls the add module command from the `AcademicPlannerParser`, which will initialise a -`AddModuleCommand`. `AddModuleCommand`'s constructor takes in parameters of `ModuleLoader`, `Person`,`Scanner`, +`AddModuleCommand`. `AddModuleCommand`'s constructor takes in parameters of `ModuleLoader`, `Person`,`Ui`, and `String`. Below is a table of what each parameter corresponds to in the state diagram of the program. |Parameter|Corresponds to|Referred to as |:---:|:---:|:---: |`ModuleLoader`| Class representing all modules offered by NUS | `allModules` |`Person`| Class representing current user's information | `currentPerson` -|`Scanner`| Class representing java's default scanner class | `in` +|`Ui`| Class representing java's default scanner class | `in` |`String` | Class representing the module code to be added | `moduleCode` - {DIAGRAM FOR STEP 2: WITH FH AND LOGGER} +
+ State diagram for AddModuleCommand +
**Step 2** : `execute()` is called from the instance of `AddModuleCommand`. It can throw `AcademicException` or `IOException`. `FileHandler` and `Logger` classes from the _java API_ are instantiated to handle logging for the remainder of the `execute()` method. - **Step 3** : `in` then reads in the next two lines of input, which is the user's input for the desired semester for the `moduleCode` and `moduleCode`'s grades. **Step 4** : `validateInputs()` is called to validate the user entered data against `allModules`. -{DIAGRAM FOR STEP 5: with addutils } - **Step 5** : `AddUtils` is called upon to return module credit for `moduleCode` by `getModuleCreditForModule()`. +
+ State diagram for AddModuleCommand +
+ **Step 6** : `AddUtils` is called upon again to add the module's data to the user, by instantiating a new `PartialModule` and storing it in both `userModuleList` and `userModuleMap` via `Person`. -**Step 7** : `FileHandler` and `AddModuleCommand` terminated. +
+ Final state diagram for AddModuleCommand +
+ +**Step 7** : `FileHandler`, `Logger`, `PartialModule`, `AddUtils` and `AddModuleCommand` terminated. The following sequence diagram shows how the `AddModuleCommand` works: diff --git a/docs/images/DeveloperGuide/addModuleCommand_finalState.png b/docs/images/DeveloperGuide/addModuleCommand_finalState.png new file mode 100644 index 0000000000000000000000000000000000000000..e18191a11b37ea04d61a0452a6c55576f9082314 GIT binary patch literal 27278 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 cw6VKKT)I1?8?SUrcX#iDzxRFp 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 Date: Sun, 18 Oct 2020 14:06:17 +0800 Subject: [PATCH 156/450] Fix wrong naming of image file --- docs/DeveloperGuide.md | 4 +--- ..._activity .png => addModuleCommand_activity.png} | Bin 2 files changed, 1 insertion(+), 3 deletions(-) rename docs/images/DeveloperGuide/{addModuleCommand_activity .png => addModuleCommand_activity.png} (100%) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 54fe674f08..33e93cad3e 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -110,9 +110,7 @@ Classes used by multiple components are in the `src.main.java.global` package. ### Academic Calendar Planner : Add Module feature -#### Proposed implementation - -{Exact diagram and corresponding descriptions to be added} +#### Current implementation Add module command is executed by `AcademicPlannerParser`. It allows users to add modules into their `Academic Planner` by instantiating a new `PartialModule` object and adding it into the `userModuleList` diff --git a/docs/images/DeveloperGuide/addModuleCommand_activity .png b/docs/images/DeveloperGuide/addModuleCommand_activity.png similarity index 100% rename from docs/images/DeveloperGuide/addModuleCommand_activity .png rename to docs/images/DeveloperGuide/addModuleCommand_activity.png From 277df024250b3b364cdcda987f3e00c808c027ee Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Sun, 18 Oct 2020 19:28:36 +0800 Subject: [PATCH 157/450] Update documentation --- docs/DeveloperGuide.md | 2 +- docs/README.md | 19 ++++++++++-------- docs/UserGuide.md | 5 ++--- .../addModuleCommand_finalState.png | Bin 27278 -> 28376 bytes 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 33e93cad3e..9bb15f4cca 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -164,7 +164,7 @@ remainder of the `execute()` method. Final state diagram for AddModuleCommand -**Step 7** : `FileHandler`, `Logger`, `PartialModule`, `AddUtils` and `AddModuleCommand` terminated. +**Step 7** : `FileHandler`, `Logger`, `PartialModule`, `AddUtils` and `AddModuleCommand` are terminated. The following sequence diagram shows how the `AddModuleCommand` works: diff --git a/docs/README.md b/docs/README.md index 501ba4738c..d40992f57c 100644 --- a/docs/README.md +++ b/docs/README.md @@ -18,15 +18,18 @@ With the `CAP Calulator` , plaNUS will be able to tell you your current CAP and 1. Edit module 1. Remove module 1. Print Calendar + 1. Full Calendar + 1. Semester Calendar + 1. View module details 1. CAP Calculator - 1. Get Cap - -## Planned Feature List for the future - -1. Saving of Academic Calendar Planner into text file. -2. Loading of Academic Calendar Planner from text file. - -Useful links: + 1. Get current CAP + 1. Get results need for target CAP + 1. See possible CAP when setting as grade-less +1. General + 1. Saving of Academic Calendar into text file + 1. Loading of Academic Calendar from text file + +## Useful links: * [User Guide](https://ay2021s1-cs2113t-f12-1.github.io/tp/UserGuide.html "User Guide") * [Developer Guide](https://ay2021s1-cs2113t-f12-1.github.io/tp/DeveloperGuide.html "Developer Guide") * [About Us](https://ay2021s1-cs2113t-f12-1.github.io/tp/AboutUs.html "About Us") diff --git a/docs/UserGuide.md b/docs/UserGuide.md index c7084e5c89..811f68bf45 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -151,7 +151,7 @@ This is for the user to set modules that he or she wishes to S/U. As shown in the image, user can choose to S/U by either a _Semester_ or some selected _Modules_. (__Note:__ Enter either `1` or `2` instead of the component's name) -##### Set S/U by semester: +##### Set S/U by semester Expected output when user wishes to S/U by _Semester_. @@ -168,7 +168,7 @@ __Caution:__ * Only modules that can be S/Ued are added into the S/U list. * Modules with special grades are filtered out. -##### Set S/U by modules: +##### Set S/U by modules Expected output when user wishes to S/U by _Modules_. @@ -210,7 +210,6 @@ Last but not least, the expected output for exiting PlanNUS will be as such: Input format: `exit` - ## Loading and Saving Upon running PlanNUS in command prompt, the program automatically looks for a text file with the name _PlanNUS.txt_ within the same folder as _PlanNUS.jar_. diff --git a/docs/images/DeveloperGuide/addModuleCommand_finalState.png b/docs/images/DeveloperGuide/addModuleCommand_finalState.png index e18191a11b37ea04d61a0452a6c55576f9082314..a18c1d00175510f3fc1201de4455add1359d99a8 100644 GIT binary patch literal 28376 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 literal 27278 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 Date: Sun, 18 Oct 2020 21:21:12 +0800 Subject: [PATCH 158/450] Bug fix --- .../commons/CalculatorUtils.java | 153 ++++++++++++++---- 1 file changed, 118 insertions(+), 35 deletions(-) diff --git a/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java b/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java index 23a0d78a74..5cd8616ce6 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java @@ -29,75 +29,159 @@ public CalculatorUtils(Person currentPerson) { */ public void updateCap(int type, PartialModule currentModule, double... caps) { // Caps is an array, 0 being oldCap, 1 being newCap - if (type == FROM_ADD) { + if (type == FROM_ADD && !isNonGraded(currentModule.getCap())) { updateCapFromAdd(currentModule); } else if (type == FROM_REMOVE) { - //Decreasing total MC regardless of SU - currentPerson.setCurrentMc(currentPerson.getCurrentMc() - - currentModule.getModuleCredit()); + if (!isNonGraded(currentModule.getCap())) { + //Decreasing total MC regardless of SU + currentPerson.setCurrentMc(currentPerson.getCurrentMc() + - currentModule.getModuleCredit()); - //Decreasing total MC after SU only if module is not SU - if (currentModule.getCap() != -1.00) { - editCapNonSuToSu(currentModule, currentModule.getCap()); + //Decreasing total MC after SU only if module is not SU + if (!isSu(currentModule.getCap())) { + editCapGradedToSu(currentModule, currentModule.getCap()); + } } } else if (type == FROM_EDIT) { - if (isFromSuToNonSu(caps)) { + if (isFromSuToGraded(caps)) { //Case where previously was SU but new is not SU - editCapSuToNonSu(currentModule, caps[1]); + editCapSuToGraded(currentModule, caps[1]); - } else if (isFromNonSuToSu(caps)) { + } else if (isFromGradedToSu(caps)) { //Case where previously was not SU but now is SU - editCapNonSuToSu(currentModule, caps[0]); + editCapGradedToSu(currentModule, caps[0]); - } else if (isFromNonSuToNonSu(caps)) { + } else if (isFromGradedToGraded(caps)) { //Case where previously and new cap are not SU but not the same - editCapNonSuToNonSu(currentModule, caps); + editCapGradedToGraded(currentModule, caps); + + } else if (isFromGradedToNonGraded(caps)) { + //Case where previously was graded but new is special + currentPerson.setCurrentMc(currentPerson.getCurrentMc() + - currentModule.getModuleCredit()); + editCapGradedToSu(currentModule, caps[0]); + + } else if (isFromSuToNonGraded(caps)) { + //Case where previously was S/U but new is special + currentPerson.setCurrentMc(currentPerson.getCurrentMc() + - currentModule.getModuleCredit()); + + } else if (isFromNonGradedToGraded(caps)) { + //Case where previously was special but new is graded or S/U + updateCapFromAdd(currentModule); } } } + + /** + * Returns true if the module provided was from a letter grade, + * else returns false. + * + * @param cap Academic points of original and edited module + * @return boolean + */ + private boolean isGraded(double cap) { + return cap > -1.00; + } + + /** + * Returns true if the module provided was from a S/U grade, + * else returns false. + * + * @param cap Academic points of original and edited module + * @return boolean + */ + private boolean isSu(double cap) { + return cap == -1.00; + } + /** - * Returns true if edited module was from a special grade to special grade, + * Returns true if the module provided was from a special grade, + * else returns false. + * + * @param cap Academic points of original and edited module + * @return boolean + */ + private boolean isNonGraded(double cap) { + return cap == -2.00; + } + + /** + * Returns true if edited module was from a letter grade to letter grade, * else returns false. * * @param caps Academic points of original and edited module * @return boolean */ - private boolean isFromNonSuToNonSu(double[] caps) { - return caps[0] != caps[1]; + private boolean isFromGradedToGraded(double[] caps) { + return caps[0] != caps[1] && isGraded(caps[0]) && isGraded(caps[1]); } /** - * Returns true if edited module was from a special grade to letter grade, + * Returns true if edited module was from a letter grade to S/U grade, * else returns false. * * @param caps Academic points of original and edited module * @return boolean */ - private boolean isFromNonSuToSu(double[] caps) { - return caps[0] != -1.00 && caps[1] == -1.00; + private boolean isFromGradedToSu(double[] caps) { + return isGraded(caps[0]) && isSu(caps[1]); } /** - * Returns true if edited module was from a special grade to letter grade, + * Returns true if edited module was from a letter grade to a special grade, * else returns false. * * @param caps Academic points of original and edited module * @return boolean */ - private boolean isFromSuToNonSu(double[] caps) { - return caps[0] == -1.00 && caps[1] != -1.00; + private boolean isFromGradedToNonGraded(double[] caps) { + return isGraded(caps[0]) && isNonGraded(caps[1]); } /** - * Updates CAP when User edits module from a special grade to a special grade. + * Returns true if edited module was from a S/U grade to letter grade, + * else returns false. + * + * @param caps Academic points of original and edited module + * @return boolean + */ + private boolean isFromSuToGraded(double[] caps) { + return isSu(caps[0]) && isGraded(caps[1]); + } + + /** + * Returns true if edited module was from a S/U grade to special grade, + * else returns false. + * + * @param caps Academic points of original and edited module + * @return boolean + */ + private boolean isFromSuToNonGraded(double[] caps) { + return isSu(caps[0]) && isNonGraded(caps[1]); + } + + /** + * Returns true if edited module was from a special grade to graded grade, + * else returns false. + * + * @param caps Academic points of original and edited module + * @return boolean + */ + private boolean isFromNonGradedToGraded(double[] caps) { + return isNonGraded(caps[0]) && !isNonGraded(caps[1]); + } + + /** + * Updates CAP when User edits module from a letter grade to a letter grade. * * @param currentModule module that was edited * @param caps array of previous and new cap */ - private void editCapNonSuToNonSu(PartialModule currentModule, double[] caps) { + private void editCapGradedToGraded(PartialModule currentModule, double[] caps) { double oldMCxGrade = caps[0] * currentModule.getModuleCredit(); double newMCxGrade = caps[1] * currentModule.getModuleCredit(); double mcxGradeToSet = newMCxGrade - oldMCxGrade; @@ -108,12 +192,12 @@ private void editCapNonSuToNonSu(PartialModule currentModule, double[] caps) { } /** - * Updates CAP when User edits module from a special grade to a letter grade. + * Updates CAP when User edits module from a letter grade to a S/U grade. * * @param currentModule module that was edited * @param cap user's CAP */ - private void editCapNonSuToSu(PartialModule currentModule, double cap) { + private void editCapGradedToSu(PartialModule currentModule, double cap) { double mcxGradeToMinus = cap * currentModule.getModuleCredit(); //Updating total MCs @@ -126,12 +210,12 @@ private void editCapNonSuToSu(PartialModule currentModule, double cap) { } /** - * Updates CAP when User edits module from a letter grade to a special grade. + * Updates CAP when User edits module from a S/U grade to a letter grade. * * @param currentModule module that was edited * @param cap user's CAP */ - private void editCapSuToNonSu(PartialModule currentModule, double cap) { + private void editCapSuToGraded(PartialModule currentModule, double cap) { double newMCxGrade = cap * currentModule.getModuleCredit(); //Updating total MCs @@ -150,14 +234,13 @@ private void editCapSuToNonSu(PartialModule currentModule, double cap) { */ private void updateCapFromAdd(PartialModule currentModule) { //Incrementing total MC regardless of SU - if (currentModule.getCap() != -2.00) { - int moduleCredit = currentModule.getModuleCredit(); - currentPerson.setCurrentMc(currentPerson.getCurrentMc() + moduleCredit); - //Incrementing total MC after SU only if module is not SU - if (currentModule.getCap() != -1.00) { - editCapSuToNonSu(currentModule, currentModule.getCap()); - } + int moduleCredit = currentModule.getModuleCredit(); + currentPerson.setCurrentMc(currentPerson.getCurrentMc() + moduleCredit); + + //Incrementing total MC after SU only if module is not SU + if (currentModule.getCap() != -1.00) { + editCapSuToGraded(currentModule, currentModule.getCap()); } } From 2ae8b7747c9e7cec262b2212bbd0c47b8823201a Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Sun, 18 Oct 2020 21:38:37 +0800 Subject: [PATCH 159/450] Add logger documentation for DG --- docs/DeveloperGuide.md | 13 +++++++++++++ docs/README.md | 3 +-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 9bb15f4cca..abb1f82238 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -208,6 +208,19 @@ __Documentation guide__ __Testing guide__ __Logging guide__ +`LoggingTool` is available to use for accessible logging at the package `src.main.java.seedu.duke.global`. `LoggingTool`'s +constructor takes in a parameter `String` and `FileHandler`. `String` represents `loggerName` and `FileHandler` represents +the object `fh`, which is the _java API_. `initialise()` will automatically return a fully configured `Logger` object +with the following parameters : + +* addHandler(fh) + * `logger` will log to an external file as defined by `fh` +* setUseParentHandlers(false) + * Disables logging on the console output +* setLevel(Level.INFO) + * Any message logged `Level.INFO` and above will be logged + +After initialising, the `logger` can be used as per _java API_ constraints. __Configuration guide__ diff --git a/docs/README.md b/docs/README.md index d40992f57c..f86737b871 100644 --- a/docs/README.md +++ b/docs/README.md @@ -11,7 +11,7 @@ With the `CAP Calulator` , plaNUS will be able to tell you your current CAP and 1. All Fresh NUS Undergraduates 1. NUS Undergraduates who have completed at least 1 semester of study -## Feature List (for V1.0) +## Feature List (for V2.0) 1. Academic Calendar Planner 1. Add module @@ -33,4 +33,3 @@ With the `CAP Calulator` , plaNUS will be able to tell you your current CAP and * [User Guide](https://ay2021s1-cs2113t-f12-1.github.io/tp/UserGuide.html "User Guide") * [Developer Guide](https://ay2021s1-cs2113t-f12-1.github.io/tp/DeveloperGuide.html "Developer Guide") * [About Us](https://ay2021s1-cs2113t-f12-1.github.io/tp/AboutUs.html "About Us") -* [Planning Document](https://docs.google.com/document/d/1ikOD_2NS2qUSGtQJpqbVWX7g5mAFV6_jxhiAlka_SSs/edit?usp=sharing "Collaborative Document") From 18a12d3f2b02b364643ad4fd47c63f0ea4765b1a Mon Sep 17 00:00:00 2001 From: vanessa-kang <49282734+vanessa-kang@users.noreply.github.com> Date: Mon, 19 Oct 2020 02:27:23 +0800 Subject: [PATCH 160/450] Pull updated code from org master (as of 19/10/2020 2.30am) --- build.gradle | 1 + docs/DeveloperGuide.md | 94 +++++++---- docs/README.md | 22 +-- docs/UserGuide.md | 20 ++- .../DeveloperGuide/PackagesInteraction.png | Bin 0 -> 182726 bytes .../DeveloperGuide/ProjectStructure.png | Bin 0 -> 26168 bytes .../addModuleCommand_activity.png | Bin 0 -> 62809 bytes .../addModuleCommand_finalState.png | Bin 0 -> 28376 bytes .../addModuleCommand_initialState.png | Bin 0 -> 26436 bytes .../addModuleCommand_sequence.png | Bin 0 -> 159317 bytes .../addModuleCommand_state2.png | Bin 0 -> 26713 bytes .../addModuleCommand_state6.png | Bin 0 -> 30561 bytes docs/images/file_not_found.png | Bin 0 -> 3791 bytes docs/images/module_loaded.png | Bin 0 -> 1766 bytes src/main/java/seedu/duke/PlanNus.java | 2 +- .../AcademicPlannerParser.java | 7 + .../commands/AddModuleCommand.java | 1 - .../academicplanner/commons/RemoveUtils.java | 23 ++- .../commons/CalculatorUtils.java | 153 ++++++++++++++---- .../capcalculator/commons/SetSuUtils.java | 16 +- .../seedu/duke/storage/commons/LoadUtils.java | 14 +- 21 files changed, 257 insertions(+), 96 deletions(-) create mode 100644 docs/images/DeveloperGuide/PackagesInteraction.png create mode 100644 docs/images/DeveloperGuide/ProjectStructure.png create mode 100644 docs/images/DeveloperGuide/addModuleCommand_activity.png create mode 100644 docs/images/DeveloperGuide/addModuleCommand_finalState.png create mode 100644 docs/images/DeveloperGuide/addModuleCommand_initialState.png create mode 100644 docs/images/DeveloperGuide/addModuleCommand_sequence.png create mode 100644 docs/images/DeveloperGuide/addModuleCommand_state2.png create mode 100644 docs/images/DeveloperGuide/addModuleCommand_state6.png create mode 100644 docs/images/file_not_found.png create mode 100644 docs/images/module_loaded.png diff --git a/build.gradle b/build.gradle index ec0fed9bc2..583e92a835 100644 --- a/build.gradle +++ b/build.gradle @@ -45,6 +45,7 @@ checkstyle { run { standardInput = System.in + enableAssertions = true } jar { diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index f785bc7eab..abb1f82238 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -1,5 +1,8 @@ # Developer Guide +Before reading this document, you are recommended to read through the user guide. + +* Table of contents {:toc} ## Setting up PlanNUS @@ -20,7 +23,9 @@ The following are remaining steps to be taken to finish the set up: ### Architecture -![Architecture](./images/DeveloperGuide/Architecture.png) +
+ Architecture diagram of PlanNUS +
The ***Architecture Diagram*** given above explains the high-level design of PlanNUS. Below is a quick overview of each component. @@ -74,7 +79,9 @@ Each package in the PlanNUS as given above follows the following file structure The interaction within each package should ideally be as shown below. -![Project structure](./images/DeveloperGuide/Project_structure.png) +
+ Architecture diagram for ideal project structure in PlanNUS +
*Note that while this is the ideal case, packages such as* `global`, `parser` *and* `ui` *might not strictly follow this structure due to these package serving a different function altogether (Refer to the sections below for more details.)* @@ -82,7 +89,9 @@ The interaction within each package should ideally be as shown below. The *sequence diagram* below shows how different packages and classes interact with each other throughout the whole lifecycle of PlanNUS. -![Packages Interaction](./images/DeveloperGuide/Packages_Interaction.png) +
+ Sequence diagram for lifecycle of PlanNUS +
### Details @@ -101,66 +110,77 @@ Classes used by multiple components are in the `src.main.java.global` package. ### Academic Calendar Planner : Add Module feature -#### Proposed implementation +#### Current implementation -{Exact diagram and corresponding descriptions to be added} - -The proposed add module command is facilitated by `AcademicPlannerParser`. It allows users to add modules into their +Add module command is executed by `AcademicPlannerParser`. It allows users to add modules into their `Academic Planner` by instantiating a new `PartialModule` object and adding it into the `userModuleList` and `userModuleMap`. Both the list and hashmap are the _java API_, which are used by importing them. The `Person` object is used to encapsulate both `userModuleList` and `userModuleMap`. - + Additionally, add module command extends the `Command` class and overrides its `execute()` command. An external class, `ModuleValidator` is called upon to validate the various parameters that the user has entered, as to only allow valid modules to be added to the user. - + Given below is an example usage scenario and how add module command behaves at each step. -{DIAGRAM FOR STEP 1: INITIAL STATE} +
+ Initial state diagram for AddModuleCommand +
**Step 1** : The user calls the add module command from the `AcademicPlannerParser`, which will initialise a -`AddModuleCommand`. `AddModuleCommand`'s constructor takes in parameters of `ModuleLoader`, `Person`,`Scanner`, +`AddModuleCommand`. `AddModuleCommand`'s constructor takes in parameters of `ModuleLoader`, `Person`,`Ui`, and `String`. Below is a table of what each parameter corresponds to in the state diagram of the program. |Parameter|Corresponds to|Referred to as |:---:|:---:|:---: |`ModuleLoader`| Class representing all modules offered by NUS | `allModules` |`Person`| Class representing current user's information | `currentPerson` -|`Scanner`| Class representing java's default scanner class | `in` +|`Ui`| Class representing java's default scanner class | `in` |`String` | Class representing the module code to be added | `moduleCode` - - {DIAGRAM FOR STEP 2: WITH FH AND LOGGER} - + +
+ State diagram for AddModuleCommand +
+ **Step 2** : `execute()` is called from the instance of `AddModuleCommand`. It can throw `AcademicException` or `IOException`. `FileHandler` and `Logger` classes from the _java API_ are instantiated to handle logging for the remainder of the `execute()` method. - **Step 3** : `in` then reads in the next two lines of input, which is the user's input for the desired semester for the `moduleCode` and `moduleCode`'s grades. **Step 4** : `validateInputs()` is called to validate the user entered data against `allModules`. -{DIAGRAM FOR STEP 5: with addutils } - **Step 5** : `AddUtils` is called upon to return module credit for `moduleCode` by `getModuleCreditForModule()`. -**Step 6** : `AddUtils` is called upon again to add the module's data to the user, by instatiating a new -`PartialModule` and storing it in both `userModuleList` and `userModuleMap`. +
+ State diagram for AddModuleCommand +
-**Step 7** : `FileHandler` terminated. +**Step 6** : `AddUtils` is called upon again to add the module's data to the user, by instantiating a new +`PartialModule` and storing it in both `userModuleList` and `userModuleMap` via `Person`. -**Step 8** : `AddModuleCommand` is terminated. +
+ Final state diagram for AddModuleCommand +
+ +**Step 7** : `FileHandler`, `Logger`, `PartialModule`, `AddUtils` and `AddModuleCommand` are terminated. The following sequence diagram shows how the `AddModuleCommand` works: -{Sequence Diagram} +
+ Sequence diagram for AddModuleCommand +
The following activity diagram summarizes what happens when the user executes an `AddModuleCommand` : +
+ Activity diagram for AddModuleCommand +
+ #### Design consideration -The following were considered when implementing commands: +The following options were considered when implementing commands: * Option 1 (Current Choice): As a class by itself * Pros: Increases modularity of code, higher overall code quality @@ -188,13 +208,25 @@ __Documentation guide__ __Testing guide__ __Logging guide__ +`LoggingTool` is available to use for accessible logging at the package `src.main.java.seedu.duke.global`. `LoggingTool`'s +constructor takes in a parameter `String` and `FileHandler`. `String` represents `loggerName` and `FileHandler` represents +the object `fh`, which is the _java API_. `initialise()` will automatically return a fully configured `Logger` object +with the following parameters : + +* addHandler(fh) + * `logger` will log to an external file as defined by `fh` +* setUseParentHandlers(false) + * Disables logging on the console output +* setLevel(Level.INFO) + * Any message logged `Level.INFO` and above will be logged + +After initialising, the `logger` can be used as per _java API_ constraints. __Configuration guide__ __DevOps guide__ - ## Appendix: Requirements ### Product scope @@ -209,18 +241,16 @@ __Target user profile:__ __Value proposition:__ Provides NUS undergraduates with a platform to keep track of their academic progress and explore other possibilities with the plethora of modules available. - - ### User stories | Version | As a ... | I want to ... | So that I can ... | -| ------- | --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| :-----: | --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | | v1.0 | fresh undergraduate | visualize the modules in the recommended schedule and course requirements | better plan out my academic journey for the next 4-5 years in NUS | | v1.0 | undergraduate with at least 1 semester of study completed | calculate my CAP easily | forecast my own expected graduation CAP and if they match my expected CAP | | v1.0 | undergraduate with at least 1 semester of study completed | print out a personalized list of modules taken so far and grades obtained | track my academic progression in NUS | -| v2.0 | user | find a to-do item by name | locate a to-do without having to go through the entire list | - - +| v2.0 | user of PlanNUS | find modules I have completed in a particular semester | view specific information I require about that semester without redundant information | +| V2.0 | user of PlanNUS | easily access my last made list | save time on retyping my academic calendar after each use +| V2.0 | undergraduate with at least 1 semester of study completed | have suggestions on which modules to mark as S/U | make an informed decision on which modules to S/U ### Use cases @@ -274,4 +304,4 @@ __Extensions__ ## Appendix: Instructions for manual testing -{More to be added} \ No newline at end of file +{More to be added} diff --git a/docs/README.md b/docs/README.md index 501ba4738c..f86737b871 100644 --- a/docs/README.md +++ b/docs/README.md @@ -11,23 +11,25 @@ With the `CAP Calulator` , plaNUS will be able to tell you your current CAP and 1. All Fresh NUS Undergraduates 1. NUS Undergraduates who have completed at least 1 semester of study -## Feature List (for V1.0) +## Feature List (for V2.0) 1. Academic Calendar Planner 1. Add module 1. Edit module 1. Remove module 1. Print Calendar + 1. Full Calendar + 1. Semester Calendar + 1. View module details 1. CAP Calculator - 1. Get Cap - -## Planned Feature List for the future - -1. Saving of Academic Calendar Planner into text file. -2. Loading of Academic Calendar Planner from text file. - -Useful links: + 1. Get current CAP + 1. Get results need for target CAP + 1. See possible CAP when setting as grade-less +1. General + 1. Saving of Academic Calendar into text file + 1. Loading of Academic Calendar from text file + +## Useful links: * [User Guide](https://ay2021s1-cs2113t-f12-1.github.io/tp/UserGuide.html "User Guide") * [Developer Guide](https://ay2021s1-cs2113t-f12-1.github.io/tp/DeveloperGuide.html "Developer Guide") * [About Us](https://ay2021s1-cs2113t-f12-1.github.io/tp/AboutUs.html "About Us") -* [Planning Document](https://docs.google.com/document/d/1ikOD_2NS2qUSGtQJpqbVWX7g5mAFV6_jxhiAlka_SSs/edit?usp=sharing "Collaborative Document") diff --git a/docs/UserGuide.md b/docs/UserGuide.md index cd367e1e8c..811f68bf45 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -151,7 +151,7 @@ This is for the user to set modules that he or she wishes to S/U. As shown in the image, user can choose to S/U by either a _Semester_ or some selected _Modules_. (__Note:__ Enter either `1` or `2` instead of the component's name) -##### Set S/U by semester: +##### Set S/U by semester Expected output when user wishes to S/U by _Semester_. @@ -168,7 +168,7 @@ __Caution:__ * Only modules that can be S/Ued are added into the S/U list. * Modules with special grades are filtered out. -##### Set S/U by modules: +##### Set S/U by modules Expected output when user wishes to S/U by _Modules_. @@ -210,6 +210,22 @@ Last but not least, the expected output for exiting PlanNUS will be as such: Input format: `exit` +## Loading and Saving + +Upon running PlanNUS in command prompt, the program automatically looks for a text file with the name _PlanNUS.txt_ within the same folder as _PlanNUS.jar_. + +If the text file cannot be found, then the output will be as shown at the main page of PlanNUS after the list of commands. + + + +All the modules selected will be saved into _PlanNUS.txt_ after the user exits from the program. The next time when user runs the program again, it will load the configurations that were saved previously which will generate the below output. + + + +Note that the image above is just an example because it depends on the number of modules saved in the text file. + + + ## FAQ Question Type|Question|Answer diff --git a/docs/images/DeveloperGuide/PackagesInteraction.png b/docs/images/DeveloperGuide/PackagesInteraction.png new file mode 100644 index 0000000000000000000000000000000000000000..14e915a7059507d4f6055f5495276f27632f6c55 GIT binary patch literal 182726 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

$C`Xda63_+d$c+c%dHc{L&jt|xruFzl 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 literal 0 HcmV?d00001 diff --git a/docs/images/DeveloperGuide/addModuleCommand_state2.png b/docs/images/DeveloperGuide/addModuleCommand_state2.png new file mode 100644 index 0000000000000000000000000000000000000000..0278a45fdc1ea02674a43eb42935ca014e90f256 GIT binary patch literal 26713 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 cw6VKKT)I1?8?SUrcX#iDzxRFp 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 IM6N<$g2wS$6951J literal 0 HcmV?d00001 diff --git a/src/main/java/seedu/duke/PlanNus.java b/src/main/java/seedu/duke/PlanNus.java index c41fc92a59..3e860591ee 100644 --- a/src/main/java/seedu/duke/PlanNus.java +++ b/src/main/java/seedu/duke/PlanNus.java @@ -37,7 +37,7 @@ public PlanNus() { * Main entry function for PlanNUS. */ public void run() { - assert isExit == true : "Startup is unsuccessful"; + assert isExit : "Startup is unsuccessful"; ui.showWelcomeMessage(); storage.loader(currentPerson); diff --git a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java index 54b8e23a05..e494c38e92 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java +++ b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java @@ -49,18 +49,25 @@ public static Command parse(String userInput, ModuleLoader allModules, Person cu if (inputs[COMMAND_INDEX].equals(ADD_COMMAND) && inputs.length == CORRECT_COMMAND_LENGTH) { return new AddModuleCommand(allModules, currentPerson, in, inputs[MODULE_CODE_INDEX]); + } else if (inputs[COMMAND_INDEX].equals(EDIT_COMMAND) && inputs.length == CORRECT_COMMAND_LENGTH) { return new EditModuleCommand(allModules, currentPerson, in, inputs[MODULE_CODE_INDEX]); + } else if (inputs[COMMAND_INDEX].equals(REMOVE_COMMAND) && inputs.length == CORRECT_COMMAND_LENGTH) { return new RemoveModuleCommand(allModules, currentPerson, in, inputs[MODULE_CODE_INDEX]); + } else if (inputs[COMMAND_INDEX].equals(VIEW_COMMAND)) { return new PrintCalenderCommand(currentPerson, in); + } else if (inputs[COMMAND_INDEX].equals(HELP_COMMAND)) { return new PrintHelpCommand(); + } else if (inputs[COMMAND_INDEX].equals(DETAILS_COMMAND)) { return new ModuleDetailsCommand(allModules, inputs[MODULE_CODE_INDEX]); + } else if (inputs[COMMAND_INDEX].equals(EXIT_COMMAND)) { return new Command(true); + } else { throw new CommandParserException(ERROR_INVALID_COMMAND + NEW_LINE + EXITING_CURRENT_COMMAND); } diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java index be8dab3071..5994cb5fa7 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/AddModuleCommand.java @@ -6,7 +6,6 @@ import seedu.duke.apps.academicplanner.exceptions.AcademicException; import seedu.duke.global.Command; import seedu.duke.global.LoggingTool; -import seedu.duke.global.objects.FullModule; import seedu.duke.global.objects.Person; import java.io.IOException; import java.util.Scanner; diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java index 13989879f7..eee593a379 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/RemoveUtils.java @@ -4,6 +4,7 @@ import seedu.duke.global.objects.PartialModule; import seedu.duke.global.objects.Person; import java.util.ArrayList; +import java.util.HashMap; import java.util.Map; /** @@ -12,9 +13,10 @@ public class RemoveUtils { private static final int FROM_REMOVE = 3; - private final ArrayList modulesList; private final Map modulesAddedMap; + private final ArrayList modulesList; private final CalculatorUtils calculatorUtils; + private final Person currentPerson; /** * Default constructor for RemoveUtils. @@ -25,6 +27,7 @@ public RemoveUtils(Person currentPerson) { this.modulesList = currentPerson.getModulesList(); this.calculatorUtils = new CalculatorUtils(currentPerson); this.modulesAddedMap = currentPerson.getModulesAddedMap(); + this.currentPerson = currentPerson; } /** @@ -40,7 +43,7 @@ public void removeModuleFromUserModuleList(String moduleCode) { PartialModule module = modulesList.get(moduleIndex); calculatorUtils.updateCap(FROM_REMOVE, module); - depopulate(moduleCode, module); + depopulate(module); assert modulesList.size() == totalNumberOfModules - 1; } @@ -48,11 +51,21 @@ public void removeModuleFromUserModuleList(String moduleCode) { /** * Removes module from both arraylist and hashmap of the user. * - * @param moduleCode module code to remove * @param module module object to remove */ - private void depopulate(String moduleCode, PartialModule module) { + private void depopulate(PartialModule module) { modulesList.remove(module); - modulesAddedMap.remove(moduleCode); + updateHashmap(); + } + + /** + * Updates hashmap with the new module list. + */ + private void updateHashmap() { + HashMap newModuleAddedMap = new HashMap<>(); + for (int i = 0; i < modulesList.size(); i++) { + newModuleAddedMap.put(modulesList.get(i).getModuleCode(), i); + } + currentPerson.setModulesAddedMap(newModuleAddedMap); } } diff --git a/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java b/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java index 23a0d78a74..5cd8616ce6 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commons/CalculatorUtils.java @@ -29,75 +29,159 @@ public CalculatorUtils(Person currentPerson) { */ public void updateCap(int type, PartialModule currentModule, double... caps) { // Caps is an array, 0 being oldCap, 1 being newCap - if (type == FROM_ADD) { + if (type == FROM_ADD && !isNonGraded(currentModule.getCap())) { updateCapFromAdd(currentModule); } else if (type == FROM_REMOVE) { - //Decreasing total MC regardless of SU - currentPerson.setCurrentMc(currentPerson.getCurrentMc() - - currentModule.getModuleCredit()); + if (!isNonGraded(currentModule.getCap())) { + //Decreasing total MC regardless of SU + currentPerson.setCurrentMc(currentPerson.getCurrentMc() + - currentModule.getModuleCredit()); - //Decreasing total MC after SU only if module is not SU - if (currentModule.getCap() != -1.00) { - editCapNonSuToSu(currentModule, currentModule.getCap()); + //Decreasing total MC after SU only if module is not SU + if (!isSu(currentModule.getCap())) { + editCapGradedToSu(currentModule, currentModule.getCap()); + } } } else if (type == FROM_EDIT) { - if (isFromSuToNonSu(caps)) { + if (isFromSuToGraded(caps)) { //Case where previously was SU but new is not SU - editCapSuToNonSu(currentModule, caps[1]); + editCapSuToGraded(currentModule, caps[1]); - } else if (isFromNonSuToSu(caps)) { + } else if (isFromGradedToSu(caps)) { //Case where previously was not SU but now is SU - editCapNonSuToSu(currentModule, caps[0]); + editCapGradedToSu(currentModule, caps[0]); - } else if (isFromNonSuToNonSu(caps)) { + } else if (isFromGradedToGraded(caps)) { //Case where previously and new cap are not SU but not the same - editCapNonSuToNonSu(currentModule, caps); + editCapGradedToGraded(currentModule, caps); + + } else if (isFromGradedToNonGraded(caps)) { + //Case where previously was graded but new is special + currentPerson.setCurrentMc(currentPerson.getCurrentMc() + - currentModule.getModuleCredit()); + editCapGradedToSu(currentModule, caps[0]); + + } else if (isFromSuToNonGraded(caps)) { + //Case where previously was S/U but new is special + currentPerson.setCurrentMc(currentPerson.getCurrentMc() + - currentModule.getModuleCredit()); + + } else if (isFromNonGradedToGraded(caps)) { + //Case where previously was special but new is graded or S/U + updateCapFromAdd(currentModule); } } } + + /** + * Returns true if the module provided was from a letter grade, + * else returns false. + * + * @param cap Academic points of original and edited module + * @return boolean + */ + private boolean isGraded(double cap) { + return cap > -1.00; + } + + /** + * Returns true if the module provided was from a S/U grade, + * else returns false. + * + * @param cap Academic points of original and edited module + * @return boolean + */ + private boolean isSu(double cap) { + return cap == -1.00; + } + /** - * Returns true if edited module was from a special grade to special grade, + * Returns true if the module provided was from a special grade, + * else returns false. + * + * @param cap Academic points of original and edited module + * @return boolean + */ + private boolean isNonGraded(double cap) { + return cap == -2.00; + } + + /** + * Returns true if edited module was from a letter grade to letter grade, * else returns false. * * @param caps Academic points of original and edited module * @return boolean */ - private boolean isFromNonSuToNonSu(double[] caps) { - return caps[0] != caps[1]; + private boolean isFromGradedToGraded(double[] caps) { + return caps[0] != caps[1] && isGraded(caps[0]) && isGraded(caps[1]); } /** - * Returns true if edited module was from a special grade to letter grade, + * Returns true if edited module was from a letter grade to S/U grade, * else returns false. * * @param caps Academic points of original and edited module * @return boolean */ - private boolean isFromNonSuToSu(double[] caps) { - return caps[0] != -1.00 && caps[1] == -1.00; + private boolean isFromGradedToSu(double[] caps) { + return isGraded(caps[0]) && isSu(caps[1]); } /** - * Returns true if edited module was from a special grade to letter grade, + * Returns true if edited module was from a letter grade to a special grade, * else returns false. * * @param caps Academic points of original and edited module * @return boolean */ - private boolean isFromSuToNonSu(double[] caps) { - return caps[0] == -1.00 && caps[1] != -1.00; + private boolean isFromGradedToNonGraded(double[] caps) { + return isGraded(caps[0]) && isNonGraded(caps[1]); } /** - * Updates CAP when User edits module from a special grade to a special grade. + * Returns true if edited module was from a S/U grade to letter grade, + * else returns false. + * + * @param caps Academic points of original and edited module + * @return boolean + */ + private boolean isFromSuToGraded(double[] caps) { + return isSu(caps[0]) && isGraded(caps[1]); + } + + /** + * Returns true if edited module was from a S/U grade to special grade, + * else returns false. + * + * @param caps Academic points of original and edited module + * @return boolean + */ + private boolean isFromSuToNonGraded(double[] caps) { + return isSu(caps[0]) && isNonGraded(caps[1]); + } + + /** + * Returns true if edited module was from a special grade to graded grade, + * else returns false. + * + * @param caps Academic points of original and edited module + * @return boolean + */ + private boolean isFromNonGradedToGraded(double[] caps) { + return isNonGraded(caps[0]) && !isNonGraded(caps[1]); + } + + /** + * Updates CAP when User edits module from a letter grade to a letter grade. * * @param currentModule module that was edited * @param caps array of previous and new cap */ - private void editCapNonSuToNonSu(PartialModule currentModule, double[] caps) { + private void editCapGradedToGraded(PartialModule currentModule, double[] caps) { double oldMCxGrade = caps[0] * currentModule.getModuleCredit(); double newMCxGrade = caps[1] * currentModule.getModuleCredit(); double mcxGradeToSet = newMCxGrade - oldMCxGrade; @@ -108,12 +192,12 @@ private void editCapNonSuToNonSu(PartialModule currentModule, double[] caps) { } /** - * Updates CAP when User edits module from a special grade to a letter grade. + * Updates CAP when User edits module from a letter grade to a S/U grade. * * @param currentModule module that was edited * @param cap user's CAP */ - private void editCapNonSuToSu(PartialModule currentModule, double cap) { + private void editCapGradedToSu(PartialModule currentModule, double cap) { double mcxGradeToMinus = cap * currentModule.getModuleCredit(); //Updating total MCs @@ -126,12 +210,12 @@ private void editCapNonSuToSu(PartialModule currentModule, double cap) { } /** - * Updates CAP when User edits module from a letter grade to a special grade. + * Updates CAP when User edits module from a S/U grade to a letter grade. * * @param currentModule module that was edited * @param cap user's CAP */ - private void editCapSuToNonSu(PartialModule currentModule, double cap) { + private void editCapSuToGraded(PartialModule currentModule, double cap) { double newMCxGrade = cap * currentModule.getModuleCredit(); //Updating total MCs @@ -150,14 +234,13 @@ private void editCapSuToNonSu(PartialModule currentModule, double cap) { */ private void updateCapFromAdd(PartialModule currentModule) { //Incrementing total MC regardless of SU - if (currentModule.getCap() != -2.00) { - int moduleCredit = currentModule.getModuleCredit(); - currentPerson.setCurrentMc(currentPerson.getCurrentMc() + moduleCredit); - //Incrementing total MC after SU only if module is not SU - if (currentModule.getCap() != -1.00) { - editCapSuToNonSu(currentModule, currentModule.getCap()); - } + int moduleCredit = currentModule.getModuleCredit(); + currentPerson.setCurrentMc(currentPerson.getCurrentMc() + moduleCredit); + + //Incrementing total MC after SU only if module is not SU + if (currentModule.getCap() != -1.00) { + editCapSuToGraded(currentModule, currentModule.getCap()); } } diff --git a/src/main/java/seedu/duke/apps/capcalculator/commons/SetSuUtils.java b/src/main/java/seedu/duke/apps/capcalculator/commons/SetSuUtils.java index 3184f0d758..ec44efb0a6 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commons/SetSuUtils.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commons/SetSuUtils.java @@ -68,10 +68,6 @@ public int promptUserForSemester() throws CapCalculatorException { } } - private boolean isValidSemester(int semester) { - return (semester >= STARTING_SEMESTER_INDEX && semester <= FINAL_SEMESTER_INDEX); - } - /** * Prompt user to enter number of modules. * @@ -322,4 +318,16 @@ private String getAbbreviations(int number) { return number + "th "; } } + + //@@Author jerroldlam + /** + * Returns true if semsesterIndex is a valid semesterIndex, + * else returns false. + * + * @param semesterIndex semesterIndex to check + * @return false + */ + public static boolean isValidSemester(int semesterIndex) { + return (semesterIndex >= STARTING_SEMESTER_INDEX && semesterIndex <= FINAL_SEMESTER_INDEX); + } } diff --git a/src/main/java/seedu/duke/storage/commons/LoadUtils.java b/src/main/java/seedu/duke/storage/commons/LoadUtils.java index 0e616855cb..776dc6438d 100644 --- a/src/main/java/seedu/duke/storage/commons/LoadUtils.java +++ b/src/main/java/seedu/duke/storage/commons/LoadUtils.java @@ -81,12 +81,14 @@ public void load() throws LoadFileException { isAllEntryValid = false; } - int currentSem = parseInt(lineItems[SEMESTER_VALUE_POSITION]); - String currentModuleCode = lineItems[MODULE_CODE_POSITION]; - String currentModuleGrade = lineItems[MODULE_GRADE_POSITION]; - int currentModuleCredit = parseInt(lineItems[MODULE_CREDIT_POSITION]); - addUtils.addModuleToUser(currentModuleCode, currentSem, - currentModuleGrade, currentModuleCredit, FROM_LOAD); + if (isEntryValid) { + int currentSem = parseInt(lineItems[SEMESTER_VALUE_POSITION]); + String currentModuleCode = lineItems[MODULE_CODE_POSITION]; + String currentModuleGrade = lineItems[MODULE_GRADE_POSITION]; + int currentModuleCredit = parseInt(lineItems[MODULE_CREDIT_POSITION]); + addUtils.addModuleToUser(currentModuleCode, currentSem, + currentModuleGrade, currentModuleCredit, FROM_LOAD); + } } in.close(); printLoadDetails(isAllEntryValid, details[MODULE_LOADED]); From 9a0345c7cf22623de968ffebf814a15e1ad8061b Mon Sep 17 00:00:00 2001 From: vanessa-kang <49282734+vanessa-kang@users.noreply.github.com> Date: Mon, 19 Oct 2020 02:47:04 +0800 Subject: [PATCH 161/450] Readd search modules function that accidentally got deleted during merge conflict resolution --- .../academicplanner/AcademicPlannerApp.java | 1 + .../AcademicPlannerParser.java | 5 +++ .../commands/PrintHelpCommand.java | 1 + .../commands/SearchModulesCommand.java | 40 +++++++++++++++++++ .../academicplanner/commons/PrintUtils.java | 23 +++++++++++ text-ui-test/EXPECTED.TXT | 14 +++++++ text-ui-test/input.txt | 1 + 7 files changed, 85 insertions(+) create mode 100644 src/main/java/seedu/duke/apps/academicplanner/commands/SearchModulesCommand.java diff --git a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java index 2afc7008e3..c6d0ef36bf 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java +++ b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java @@ -18,6 +18,7 @@ public class AcademicPlannerApp extends App { + "\tedit \n" + "\tremove \n" + "\tdetails \n" + + "\tsearch \n" + "\tview\n" + "\thelp\n" + "\texit"; diff --git a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java index e494c38e92..8da5b53ea7 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java +++ b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java @@ -7,6 +7,7 @@ import seedu.duke.apps.academicplanner.commands.PrintCalenderCommand; import seedu.duke.apps.academicplanner.commands.PrintHelpCommand; import seedu.duke.apps.academicplanner.commands.RemoveModuleCommand; +import seedu.duke.apps.academicplanner.commands.SearchModulesCommand; import seedu.duke.apps.moduleloader.ModuleLoader; import seedu.duke.global.exceptions.CommandParserException; import seedu.duke.global.Command; @@ -28,6 +29,7 @@ public class AcademicPlannerParser { private static final String EDIT_COMMAND = "EDIT"; private static final String REMOVE_COMMAND = "REMOVE"; private static final String VIEW_COMMAND = "VIEW"; + private static final String SEARCH_COMMAND = "SEARCH"; private static final String HELP_COMMAND = "HELP"; private static final String EXIT_COMMAND = "EXIT"; private static final String DETAILS_COMMAND = "DETAILS"; @@ -65,6 +67,9 @@ public static Command parse(String userInput, ModuleLoader allModules, Person cu } else if (inputs[COMMAND_INDEX].equals(DETAILS_COMMAND)) { return new ModuleDetailsCommand(allModules, inputs[MODULE_CODE_INDEX]); + } else if (inputs[COMMAND_INDEX].equals(SEARCH_COMMAND)) { + return new SearchModulesCommand(allModules, inputs[MODULE_CODE_INDEX]); + } else if (inputs[COMMAND_INDEX].equals(EXIT_COMMAND)) { return new Command(true); diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/PrintHelpCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/PrintHelpCommand.java index a340119727..4882e3fbf1 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/PrintHelpCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/PrintHelpCommand.java @@ -12,6 +12,7 @@ public class PrintHelpCommand extends Command { + "\tedit \n" + "\tremove \n" + "\tdetails \n" + + "\tsearch \n" + "\tview\n" + "\thelp\n" + "\texit"; diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/SearchModulesCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/SearchModulesCommand.java new file mode 100644 index 0000000000..19dd69e2ea --- /dev/null +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/SearchModulesCommand.java @@ -0,0 +1,40 @@ +package seedu.duke.apps.academicplanner.commands; + +import seedu.duke.apps.moduleloader.ModuleLoader; +import seedu.duke.apps.academicplanner.commons.PrintUtils; +import seedu.duke.global.Command; +import seedu.duke.global.objects.FullModule; +import java.util.ArrayList; + +public class SearchModulesCommand extends Command { + + private final ModuleLoader allModules; + private String keyword; + private final ArrayList matchList = new ArrayList<>(); + private final int maxResults = 10; + private PrintUtils printUtils = new PrintUtils(); + + public SearchModulesCommand(ModuleLoader allModules, String keyword) { + this.allModules = allModules; + this.keyword = keyword; + } + + @Override + public void execute() { + + FullModule[] modules = allModules.getModuleFullDetails(); + + for (FullModule item: modules) { + if (item.getModuleCode().contains(keyword)) { + matchList.add(item.getModuleCode()); + } + if (matchList.size() == maxResults) { + break; + } + } + + printUtils.printMatchModules(matchList, maxResults); + + } + +} \ No newline at end of file diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java index 20f7cef4b8..3547c838c2 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java @@ -63,6 +63,11 @@ public void printFullCalendar(ArrayList sortedBySem) { } } + /** + * Prints out detailed information about a module. + * + * @param module FullModule object, contains all information about a module. + */ public void printModuleDetails(FullModule module) { String semOfferedStr = module.getSemester().toString(); @@ -80,6 +85,24 @@ public void printModuleDetails(FullModule module) { + module.getPreclusion().replaceAll("\n","\n\t" + printSpace(13))); } + /** + * Prints out list of module codes that matches the user's search key. + * + * @param matchList arrayList of module codes that matches the search key. + * @param maxResults maximum number of results to be printed. + */ + + public void printMatchModules(ArrayList matchList, int maxResults) { + + String grammar = matchList.size() == 1 ? "module." : "modules."; + + System.out.println("Note: Only up to the first " + maxResults + " results are displayed."); + System.out.println("Found " + matchList.size() + " matching " + grammar); + for (String matches: matchList) { + System.out.println(matches); + } + } + /** * Prints num spaces for indentation. * @param num int of spaces to print diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index b10ce66fd2..05f94df9ef 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -12,6 +12,7 @@ Available commands are: edit remove details + search view help exit @@ -34,6 +35,19 @@ CS2101 Effective Communication for Computing Professionals Corequisites: Students have to read CS2103T Software Engineering at the same time as this module. Preclusions: CS2103 Software Engineering, IS2101 Business Technical Communication or its equivalent, ES2002, ES2007D, and ES1601. Type in a command to continue... +Note: Only up to the first 10 results are displayed. +Found 10 matching modules. +CG1111 +CG1112 +CG2023 +CG2027 +CG2028 +CG2271 +CG3002 +CG3207 +CG4001 +CG4002 +Type in a command to continue... Thank you for using Academic Planner! Welcome back to PlanNUS Main Menu! For academic planner, type diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt index cb76286eb1..04db06527a 100644 --- a/text-ui-test/input.txt +++ b/text-ui-test/input.txt @@ -3,6 +3,7 @@ add CS1010 2 A details cs2101 +search cg exit capcalc current From fd3e60773e7f63c82a847a0b7a4f29bb2fc2383a Mon Sep 17 00:00:00 2001 From: vanessa-kang <49282734+vanessa-kang@users.noreply.github.com> Date: Mon, 19 Oct 2020 03:45:50 +0800 Subject: [PATCH 162/450] Pull updated code from org master (as of 19/10/2020 3.45am) --- .../academicplanner/AcademicPlannerApp.java | 1 + .../AcademicPlannerParser.java | 5 +++ .../commands/PrintHelpCommand.java | 1 + .../commands/SearchModulesCommand.java | 40 +++++++++++++++++++ .../academicplanner/commons/PrintUtils.java | 23 +++++++++++ text-ui-test/EXPECTED.TXT | 14 +++++++ text-ui-test/input.txt | 1 + 7 files changed, 85 insertions(+) create mode 100644 src/main/java/seedu/duke/apps/academicplanner/commands/SearchModulesCommand.java diff --git a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java index 2afc7008e3..c6d0ef36bf 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java +++ b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerApp.java @@ -18,6 +18,7 @@ public class AcademicPlannerApp extends App { + "\tedit \n" + "\tremove \n" + "\tdetails \n" + + "\tsearch \n" + "\tview\n" + "\thelp\n" + "\texit"; diff --git a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java index e494c38e92..dbea723cf2 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java +++ b/src/main/java/seedu/duke/apps/academicplanner/AcademicPlannerParser.java @@ -7,6 +7,7 @@ import seedu.duke.apps.academicplanner.commands.PrintCalenderCommand; import seedu.duke.apps.academicplanner.commands.PrintHelpCommand; import seedu.duke.apps.academicplanner.commands.RemoveModuleCommand; +import seedu.duke.apps.academicplanner.commands.SearchModulesCommand; import seedu.duke.apps.moduleloader.ModuleLoader; import seedu.duke.global.exceptions.CommandParserException; import seedu.duke.global.Command; @@ -28,6 +29,7 @@ public class AcademicPlannerParser { private static final String EDIT_COMMAND = "EDIT"; private static final String REMOVE_COMMAND = "REMOVE"; private static final String VIEW_COMMAND = "VIEW"; + private static final String SEARCH_COMMAND = "SEARCH"; private static final String HELP_COMMAND = "HELP"; private static final String EXIT_COMMAND = "EXIT"; private static final String DETAILS_COMMAND = "DETAILS"; @@ -64,6 +66,9 @@ public static Command parse(String userInput, ModuleLoader allModules, Person cu } else if (inputs[COMMAND_INDEX].equals(DETAILS_COMMAND)) { return new ModuleDetailsCommand(allModules, inputs[MODULE_CODE_INDEX]); + + } else if (inputs[COMMAND_INDEX].equals(SEARCH_COMMAND)) { + return new SearchModulesCommand(allModules, inputs[MODULE_CODE_INDEX]); } else if (inputs[COMMAND_INDEX].equals(EXIT_COMMAND)) { return new Command(true); diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/PrintHelpCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/PrintHelpCommand.java index a340119727..4882e3fbf1 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commands/PrintHelpCommand.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/PrintHelpCommand.java @@ -12,6 +12,7 @@ public class PrintHelpCommand extends Command { + "\tedit \n" + "\tremove \n" + "\tdetails \n" + + "\tsearch \n" + "\tview\n" + "\thelp\n" + "\texit"; diff --git a/src/main/java/seedu/duke/apps/academicplanner/commands/SearchModulesCommand.java b/src/main/java/seedu/duke/apps/academicplanner/commands/SearchModulesCommand.java new file mode 100644 index 0000000000..19dd69e2ea --- /dev/null +++ b/src/main/java/seedu/duke/apps/academicplanner/commands/SearchModulesCommand.java @@ -0,0 +1,40 @@ +package seedu.duke.apps.academicplanner.commands; + +import seedu.duke.apps.moduleloader.ModuleLoader; +import seedu.duke.apps.academicplanner.commons.PrintUtils; +import seedu.duke.global.Command; +import seedu.duke.global.objects.FullModule; +import java.util.ArrayList; + +public class SearchModulesCommand extends Command { + + private final ModuleLoader allModules; + private String keyword; + private final ArrayList matchList = new ArrayList<>(); + private final int maxResults = 10; + private PrintUtils printUtils = new PrintUtils(); + + public SearchModulesCommand(ModuleLoader allModules, String keyword) { + this.allModules = allModules; + this.keyword = keyword; + } + + @Override + public void execute() { + + FullModule[] modules = allModules.getModuleFullDetails(); + + for (FullModule item: modules) { + if (item.getModuleCode().contains(keyword)) { + matchList.add(item.getModuleCode()); + } + if (matchList.size() == maxResults) { + break; + } + } + + printUtils.printMatchModules(matchList, maxResults); + + } + +} \ No newline at end of file diff --git a/src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java b/src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java index 20f7cef4b8..3547c838c2 100644 --- a/src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java +++ b/src/main/java/seedu/duke/apps/academicplanner/commons/PrintUtils.java @@ -63,6 +63,11 @@ public void printFullCalendar(ArrayList sortedBySem) { } } + /** + * Prints out detailed information about a module. + * + * @param module FullModule object, contains all information about a module. + */ public void printModuleDetails(FullModule module) { String semOfferedStr = module.getSemester().toString(); @@ -80,6 +85,24 @@ public void printModuleDetails(FullModule module) { + module.getPreclusion().replaceAll("\n","\n\t" + printSpace(13))); } + /** + * Prints out list of module codes that matches the user's search key. + * + * @param matchList arrayList of module codes that matches the search key. + * @param maxResults maximum number of results to be printed. + */ + + public void printMatchModules(ArrayList matchList, int maxResults) { + + String grammar = matchList.size() == 1 ? "module." : "modules."; + + System.out.println("Note: Only up to the first " + maxResults + " results are displayed."); + System.out.println("Found " + matchList.size() + " matching " + grammar); + for (String matches: matchList) { + System.out.println(matches); + } + } + /** * Prints num spaces for indentation. * @param num int of spaces to print diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index b10ce66fd2..05f94df9ef 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -12,6 +12,7 @@ Available commands are: edit remove details + search view help exit @@ -34,6 +35,19 @@ CS2101 Effective Communication for Computing Professionals Corequisites: Students have to read CS2103T Software Engineering at the same time as this module. Preclusions: CS2103 Software Engineering, IS2101 Business Technical Communication or its equivalent, ES2002, ES2007D, and ES1601. Type in a command to continue... +Note: Only up to the first 10 results are displayed. +Found 10 matching modules. +CG1111 +CG1112 +CG2023 +CG2027 +CG2028 +CG2271 +CG3002 +CG3207 +CG4001 +CG4002 +Type in a command to continue... Thank you for using Academic Planner! Welcome back to PlanNUS Main Menu! For academic planner, type diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt index cb76286eb1..04db06527a 100644 --- a/text-ui-test/input.txt +++ b/text-ui-test/input.txt @@ -3,6 +3,7 @@ add CS1010 2 A details cs2101 +search cg exit capcalc current From 8fef633adba241c3118486f111a19e4445528b42 Mon Sep 17 00:00:00 2001 From: vanessa-kang <49282734+vanessa-kang@users.noreply.github.com> Date: Mon, 19 Oct 2020 05:12:45 +0800 Subject: [PATCH 163/450] Updated UG for acadplan v2.0 features: 'details' and 'search', + a few minor edits. 1) Added documentation for 'details' and 'search' commands 2) Updated screenshots for 'acadplan' and 'help' commands 3) Fixed whitespace and typos TODO: update toc to include 'details' and 'search' commands --- docs/UserGuide.md | 89 ++++++++++++++++++++++----- docs/images/acadplan_details.png | Bin 0 -> 38959 bytes docs/images/acadplan_features.png | Bin 9939 -> 13624 bytes docs/images/acadplan_help.PNG | Bin 13261 -> 11879 bytes docs/images/acadplan_search_full.png | Bin 0 -> 11640 bytes docs/images/acadplan_search_part.png | Bin 0 -> 22931 bytes 6 files changed, 75 insertions(+), 14 deletions(-) create mode 100644 docs/images/acadplan_details.png create mode 100644 docs/images/acadplan_search_full.png create mode 100644 docs/images/acadplan_search_part.png diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 811f68bf45..355bcd5821 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -16,24 +16,29 @@ PlanNUS is a __desktop application for planning academic journey__ with modules 1. Go to the directory where the jar file is saved at. 1. Enter the following command `java -jar PlanNus.jar` + + ## Features PlanNUS has two separate commands at the main page where the users can either choose to have an outlook of their potential academic journey or calculate their CAP. For each of these commands, there are more specific functions for configuration of user's desired choices. - + + + + ### Academic Calendar Planner: `acadplan` Directs user to the page where he/she can plan a personalized academic journey in NUS by using `add`, `remove` , `view` or `edit` features as shown below. - + -Input format: `acadplan` +Input format: `acadplan` + #### Adding a module into the calendar: `add` Input format: `add ` - **Example of proper usage:** * `add CS2113T` @@ -46,8 +51,9 @@ Upon entering the desired module, user will be prompted to enter the semester wh __Caution:__ * Invalid module codes (i.e. Modules not offered by NUS) cannot be added into the calendar -* Duplicate module codes cannot be added into the calendar as well - +* Duplicate module codes cannot be added into the calendar as well + + #### Removing an existing module in the calendar: `remove` Input format: `remove ` @@ -62,7 +68,8 @@ Example of usage: __Caution:__ * Only modules that have been added into the calendar can be removed - + + #### Editing an existing module in the calendar: `edit` Input format: `edit ` @@ -87,7 +94,47 @@ Expected output when user wishes to change the _Grade_. __Caution:__ * Only modules that have been added into the calendar can be edited + + +#### Viewing the details of a module: `details` + +Input format: `details ` + +Example of usage: + +* `details CS2101` +* `DETAILS cs2113t` + + +As shown in the image, users can input the module that they wish to view further details about. + +__Caution:__ + +* No information will be printed if the module is not offered by NUS. + + +#### Searching for module codes containing a keyword: `search` + +Input format: `search ` + +Example of usage: + +* `search CS21` +* `SEARCH cg4002` + + + + + +As shown above, users can enter a search key that contains either part of, or the whole module code. + +__Caution:__ + +* This feature currently only supports searching by module code. +* Only up to the first 10 results are displayed. + + #### Printing the academic calendar: `view` Input format: `view` @@ -104,11 +151,14 @@ Expected output when user wishes to print a specific semester: + #### Printing help for academic calendar: `help` Input format: `help` - + + +​ ### Cap Calculator: `capcalc` @@ -118,6 +168,7 @@ Directs user to the page where he/she can view the `current` CAP or even `set ta Input format: `capcalc` + #### Printing current CAP and MCs taken: `current` The value of CAP depends entirely on the modules and with corresponding grades added by the user in Academic Calendar Planner. @@ -129,7 +180,8 @@ Input format: `current` __Caution:__ * If there are no modules added, the current CAP and graded MCs are set to 0 - + + #### Set target CAP: `set target` This is for the user to set a target CAP that he or she wishes to obtain for the next specified graded MCs. @@ -142,7 +194,8 @@ __Caution:__ * CAP should be between 0.00 to 5.00 inclusive. * Minimum MC should be greater than 0. - + + #### Set S/U modules: `set su` This is for the user to set modules that he or she wishes to S/U. @@ -151,6 +204,7 @@ This is for the user to set modules that he or she wishes to S/U. As shown in the image, user can choose to S/U by either a _Semester_ or some selected _Modules_. (__Note:__ Enter either `1` or `2` instead of the component's name) + ##### Set S/U by semester Expected output when user wishes to S/U by _Semester_. @@ -167,20 +221,21 @@ __Caution:__ * Only modules that can be S/Ued are added into the S/U list. * Modules with special grades are filtered out. - + + ##### Set S/U by modules Expected output when user wishes to S/U by _Modules_. -User will then be prompte to enter a specific number of modules to S/Ued. +User will then be prompted to enter a specific number of modules to S/Ued. Expected output when user entered a valid number of modules. -User will then be prompte to enter a serie of module codes to S/Ued. +User will then be prompted to enter a series of module codes to S/Ued. Expected output when user entered valid module codes. @@ -190,7 +245,8 @@ __Caution:__ * Duplicate modules are not allowed. * Number of modules to be S/Ued should not be greater than number of modules taken by the user. - + + ### Exiting from a feature or PlanNUS: `exit` This command directs user back to the main page of PlanNUS after they are done using a feature or exits from the entire application itself. @@ -209,6 +265,7 @@ Last but not least, the expected output for exiting PlanNUS will be as such: Input format: `exit` +​ ## Loading and Saving @@ -235,6 +292,8 @@ General | What is a valid semester index? | For the purpose of this planning sof General | What is a valid grade? | **Letter Grades**: A+, A, B+, B, B-, C+, C, D+, D, F , **Special Grades**: CS, CU, S, U, W, IC, IP, AUD, WU, EXE, **If you have yet to have a grade for the module**: NT General | What is the name of the saved file? | The name of the saved file is `PlanNUS.txt` and can be found at the base of the folder, in the same location as your PlanNUS.jar. + + ## Command Summary Note that the following commands are case-insensitive. @@ -261,6 +320,8 @@ Note that the following commands are case-insensitive. | Make the module grade as S/U | `set SU` | | Exiting the CAP Calculator | `exit` | +​ + ## Appendix ### Naming convention for semester indexes diff --git a/docs/images/acadplan_details.png b/docs/images/acadplan_details.png new file mode 100644 index 0000000000000000000000000000000000000000..ce2b12c7b1ffcfeffbf71ebeb77bc169d0fe4718 GIT binary patch literal 38959 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 N$7;H&Rm#?({|B|&4oLt2 literal 9939 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 diff --git a/docs/images/acadplan_help.PNG b/docs/images/acadplan_help.PNG index 2bee4cce4cc385f3b8157232a3b9e73c78c46943..9602c17d429f64d3cf6fd3d9a13d098b15d8c609 100644 GIT binary patch literal 11879 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 OdimmwQl)}<@P7asE8tQ9 literal 13261 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 W`OaIF3h^&ENV1ZO66In>{{IV-{-PTI diff --git a/docs/images/acadplan_search_full.png b/docs/images/acadplan_search_full.png new file mode 100644 index 0000000000000000000000000000000000000000..3e1aeb7bd435fbabb57d6f81f09479aaa411b3ff GIT binary patch literal 11640 zcma)?WmH^GyXAws6Wl$x1b4S!0fM^*Z`_;U?iw5df#3wU#+%?0ELdnXxNAcX`QP{6 zxij<5n)%S(^?W$1&#H6kso&naVl>qivCzrTU%h&TrK}|P{?#kEuP-d@;=cD-&>UP}1GCWgHJnc3_lJk?p!-KLoju4S(;YZyqRy7q-@&P@hX9wK-`>3Uf z>(YCP{y}cGQu4@1>695kW(W+3GB?RV#~f>aJcGV=u!S?Onb0DV1p@sJl=Zrs^DY-E zFC|^)D@BY|RM2rkX;4GmXjcbeh|;)-o4mFT3z`KMLEA9)04J_xa%JSBvIV*JD4%P5p4`Y~U?(cQFMeyHC4t?oCxdu<9jkG1LP zR?KS^08$wm(Hv2V%7tXAuTliH0!`|!Z zujxfhBeuIX{yOpOk?O?J(QAO{j(s>apf@yg4P!;nuWyWIvNL!3i}mG)=1z~ZE~MdY ze4UZdnTQzoIPPBqg5*7h<;kH-{>7QyI=Jy*d{8- zbdbaqyPwfQ@BF5{vx^ssChyY%Gm~+~7 zDZ&>(v^~fy=;4i(e?$O~D_z-$q}mO6mTC-Z$KTQGt615LHi{k zKa!ssQH>I(SyL-}9#8kv&zK84v!0a@?13tdkJ?_we>#!EU$GcT2dzeT&kP>&1Ky#+ zvp)3ZtPxs=+j$H96h`;uA1NNa3G1&yW5UVJr$L1Te{}{}(rxX24Cw=ZAob{?fCJ0? zF8!|CJHbjnE}|h+%_iPd5qBnK-UHvrgfVVflL1nmN8QiKj=6MmRQR5S$s6VjD}N=v z>R>R$u0ThzhXgBixO0#bU0F|vNqg5cP#9BI5RiqBQOt-Y+Q@C}Q&)}_ zDu%wInX+3pN|*uo2Bxdvo7LdXs&J2pm?RW@O}e9e#5q=s=rG)#Q!W?YcxYm=zsviA zNb~_qKug1j1-JN9)qAK7k5vatz7=uf0 zjpmWY9Sl;>g$$lkoeASc-3>^eyfot65a{rqf6TbI;VWrqbJKiXJIwEoj2kJ@iSivS$oUn`)-oSMEt_3>Jo;e==Q)VbJ{yiTI| zA54gOs1br=-*M&nEA<%$2ghOsS3vJ32cvf8AxPAjlT1t!9FX0goc&{170MHe5dqvK z*bjYSpkdHUW4{#^j3J;l4r4GIp~b`?Bp`U@*c#P|G;zY)#=mS^^GA(ER;{fKNC5uwNg70Fq$x;3? z>BOgI7E&WrHD@8qY;HgPG;X|?X9U?D`7w(bZQf4tZ0N&s%gI@iJLY|KT9|3+C+%=kE z3ouiX=^bN?nww+HYEus?Cqz^5jIOcVL?LICvS5`zC2t+a#AlE`_^Z&dt}GfYKK?N> z&WIn@L23>RN>+Sq5{ho~3aTo1?rABgm`>|z&7Vvjb4I~+wk{xPcFpy&%BEi3PESwU zKwQcFh0`b0Do#y*Ab!L4FJp#Ic}i;v#}$OHsMB7vBvr`D-a6>CzB@M@QGwrd-kzq= z`^3g-Rx!nD=&J3<%M&d)Ai9FW>qW^*xQ;qTuz@lAeTlgNeK=C;4z+uool0}x&%T4_ zQ+%DBm$1>TK1pD+zo_p|~6ihL0!>r6@YjbCJSD zEp}{;K;k9xqd#~wm6r7)gs3<7SikgHX-`fDb;0S2H($_S(>Ur#8Bm0B6Y={QU#4=r zV9iYXzpy6ijwbvCe`t(R@R?sYsDFnBK=-%A{(qH_9!46T*972Od6J;4WH;%GK#|>Y z*TeHb3aTKhHw9GYeKBEK#d|_`iGFxv%UvOm(yxRMtsbLx~2;|53`0-=*+c#7XL5iA7o~J>SCEuT1 zU14I>5m#lZJUZVgzmADaxr)_E&8F|2^=l{5291Vgzhxq16xAq|VJ{S$>H`@88GJUi za?+B1IYxQ5V|fmO#7+}`2Y)|*_T?c`rjluNw4g6hwF=r!KOOfV}m|9&keyx+gxv_JsBhbrf8#p$9p2OoDsb zvpU%~2VjA9j-C-+d+wRmp({8n1X*~T(Ni=F2Up;-x^=M8QDFCVmTL;fXGEby#pM~- zvz=dSZL9l+8D@(-Q(J-_5KZ@D62X=nQNx!z@_bS%{XV+)v<=GzsU*Jo68{IyDg{ru zcz!9M7QLWBmWQbVQB=J?E~fd+SN`qrq#r&8l`42!XQA=3Mz&z7acj%=cS6~e`NPP` z*=FdB2gEuz_BLa4yvNBt;&>=?6Ta9+$R8CS{(5Ap2mXoQ?DgJ`IL|2v7zcj;IT`SF zgRD=P9=VbarPzNfY6;K)cb(zKqIETpu1^_ko?^yVVlei6yT4K`3u^}ru2xp=Q`$^z&|vhAITWzP=EMN_&Y`l_;e;o(7ZQqulmm+!FqVtxQsnx z6F1}iM&G?h0+)^w-OCNFvzSrzE zT1UPIh!GlvN+%){;r4^>$udW3lj?4+u6^RK#>*WYdE2%hHRj8C;yavW9TfzS~zq9`$g`^VErR1@I+iMO1Vyz_ddp?!}#bkp_ z-cj-S#*@|3@&=?TRZZNbXrI~2SgbB>GRWQ<8KI;o#rwz(PjUzuX~sg1f|fihFii*` zw8U)0aOxf;g&?2m`GgsS!&EjSuK^VSldgymU8T3@g5k>Qcj*PMA6b0kuXN%w|G zN81z&i}@Fu@wz>43-bV55pZBm^Qf5OwLw8FKcjM*TUkf5rV5{)}z+hLgyPrRn?iu7qAG;B@FgsprM z3=M%>Ed7T-_x11N2p8)C zhtB{7;=!R2Hy3cLP=;PSRC{C7eEoW-A8?K zi=vS-wvwlF{J6}VVkL{xJ+M|lFYxzb6(}1PLce#n7hE0eIDJ}l+UT~f@Sc;~&CEJn<|QZbT8L}8 zR`SUcbDy9{O^C6pOBt(76VvS=>PF_B>dfPSPJ2S-E{{uC{+AB+V>_ z!_>n6mP`M?8$too8zD5oqd!wfhLDgk6m|bDv2cC z^Bjet^`!HgQP^)OZ(+>!bCSoqF<;JWbswea(r+C^8M@aHXpM)}bKX77We@bSl5E6N zddvy8_ZGISc)po>bg4JBs0BRDEqj*381KO!pS zwF>$!bl4XLU;Yk9sc@z!*!rB}bw?O~UP(grg2wqy$~fPg_h;-8ySfbN`P;LY$*_b+R3g$pZ{!K|-+gGA?C7h(8Qg?ugsV_ynkouAy2)?_!aO*Y>gt@PkI>UAgSKJrJa z9$?=(B6ZC*b(KL4-MlBr@9Z_MIWo-xgl<5WP}Mge_?tRvHg72NGVBI5R;rB-N3qqW zs3=>0sceT^CEm};vnddLg{|oQaxGW!SX)xkRRI3%1y@;c{T2}I8DI<&zD&A;j_G_l z%UHRslm$S95Y(xrWX$!m+vJK+bCwhKb21a*8t|f3sFFU)h9&#(>^%gWU}4$USERiC zLf${`P=R2CSWB{;rM55pkqFtxYK1wmw`*wZ{PD-)2ElGnBqXN{*xQ&zEhE=ycr8ED z^D}&%J?N?W4>@?2czo6e&sI4?^-C=>|1PHz8DT>5Z*xQx6e+;On0w|J3Sb;JjKuo4 zbs|T2MksE}-u4Gt+a=k3;<<=2SN!4fHd@J6ePh|)_~c+53zAC>>rq6p@maI<+_|2s zm21%8OH=85^oeY`1XiIExAyA^nf0NbYxm}x_1%V|M)`#!vE8#z9`NH%*5>v@ z!>MGfMogiv-+dww`yl|HfT< zSn;g6m`~i9dRftxm$aLW!VQ?!$5cg=S^IIV-^qs)>DXx~kWt(yOhrFC%MBQ3!NjS= zH-j`6LEYhS#R<2V8jk}a20Q_LJ$EP2`P$(RtI!ngHfH!Gz-?&`*3XDQ<+&I|R(1UFnWYHft$k(7@P+@vus__1Z8r<2ohdqTpL$OVy06&Q=} zuY$Mjjb<&R^$U4WL0xF%jT9RKZ7IJ(;j;~%nadKao-w43XJEe%3suaUcD0l?aNib) zh4!9%oKH{NzqNDi%i6G!rY~l@*FAbLgS-$|{*zI)$&cg5+k<<6_j7)+C722?Bs5>J zXYfzh3>W**9L`tEpCK$PZ8QuCWDzO!MpI@|7xtJ}RUAiGLo`(xD8O*qY_Guy(CTV6MNkq(QzXHai|&#e3PP zx5inxszc01S>nk>DZ~Rk+|EjH{QZfe!9MRL48o6uVEBh9qR$|m(^W}qDJAN`-`+nswtr3ace=(-$)h`J@PBY**vx#$eWZ}A(t!DskT5RkO6up{V^ z5f!q&r#_F9uM28M0Z-+jcHUv{M=gDx6UyP@e9>EN8g3B}33UG7_Y@ZPslYcg@tqe7lb6Y5d}idPVM6{1L$X!@=Bp;!D1HI*L}Z9Mm$n<s zOkg|`#z7>z={ec_{TmLOe!>ssQ+>Eo@2VfcQFph}TnyKmhR*MQJOdEa^}NmP4J9Ri zy22<>awF+DL#rdyo<@2bTa zOHMtIB8kbq!R|Ur|NcIy;#7b@<6SI%4g7y82-_D0p;&a%YuB>BIfqd3I?E)99)@iB z(~56qATYfQc6tY?py&>`H*ih`>{Ekxw!HJq6wkU){L3U0XTGsl!|o8Ojk}2>x0m&~ zKXBB(cuw6RCV+#2=dV>(gBWwJ%+1EDDN5?;TdND#LIpCD>*r)XjizQ#4y}RYqdv|33^XxcRElmYqS3u7pHyu zLK$~(ZP=wo2Ra99NyM8f2U6L8yk#raAt{<^{t)*c0R06=!Rb>=u{0EGze&W`zXkL0 zh~s2K;GyKqNxrmQ96?7l(vFVq+1i2b`FAb$_3r;9TC`gXcGi@3RZ4V2q>R>xop!Im zAni$)>NPJoRsw`8M(8T(`^C)ip577&UzVsRpxL7N zA7&rI3ezG$+#Fqc&79V9(ZK_$YI1I!sk`9&m~qiqpk&64e&KO=ey)=1RwumPlj3&D zs;2PPK}LIx`FWW~>;+ zTIQ!v2yc33=D^a2+*KEo>WB}g$Ym;wlYB6SL~xh#kHyu6L%DHzmReM~!kI8!$R_sG zv@{9sDI=LH%H&wo)+Jjr^sGhyxLh=}|9K}lhppDpI79c)yqzrPS8^r%CL8D@%FBX& z)k>o-KQitjH`U~c8J!@dbK(1roGiR6PI$qNm0~d@Z21 z*3DP@UtF{Te78|aLd4cRyX*Ji93_I5ogMQpb+xnouKPgGK8RA#T6$6UMls?I83On# z4X+sbn@SIEh7znzXM3qI`GhaDYq*n%b=W%k#2&_2oYon%0$xlCo=H-2x0}A6yNI4U z2es`rcGR>$^o_r8Nk6Co$Hb)>5ng})iiM#oehjd)^fbX~pSBAD>2-w(7R1YY1$Wzb zQwniXPfpftUuf%vk$Dg^V8tq+UdlT@$E5@%LkID)TYZItC6{mB)gwvR zzb$}mQP(@Y5L_^mmZbEmYLii(&}95LR#kls9ho*UXFrAqG90ts)>x1(giLDv256=F z5wTqS5&!$G;$_PG-ELdc9y-Nh^jvPwAdeNVt=KKwIJL`Q4j+GsE_yM^cQ-Uszn#}z zyc~GOzY%;tKbc;@W^1~Ch{XSSD-h&Gb|On`K2ujHW2hr>lW$+@E=Vzu$-%fUvg5~Y z+K3ouck`)JAC2hvj(K6{&hm7ys(6z&}@MQS+jq3iy3nj6;t2keaXM4nLU>xv-g;0=?XQ5QuHMF?p(~#lID@6A8 z-QyH)ac8SWz2tVDDB(eHwm`sJGQsW`n5c?|&C6=QQpyXCJPV}TeZCjQym5)FEXL1D z3W}=h5#_p=ne{=SK{OOlL_?R?A?xk#_U{L@6C}(z6+q%Ty>21YA zdBi*VQLtDMcTaTb z@0c*Sia_`qnfa5>g&*r?`QJC5s^ z4GNkC#;xV}55@-}hKWx?+)nuEmv~lXz`uVi;|V=Y@eAp?&Pf&A%GH5QW&B5ws?9Dr zZfwbCg8J$AV(uoh!310Hnc=_|y%O+ZN6<@Z`=F`mzw2|W+`pr8OWHqf5;THAe#d9l>%S6*V zM+3WIFCofq%V(d{KiL#H2?@EJy@6}T0!Upu{WmWA{H|{bG_Wi|*T2(`+VGEzw@9IT zu4a(7;T8?r*~`p;qM4=1;$gJEU|gmxB6rs4lFciQ#AwtrM2ZmArvXZ0)TWbj#8^kg zMwha$FBAgOPae_r$a1sHgj|xgL*QR7gqVJng$&-_b5;Mf66xQ?4fkff^y>jy2M8wS z&y)TKSue=vd;~6SD=1ev9kgG;soU+iM)sd8%dJwhZ+v`V-M43;PF32p_BaeHZeKT4 zUf{zYhtsZ>ng8%PZX!{Aoc6@&c}{YOxhI`*B#b;L$POwM|K{D(kwSlp1bwB7uL$?x zFIyh*sR8taRP796}UwI=e>L)ce^4hbJ8N?ErSq35ihhjB?MTId^hRL~e)(iF zqiKl2*+yJGo*iBkN?pJBOV=31U=a1){$bKVqrY$XH8?EoalrRM^k|A;TQ;m@TwBQd zj0QVayW1bJ<0p0ha~zhSQ{5-KEa~jj1@g}Xxo&N}zkf~!Fj+2)X_VBt2=?d$(XXjg zeEH5VGSBUuoZvO^2wzA^JZT`y4SchYo9wcbE#GA z`%`o0KcK7=b3=|NA{WmQfHMZ-YMERyZBzqChikHoH;;%vi!TKE5b-Z|hp)8c-%^HU znE^>=1fy}y&cvVZ7W1#@IR6IjudwFS|LGt3vl)4Rqbw2le}8i4e>=$Y?@O>ahdNwL zWwuZcSO4lhJ@H_E)F`#ICzW7K+G#fNc^?Y(>f3JE^IQRw3gK}?*z zRm@gDP6M{CVt1BIT{>CT{3pS=muu(ORaI`^-jMxKEsU_dy*;D2!A(W@tOW>0SqN;W zwy|A#XsJuoc$r>qme1sxZvNy8K>-vQL?4O$e&21F|4Fw$bS;pK;s-qwf`{r-E(6oA z?_R`9pU0rim-?-&!nOWHAjuB??J3nP&YWFYv6<&9>tQm&yw%vhUAB3kkHBct#)9Nx zg#F$AYcwa!LAZr^@-c^s8`_Q8qP2nOQ7Q2vnd{C`pMxuRBc)4Hw^e;#u=y4(>c? zn?FI7a6w+ze+wTh7|h?}MEs%aiE?zwUGY9kCJK7U0DC{Xk#Yh4s|#&-eo8(|LN{h? z4+Q{xnVSYXg8I-p%)>y%I-JlpYI_*p*Z<5dj5yT=uMRd4R`0ciR;*11&!j9tO2&pT zoWQHPplKfs@X=4)s)#-DX|^Xo{0AG0Cor}7&OtXf!_;tSgF}@Gx)+MXcX^*eDyf~oE#9tpTx=}R6To%(r~p(&i}mqfX*yjUr2 za`2!A36)$J6Rl)9#l-O8_%Z6=r4t{Ul}p@EBn%ti$0XOHR3wOVVI34>SzO@QshgtI z9LAjuG|HR0(u+-oC-{7$XOZ9_+`%WQ&Y_qs2f(&IHas$>3_CcKGs$#63o}pB4|_t- zD3_{2q?;7QBUUTB9fKT4kM5h1nDs)6Cw&UZX=Hr9ky}d<;n4D9{U1%z4yHj_mu6A0 zrM;A{?rYXVtomkg*Fge)yH+cpI$rFg^UzJag52=Z;7?Kty`-Q*_JK!79Ga@%=&_tf z!%3tfazhHSjzW=p2nIH_3hM=4ONA!kki0PcP8YTdH5CBErV<15D8S{=pJIwbVdg%6 z$*lspA!bb;#?7wF(&dXr92;-XG9|NqAE?8&-NuTCeKb3JIwEO;OH4n|PPqZmG3B|? z2#N~xn>9MhGYE@qQrBI3uQ4KtiJ-^|(ppn^EguR;ZRP;x>pYQs6;dX3fYGbcn(lxYupAqLXSCp|R50OTgC?E(o{Ln)cf@p=DX#FY(`9`Kt zLfl-$2Yz|cAx)di?V{@TY&`&Sbz)WzF^ifuTw4|QHPHCNMS^tSetqX##u4P0xEQmb zzAexkdusR~s$!>zbgT1ovttoOdi9Nqa-L8vsX>%RA4y^CCXa%3-bjl?wCfNSD|N;l z`I&ZQ@1a+HGw6Dnbo)ihIJK%8mOHFrJ+`SL%F`I9M3t`aYHAus&d$1%tjyca%T)P< zrS7yN`9XZgbJN+^y=NPsY%fBrm6TLMg^^u^~Qb-n`q1=8I=PH%ozJhp}YYAe_OI{qB{t1bIk_N*xK+(jzNeWWWt#^Cam0Vht+|WwB^Iwj2 zo6Qjecq5GFB9Bi8Ra2Ip6>Tbt-1)=hb?O5_`|#`!*V;;Pqu?Hb>k=(8dC}(>FX0}N zr#N~2t2mys?l$Zy?@WDX3Oj|}NZq9mcnOsl#G4VqVIgT%=Q};DRow%g+)w{roi$UE zBwCDR;(O*_h!JragbwjN_U7w`w$j6V245xxC^~BP-_)L}8SpK&L4s@I$_blNk3{^n z{dBH*g){D{(yEl=F(M$V;jti%&v)L9-9Lx|9d;uk@VY5B?N~f1>o@Fa><+3UYWVH1 z%%OE3OG!Ho368E2PDs1|2S-EO)K=ZM|7srGe0h`t;lHPi<@Tih7Znr-2L*OBwxUg; UmFB#hmVTuyuP#?BV;=fH0F9xFfdBvi literal 0 HcmV?d00001 diff --git a/docs/images/acadplan_search_part.png b/docs/images/acadplan_search_part.png new file mode 100644 index 0000000000000000000000000000000000000000..d2c0c5b0f96d87562cb3ac59455678dd57e60ee4 GIT binary patch literal 22931 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 F`x`4$J4XNj literal 0 HcmV?d00001 From bd2ca9bfd04ad0251d22a5824a22e2ff893afa39 Mon Sep 17 00:00:00 2001 From: harryleecp Date: Mon, 19 Oct 2020 07:41:15 +0800 Subject: [PATCH 164/450] Added the edit module feature --- docs/DeveloperGuide.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 33e93cad3e..5f0a439650 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -82,7 +82,6 @@ The interaction within each package should ideally be as shown below.
    Architecture diagram for ideal project structure in PlanNUS
    - *Note that while this is the ideal case, packages such as* `global`, `parser` *and* `ui` *might not strictly follow this structure due to these package serving a different function altogether (Refer to the sections below for more details.)* ### Lifecycle of PlanNUS @@ -189,6 +188,14 @@ The following options were considered when implementing commands: * Pros: Easier to implement * Cons: Class needs to be instantiated and increases coupling, reducing testability. +### Academic Calendar Planner: Edit Module Feature + +#### Current implementation + +Similar to the add module command, the edit module command is also executed by `AcademicPlannerParser`. It allows users to edit the existing modules added to their `Academic Planner` by first accessing the specified `PartialModule` object within the `userModuleList`and `userModuleMap`. + + + ### CAP Calculator features (i.e. current and set target) #### Proposed implementation From 40efd664e78d8c480d7b450038dfe3ea68c85d39 Mon Sep 17 00:00:00 2001 From: JuZihao <57383789+JuZihao@users.noreply.github.com> Date: Mon, 19 Oct 2020 16:05:15 +0800 Subject: [PATCH 165/450] Added set su tests --- .../commands/SetSuBySemesterCommand.java | 4 - .../commands/SetTargetCommand.java | 2 - .../capcalculator/commons/SetSuUtils.java | 12 +- .../capcalculator/commons/SetSuUtilsTest.java | 111 ++++++++++++++++++ 4 files changed, 117 insertions(+), 12 deletions(-) create mode 100644 src/test/java/seedu/duke/apps/capcalculator/commons/SetSuUtilsTest.java diff --git a/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuBySemesterCommand.java b/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuBySemesterCommand.java index e42c2f2861..a6fc255edf 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuBySemesterCommand.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commands/SetSuBySemesterCommand.java @@ -14,14 +14,10 @@ */ public class SetSuBySemesterCommand extends Command { - private Person currentPerson; - private Scanner in; private SetSuUtils setSuUtils; private ArrayList suList; public SetSuBySemesterCommand(Person currentPerson, Scanner in) { - this.currentPerson = currentPerson; - this.in = in; this.setSuUtils = new SetSuUtils(currentPerson, in); } diff --git a/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java b/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java index e5d7c784a7..e6f532e512 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commands/SetTargetCommand.java @@ -24,8 +24,6 @@ public class SetTargetCommand extends Command { private static Logger logger; private static FileHandler fh; - private Person currentPerson; - private Ui ui; private SetTargetUtils setTargetUtils; public SetTargetCommand(Person currentPerson, Scanner in) { diff --git a/src/main/java/seedu/duke/apps/capcalculator/commons/SetSuUtils.java b/src/main/java/seedu/duke/apps/capcalculator/commons/SetSuUtils.java index ec44efb0a6..29a1e0c60f 100644 --- a/src/main/java/seedu/duke/apps/capcalculator/commons/SetSuUtils.java +++ b/src/main/java/seedu/duke/apps/capcalculator/commons/SetSuUtils.java @@ -25,7 +25,7 @@ public class SetSuUtils { private static final String INVALID_MODULE_ERROR = "Looks like the module you entered is not a valid module!"; private static final String NUMBER_OUT_OF_BOUND_ERROR = "Looks like the number you entered " + "is more than the numbers of modules you took."; - private static final String EMPTY_LIST_ERROR = "Your S/U list is empty!"; + private static final String EMPTY_LIST_ERROR = "Looks like your S/U list is empty!"; private static final String DUPLICATE_MODULE_ERROR = "Looks like you have already added this module!"; private static final int STARTING_SEMESTER_INDEX = 1; private static final int FINAL_SEMESTER_INDEX = 10; @@ -120,12 +120,12 @@ public void showResultsToUser(ArrayList suList) { } /** - * Display cap after each su. + * Display cap after each S/U. * * @param suList the S/U list * @param currentCap the current cap * @param totalMcxGrade the total MC multiply by the grade - * @param currentGradedMCs the current graded m cs + * @param currentGradedMCs the current graded MCs */ public void showCapAfterEachSu(ArrayList suList, double currentCap, double totalMcxGrade, int currentGradedMCs) { @@ -250,7 +250,7 @@ private void addModuleToSuList(ArrayList suList, * @return the module to be S/Ued * @throws CapCalculatorException if there is no valid module found */ - private PartialModule getSuModule(ArrayList filteredList, + public PartialModule getSuModule(ArrayList filteredList, String moduleCode) throws CapCalculatorException { for (PartialModule module : filteredList) { if (module.getModuleCode().equalsIgnoreCase(moduleCode)) { @@ -319,9 +319,9 @@ private String getAbbreviations(int number) { } } - //@@Author jerroldlam + //@@author jerroldlam /** - * Returns true if semsesterIndex is a valid semesterIndex, + * Returns true if semesterIndex is a valid semesterIndex, * else returns false. * * @param semesterIndex semesterIndex to check diff --git a/src/test/java/seedu/duke/apps/capcalculator/commons/SetSuUtilsTest.java b/src/test/java/seedu/duke/apps/capcalculator/commons/SetSuUtilsTest.java new file mode 100644 index 0000000000..0199a241c2 --- /dev/null +++ b/src/test/java/seedu/duke/apps/capcalculator/commons/SetSuUtilsTest.java @@ -0,0 +1,111 @@ +package seedu.duke.apps.capcalculator.commons; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import seedu.duke.apps.academicplanner.commons.AddUtils; +import seedu.duke.apps.capcalculator.exceptions.CapCalculatorException; +import seedu.duke.apps.moduleloader.ModuleLoader; +import seedu.duke.apps.moduleloader.exceptions.ModuleLoaderException; +import seedu.duke.global.objects.PartialModule; +import seedu.duke.global.objects.Person; + +import java.util.ArrayList; +import java.util.Scanner; + +import static java.util.stream.Collectors.toList; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.fail; + + +class SetSuUtilsTest { + + + private static final String EMPTY_LIST_ERROR = "Looks like your S/U list is empty!"; + private static final String INVALID_MODULE_ERROR = "Looks like the module you entered is not a valid module!"; + Person currentPerson; + AddUtils addUtils; + SetSuUtils setSuUtils; + ModuleLoader allModules; + Scanner in; + ArrayList suList; + PartialModule suModule; + ArrayList filteredList; + + @BeforeEach + void setup() { + try { + currentPerson = new Person("Bobby"); + allModules = new ModuleLoader(); + addUtils = new AddUtils(allModules,currentPerson); + + addUtils.addModuleToUser("CS1010",1,"A-",4); + addUtils.addModuleToUser("CS1231",1,"B",4); + addUtils.addModuleToUser("CG1111",1,"B+",6); + addUtils.addModuleToUser("MA1511",1,"S",4); + addUtils.addModuleToUser("MA1512",1,"S",4); + + addUtils.addModuleToUser("CS2040C",2,"A-",4); + addUtils.addModuleToUser("CG1112",2,"B",4); + addUtils.addModuleToUser("MA1508E",2,"S",4); + addUtils.addModuleToUser("GER1000",2,"A",4); + addUtils.addModuleToUser("GET1002",2,"B+",4); + + setSuUtils = new SetSuUtils(currentPerson, in); + filteredList = (ArrayList) currentPerson.getModulesList().stream() + .filter((partialModule) -> partialModule.getCap() >= 0) + .collect(toList()); + + } catch (ModuleLoaderException e) { + e.printStackTrace(); + } + } + + @Test + void execute_getSuListBySemester_result() { + try { + suList = setSuUtils.getSuListBySemester(1); + assertEquals(suList.size(),3); + + suList = setSuUtils.getSuListBySemester(2); + assertEquals(suList.size(),4); + } catch (CapCalculatorException e) { + fail(); + } + } + + @Test + void execute_getSuListBySemester_exceptionThrown() { + try { + suList = setSuUtils.getSuListBySemester(4); + assertEquals(suList.size(),0); + } catch (CapCalculatorException e) { + assertEquals(e.getMessage(),EMPTY_LIST_ERROR); + } + } + + @Test + void execute_getSuModule_result() { + try { + suModule = setSuUtils.getSuModule(filteredList, "CS1010"); + assertEquals(suModule.getModuleCode(),"CS1010"); + assertEquals(suModule.getCap(),4.50); + assertEquals(suModule.getModuleCredit(),4); + + suModule = setSuUtils.getSuModule(filteredList, "CS1231"); + assertEquals(suModule.getModuleCode(),"CS1231"); + assertEquals(suModule.getCap(),3.50); + assertEquals(suModule.getModuleCredit(),4); + } catch (CapCalculatorException e) { + fail(); + } + } + + @Test + void execute_getSuModule_exceptionThrown() { + try { + suModule = setSuUtils.getSuModule(filteredList, "MA1511"); + } catch (CapCalculatorException e) { + assertEquals(e.getMessage(),INVALID_MODULE_ERROR); + } + } +} \ No newline at end of file From 8b82fe8e70d98e8120060c05b33baa35543a133e Mon Sep 17 00:00:00 2001 From: JuZihao <57383789+JuZihao@users.noreply.github.com> Date: Mon, 19 Oct 2020 20:46:56 +0800 Subject: [PATCH 166/450] Added messages to pass Junit test --- .../duke/apps/capcalculator/commons/SetSuUtilsTest.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/test/java/seedu/duke/apps/capcalculator/commons/SetSuUtilsTest.java b/src/test/java/seedu/duke/apps/capcalculator/commons/SetSuUtilsTest.java index 0199a241c2..ba833e1e03 100644 --- a/src/test/java/seedu/duke/apps/capcalculator/commons/SetSuUtilsTest.java +++ b/src/test/java/seedu/duke/apps/capcalculator/commons/SetSuUtilsTest.java @@ -22,6 +22,9 @@ class SetSuUtilsTest { private static final String EMPTY_LIST_ERROR = "Looks like your S/U list is empty!"; private static final String INVALID_MODULE_ERROR = "Looks like the module you entered is not a valid module!"; + private static final String EXITING_CURRENT_COMMAND = "Exiting current command back to CapCalculatorApp Main Menu."; + private static final String NEW_LINE = "\n"; + Person currentPerson; AddUtils addUtils; SetSuUtils setSuUtils; @@ -79,7 +82,7 @@ void execute_getSuListBySemester_exceptionThrown() { suList = setSuUtils.getSuListBySemester(4); assertEquals(suList.size(),0); } catch (CapCalculatorException e) { - assertEquals(e.getMessage(),EMPTY_LIST_ERROR); + assertEquals(e.getMessage(),EMPTY_LIST_ERROR + NEW_LINE + EXITING_CURRENT_COMMAND); } } @@ -105,7 +108,7 @@ void execute_getSuModule_exceptionThrown() { try { suModule = setSuUtils.getSuModule(filteredList, "MA1511"); } catch (CapCalculatorException e) { - assertEquals(e.getMessage(),INVALID_MODULE_ERROR); + assertEquals(e.getMessage(),INVALID_MODULE_ERROR + NEW_LINE +EXITING_CURRENT_COMMAND); } } } \ No newline at end of file From 21b0bca67cc61f3324d1496e82f4e6115d9a079a Mon Sep 17 00:00:00 2001 From: JuZihao <57383789+JuZihao@users.noreply.github.com> Date: Mon, 19 Oct 2020 20:56:49 +0800 Subject: [PATCH 167/450] minor adjustments to pass gradle tests --- .../seedu/duke/apps/capcalculator/commons/SetSuUtilsTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/seedu/duke/apps/capcalculator/commons/SetSuUtilsTest.java b/src/test/java/seedu/duke/apps/capcalculator/commons/SetSuUtilsTest.java index ba833e1e03..1c14e77c30 100644 --- a/src/test/java/seedu/duke/apps/capcalculator/commons/SetSuUtilsTest.java +++ b/src/test/java/seedu/duke/apps/capcalculator/commons/SetSuUtilsTest.java @@ -82,7 +82,7 @@ void execute_getSuListBySemester_exceptionThrown() { suList = setSuUtils.getSuListBySemester(4); assertEquals(suList.size(),0); } catch (CapCalculatorException e) { - assertEquals(e.getMessage(),EMPTY_LIST_ERROR + NEW_LINE + EXITING_CURRENT_COMMAND); + assertEquals(e.getMessage(),EMPTY_LIST_ERROR + NEW_LINE + EXITING_CURRENT_COMMAND); } } @@ -108,7 +108,7 @@ void execute_getSuModule_exceptionThrown() { try { suModule = setSuUtils.getSuModule(filteredList, "MA1511"); } catch (CapCalculatorException e) { - assertEquals(e.getMessage(),INVALID_MODULE_ERROR + NEW_LINE +EXITING_CURRENT_COMMAND); + assertEquals(e.getMessage(),INVALID_MODULE_ERROR + NEW_LINE + EXITING_CURRENT_COMMAND); } } } \ No newline at end of file From 47a6c0ae0263b72e92a812beb9a08f9c42ce287d Mon Sep 17 00:00:00 2001 From: jerroldlam Date: Mon, 19 Oct 2020 22:05:39 +0800 Subject: [PATCH 168/450] Fix broken link in UG --- docs/DeveloperGuide.md | 1 - docs/README.md | 31 ++++++++++++++++--------------- docs/UserGuide.md | 6 +++--- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index abb1f82238..a3ad278a7d 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -200,7 +200,6 @@ The following options were considered when implementing commands: {Exact diagram and corresponding descriptions to be added} - ## Documentation, logging, testing, configuration, dev-ops __Documentation guide__ diff --git a/docs/README.md b/docs/README.md index f86737b871..3ebf8e5391 100644 --- a/docs/README.md +++ b/docs/README.md @@ -13,21 +13,22 @@ With the `CAP Calulator` , plaNUS will be able to tell you your current CAP and ## Feature List (for V2.0) -1. Academic Calendar Planner - 1. Add module - 1. Edit module - 1. Remove module - 1. Print Calendar - 1. Full Calendar - 1. Semester Calendar - 1. View module details -1. CAP Calculator - 1. Get current CAP - 1. Get results need for target CAP - 1. See possible CAP when setting as grade-less -1. General - 1. Saving of Academic Calendar into text file - 1. Loading of Academic Calendar from text file +* Academic Calendar Planner + * Add module + * Edit module + * Remove module + * Print Calendar + * Full Calendar + * Semester Calendar + * View module details + * Search for module by keyword +* CAP Calculator + * Get current CAP + * Get results need for target CAP + * See possible CAP when setting as grade-less +* General + * Saving of Academic Calendar into text file + * Loading of Academic Calendar from text file ## Useful links: * [User Guide](https://ay2021s1-cs2113t-f12-1.github.io/tp/UserGuide.html "User Guide") diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 355bcd5821..04e67180e9 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -105,7 +105,7 @@ Example of usage: * `details CS2101` * `DETAILS cs2113t` - + As shown in the image, users can input the module that they wish to view further details about. @@ -123,9 +123,9 @@ Example of usage: * `search CS21` * `SEARCH cg4002` - + - + As shown above, users can enter a search key that contains either part of, or the whole module code. From bd5821a2be68734a0fb414995c732b680fadfce5 Mon Sep 17 00:00:00 2001 From: harryleecp Date: Mon, 19 Oct 2020 22:26:38 +0800 Subject: [PATCH 169/450] Added the implementation descriptions and diagrams for remove and edit module commands --- docs/DeveloperGuide.md | 79 +++++++++++++++++- .../editModuleCommand_activity.png | Bin 0 -> 40460 bytes .../editModuleCommand_finalState.png | Bin 0 -> 21729 bytes .../editModuleCommand_initialState.png | Bin 0 -> 22590 bytes .../editModuleCommand_sequence.png | Bin 0 -> 161255 bytes .../removeModuleCommand_activity.png | Bin 0 -> 40460 bytes .../removeModuleCommand_finalState.png | Bin 0 -> 21743 bytes .../removeModuleCommand_initialState.png | Bin 0 -> 22963 bytes .../removeModuleCommand_sequence.png | Bin 0 -> 59866 bytes 9 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 docs/images/DeveloperGuide/editModuleCommand_activity.png create mode 100644 docs/images/DeveloperGuide/editModuleCommand_finalState.png create mode 100644 docs/images/DeveloperGuide/editModuleCommand_initialState.png create mode 100644 docs/images/DeveloperGuide/editModuleCommand_sequence.png create mode 100644 docs/images/DeveloperGuide/removeModuleCommand_activity.png create mode 100644 docs/images/DeveloperGuide/removeModuleCommand_finalState.png create mode 100644 docs/images/DeveloperGuide/removeModuleCommand_initialState.png create mode 100644 docs/images/DeveloperGuide/removeModuleCommand_sequence.png diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 905364627f..d07568d0ab 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -192,7 +192,84 @@ The following options were considered when implementing commands: #### Current implementation -Similar to the add module command, the edit module command is also executed by `AcademicPlannerParser`. It allows users to edit the existing modules added to their `Academic Planner` by first accessing the specified `PartialModule` object within the `userModuleList`and `userModuleMap`. +Similar to the add module command, the edit module command is also executed by `AcademicPlannerParser`. It allows the user to edit the existing modules added to their `Academic Planner` by accessing the specified `PartialModule` object within the `userModuleList`and `userModuleMap`. + +Given below is an example usage scenario and how add module command behaves at each step. + +
    + Sequence diagram for AddModuleCommand +
    + +__Step 1:__ The user calls the edit module command from the `AcademicPlannerParser` and then `EditModuleCommand` will be initialized where its constructor would take in the same parameters as that of `AddModuleCommand`. + +__Step 2:__ The `execute()` method is called from the instance of `EditModuleCommand` which only throws `AcademicException` if applicable. + +__Step 3:__ Method `isModTakenByUser()` of the `ModuleValidator` is called to check if the `moduleCode` entered by the user exists within the `userModuleList` and `userModuleMap`. + +__Step 4:__ `in` reads the next line of input for user's choice of modifying either the semester or grade of the selected `moduleCode`. + +__Step 5:__ `isValidSemester()` or `isValidGrade()` is called to validate the semester or grade entered by the user. + +__Step 6:__ `updateModuleSemester()` or `updateModuleGrade()` is then called to conduct necessary changes to the information by accessing the module from `userModuleMap` and `userModuleList`. + +
    + Sequence diagram for AddModuleCommand +
    + +__Step 7:__ `EditModuleCommand`, `EditUtils` and `ModuleValidator` are terminated. + +The following sequence diagram shows how `EditModuleCommand` works. + +
    + Sequence diagram for AddModuleCommand +
    + + +The following diagram summarizes what happens when the user executes an `EditModuleCommand`: + +
    + Sequence diagram for AddModuleCommand +
    + +### Academic Calendar Planner: Remove Module Feature + +#### Current implementation + +The remove module command is executed by `AcademicPlannerParser` just like the commands for add and edit. This feature allows the user to delete any existing modules added to their `Academic Planner`. by first accessing the specified `PartialModule` object within the `userModuleList`and `userModuleMap`. + +Given below is an example usage scenario and how remove module command behaves at each step. + +
    + Sequence diagram for AddModuleCommand +
    + +__Step 1:__ The user calls the edit module command from the `AcademicPlannerParser` and then `RemoveModuleCommand` will be initialized where its constructor would take in the same parameters as that of `AddModuleCommand` and `EditModuleCommand`. + +__Step 2:__ The `execute()` method is called from the instance of `RemoveModuleCommand` which only throws `AcademicException` if applicable. + +__Step 3:__ Method `isModTakenByUser()` of the `ModuleValidator` is called to check if the `moduleCode` entered by the user exists within the `userModuleList` and `userModuleMap`. + +__Step 4:__ `removeModuleFromUserModuleList()` of `removeUtils` is then called to delete the specified `moduleCode`. + +__Step 5:__ The`depopulate()` method deletes the module object by accessing it from `userModuleMap` and `userModuleList` before updating the both the hashmap and the array list. + +
    + Sequence diagram for AddModuleCommand +
    + +__Step 6:__ `RemoveModuleCommand`, `RemoveUtils` and `ModuleValidator` are terminated. + +The following sequence diagram shows how `RemoveModuleCommand` works. + +
    + Sequence diagram for AddModuleCommand +
    + +The following diagram summarizes what happens when the user executes an `RemoveModuleCommand`: + +
    + Sequence diagram for AddModuleCommand +
    diff --git a/docs/images/DeveloperGuide/editModuleCommand_activity.png b/docs/images/DeveloperGuide/editModuleCommand_activity.png new file mode 100644 index 0000000000000000000000000000000000000000..060817bf2cdb1c00ab9f7aaede14a153725bbb65 GIT binary patch literal 40460 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
    +G_lz5`bDK-~d{E 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 literal 0 HcmV?d00001 diff --git a/docs/images/DeveloperGuide/editModuleCommand_finalState.png b/docs/images/DeveloperGuide/editModuleCommand_finalState.png new file mode 100644 index 0000000000000000000000000000000000000000..20ce14c0a653e7a480cc73a16222c7026f4a2d0b GIT binary patch literal 21729 zcmeEubx>SQ_a+bmL~w@$mq2g^4?e&kgS!T2aMxfl+zEui5@ZM-Tmwn);6sq02`&MG zJM0~jyzjTas@?r(Yqz#)t8T%ap4+FpPxm?J>8H<~2z6Bj+}l*Q(a_Lv6(L|vG&Bq- z8XCF^4i-={rW*bj4Gk;XQ%>L0$=3$vXpP3qFZ=tBnUBZL#lw@CAI!|hXYT6CWd$?0 zbvJkN;BvP11d4#~om{M7HZW_e-_P*z@bPf+0+)z3FNm36nnw`zhmQ*c;y3*Lyt%El z^B;i%Ts(k)2YN7PD;FOR;8s-|_`}Ns6!Xgfcfc2dfDqKJuONsG_$Te^>S(QJZJ`VU zT9+5#7vka<1d1OhL$skP%zU!Iy(7%Q8u+JRZRy~Gsv>LW?&1WL$O{W{@o<6oKs;PR z0zkQzxsACy>_4QS24n4MZu@&6o*D*TI(i1``o2(SGYCZ111t^sJpgZOcMq70^Y6!a z`MHEqqd-;m^mDcTU20|R4YLH=k{k=7Xwahd* zAwIu_IGY2Vy;iq6peat?-$I0R?Nuy2J#6LGdCXNr)HLm6^;P^t?9_OioGhFy{Xl|x z>bgGGO6CSG%5pG%X%7)*J{b=cd3R-Nm?5u@wYHYFqm`VD3eYQQULOM&1t&{=4VW+t z1`?3gHuOD-B(+o1DDAv^tc}%Z^{mNlV8? zNWk6E#t!15Ag^Pu;A`Ouvry2~gMwXUrgR8%rg|sTfL0*O5 z2{mi}o^B$(P;CdOoxPf~pPnwCvx|?Kp0~EYwS|zHvZbDas;RsC+DOkC?xCV=&a&y4guDMj1a$*rlqcumz}zsE?CcpUsqR8*UeSS93sH4qiG;- zDF@PaSFrSVB%=(o6L9oUgt^*z zdnn65oYm~@m3e%8tSptJE%_Wh0ppO-1KWZPo%P*xl-;}?rL}z&lr7BNVAf93>IzV( zhrgn-GoP=r6NpDuUS7vi*WOlLflm!slQP1xjv{WZwgRYoX?X(!D_ti$AAR71wJl6g zPgw=bt6?Y&sKi}fk>6Zi#ZgU$$3}?XT$SI!(??HB+Y{^xtX_G2R|hqBcNd5auM^ln z$x>ch*;= z@Chl(J9!DoS@1#3Eew4*wdL3+3bU)aEhNlJ)kske78;@=(!NbddpD^C?&ed%62s%Lywe8pzmb z>7ld$SgQ;S#%JK`<7@5UrDW;v=BMLe=LS|62B{j_3#dc+`OV!711mh9r<@2!g58|>hMY1>S_q90&O^|D+>8*`5I`ecnJz9 z@LG5p0EHfc4p!bmd?GsTe!A8=dcIDwu0s3@uCfk#+QQ0SUQPnMAPWs185s)!M=L!C zkcXv(m%EFFos5OFlDwarg*mUkfUv!gJfI>06>XHJ^Z;KeV<9N52GjNe9u;x2)RuR) zkcL@m33;mu>+t#LDrxH2`&huNRYU}M`Mp5`Hav3r?iT)nZv6ZfP7Xjn90hGWwQM|W zE&SDBnmqPGFnJwA5l579YXPzi4B*1z)T&@ti>m~?M({^JL^^5W6ZAzB#m>X`p_n+_WO zcZ@(+AR%aZZ0L{&82@%Vo~8ZY5#cZaolZt$B0>MR5`@^|uMU8&{D&Iyo`=+5wm0HY z^2SnZ*apI03p@K9z^7nbQ!_z=X!vw^#VhJq&+0pdC>&>q0PmhM2obv0LT@w_Si` z@8+f>gRMwgRmqFKsfX+= z)f{G~1%wxa;}NxLj5*jGyQ8llF)TT>gc_uTH&ys>PQJ{)ksryFMMExTRLHAIf5gK) zmE(sZ+au;$5bu9Y2-f6HXd$qT8_N_cODMcv=B(AcG&G(j8>_yA_bv%dZwcm_NtPc@ zdq}@}Clh7kKOcdm{OV+q<+2~S|76j}EZgtk=8Y}^_nYO^Csdr}x6<3!oEaKZ?N)VO zy&`XEbe=&Z)jD4+`WPR+PGU6`n-KErJ=`oetM}O^SB}7%R`#6X#_QEnAp0^c=ypC5 zu`14BsO0&H6Z|X(N%F1WAt9Kh7cU`7FeGH@GX@=M^~Bp_Xu#NCv8o84oql>2ce|!W zBP(IseJ@miIWNF)X8k3uOJ8B>%p;%na4l{MLC5tgr>VoSj$$Z=L$KRu<3f2i~8#QV;io#2eZG5E~%eY|7>^F z?%c9ZMeNQ&v(7&RJY;{QMEB<%I(+f9R=W-|O{)Fh9c3FO9Wz0srtYHET)_GgT|w8eBi#&)-=A588^?i53hXS zx1T@C7Zufz#PO6xOJjKs7?70ct^GKgfPosC>gMz39CwZ+2gz0W2E$Tz3zg4{}8;!*M~!WEOaf?=DJE3HOaT6+NwX_psglEN_L5gCo} z`w#oHSH9W&^2prIvUl*AwHKGD8{F7zbvQdb7+s!on>)TT z3p@-Cj;O&uDipsXZ|`Y{Y>s8mw0vn9iiQKe1-OLUz@)A*eMGk3`7{{84DC`oUY4m_ zcep&?6S{oH4{hs$HrNe)FT9$l30jgnI|@F<)L6SxeeL?GM#9WsA=T{CT0&W=HOP{N zGVpX?PQFy_!1uOnM~9Q4(G>lO*_Gj5Os1G*z%zFFX4l>N;Nsh(V+}%%?=DGckDia% z&ImWZ&(ldUkvGW{QtEf9F#Z2SgK|CU7-04Up7B- zvFo^fn<(=wkqL&Il5O?8KHXz_zy||f5hpK6N*k`Uv`}z4bsjmdIkTd->t&K?!X<~> z7)_wu16Y8umQj=6>@T+wE-In(WUs5^F0rcI#NE|A#T9W<97tK$0p8hO`i%ey6G^x6GJ#&Xf-k)aAD)~qQnqSuz)g(mS}uRlGc4>^%(Z-5pq!X@ z_d9sZ^PQXHtD#=WI~)R?LPA)P@$$(jms&^b<-ykH)6?=6?sY10|IX1H*jc}REcX}N z(g^<=&Lt(y%@#ICo(%fx^o*<{L2=pVMz!aGotGEcT*zvTA&d%? z-KfZd^=2WS?)zhm%sklRA9S*}R!=Hb_!8b?kuWaadWcRBZBrF>ID9Q#P+Wm5;GYxxvtOSiu6#TkRQ*<&e|ki!5OZ~~(*?cSJanSXYI2!c55vOCa9tQ? z9X$5f8&Ff7tA;HpKiU*>p5E`GuEDbIdf7TR=+hHJ6F4wEKcC0~-CO_RT3=cP+F{r& zo?gk8d@#uKxufRC>W7YV zms>hb-hq6!KPT2w@u&rt7lJSMu53Kg2pLr``zyM#c2uDKV@b7+ehaOrN#k>#?qj_X zx}4LWKG#qH=xe-mN8R|5-Nx#$?d%#SZEZ(^A6%!V1*S6`FKDPrpTq7}ko~L;#{@gH z4?qRhFU4YSW2iC@DZ)=*B|Bum`0kqQ2IRf}iImOKO+k>3kBvEJ4I)8Bb3NHkv**Kd z&9QbvZ(ODYcaybrDWp@IE{kK#qLfAwf3$URPgVTb#-|beswv?%KOPJyIl?Sxw`cuZ z2CfB6^v83LEWT*@BLp08lT2%?Fh>oTAIdx|p!cjZ`s8$! zv`cMv!$IKoRl~uD^bPNzQ{t=~YS(GDtC9UtTT3A)|1*(_S;gXV${Oq5fTP|@&&PeQ zDTQ98q=W;((#h(pr zM-u^hBay_z!-!=ZqK8_lo()W+Z)xfrBlaf>8(^P*1cy(LIRuOv3KqTpVyTq zF!g-@ndFsS`F3IMp7?2B!EVn8MYmS^-NJWowH@qDD;QSexOBTnG8a_udrsg1K+v1w zW;HryhU^d}ZDQXe%M%U#A$UwO+0UW`RG z^nJ8c`{1z1ThRLLeL&kWU`gx3y5ELwxkS@=ExV9pH+9_4gCG>S@6Z&zIbUvz8m%bn z5h=LqZ_kPm&mtCsHHm@IpeDrv&oy?HE_B&8&3#kS*FEBu`t|3SY`%ZJ(?>MsiA%Iz zo5D)Ixf)xwprD|ZV)YSEA&qz|0|8J!Yn>%>bXkUzDa=?tp~zQT;3w~0xkRS^Atfe* z+lpoH-!|UXmiw{BWgxg8Z*+TC#-mQGZ{uk=KNJ@?v2}08qZzS=HQtxDSXz3pl$!kD zmYx-hk_6iq7Pg|$RW4up!^ zGj%f0HSgqRqVkA#T9xA?@w9@bX$$|@V9s8p2aoNXTHbsmxy=S8C4Ir!TY+FZ8YI{s z8Ut2BEe#C_57Rw11gxE}txNN3bE;tR#qGW3Y1w=Y{DTeFv#D)@C>sr%gcTzv>^(S% zOHjmC#G`Y~6r;N)+|kB$R8O4jgL3cTVNSo4;8|s}*LW036p5oF{8RThG>rp#{)CyV zkW6+YIfTf)Y3WVZ2p80=vE=0Z$HzC)@VWgA1Rl&Drg57@jva^8PQp|nzqhD_!aa|s zeEj}*e+=|*q<9;%;h1dnV~n!nkN94EE@LoAG+2b^h5Se{F8Vnxo1x>;BoINX^@i*w zsbV578D~v*J_!&{ACR~|jO0*EB*9zUa6*@Lps`vMYTfCSkQ}Dfum3d>njywH^wtrG z&tFm!WW=QDgmA!l5$r;Z1@|8f7sEb<-|g^a_X(>93Hk?Wwn{OzF$&e+{h$(KTzA}{ zA}2>xE}gS%(_x)l=NhSi6woP(_hP<>7r?M<^&l}Pe!zfUE}<=^Olo3uHLBzm5|r9G z=w11UFaww}gSFktiJDgszx<$n^4lj2PQQFHipDqY?C!muc9vbKCB=MV+J+++M2q(j zt2bTPJK##+(^Ejw3{R+ALTCK5X2jUCjii0K*0At`4Ml&MR7+Q>gZa0adCfoxfg$9) z!+p`}Qm1c~=ucMe(TK!Tub}%UxH4Tbi>%>den4ar&o!q&bt(!LAmqjf>o}1y1|jJp54@3hrTlCaSRW+ zWShwc7ZTc>eX@qXCYRe8W{MH~k~?J(l&GZ|NVV>8s;4sYA_GaZ4C>_-+pF6ID1ar?6_hxUeQ8bRcy+`K)xTlIy=YLeQQtkTx(YO=P^@) z4r9ZWgFbJxs81%E@uPIQc5cXe8Xm&(`j-PSLeWJfWA-AEWQ7$PDIG!QkmpOi8=w*8 zNVoBf%{FS>K5JlaX-s3XkBj+JnT}mGld7A~Jm@mML8Zju)q#N=hv@Kap<9$um;Kx= zq(-m&BzIgkDst!BciZQ688yJa^tbBEDzJu`EzG!xa|4^>Cfaux&olzW0R7AAJ6`nw{T zeLie4d1Imztcn3xY>qMq>mQx~8vq$1kK>2s{+5Kc5Ql&cGU@IAp&wiU0GD(Fi_!!T z@VoH;vX}zJq=WmKcoY_%gn!uzfZtdq_wC}?B7v=My~w!r9{dj#5<1POz7%t)$XaA! zHpI!@x3yYnnb*Vf9oj&?x=Q$m582NOVNwKHc1}k=eh=QBy9#M^Oe10`8VWC})}LR* zgw0E=$0KI3Ne}<%Ak-MxBY~VIrx%_`$d(p+U@Iw6T|CtDzX6UK)u&{IXmQD-pJM){ zN`^SmQxH{yEq+B)rI?@1Yx46uMtt{&OF4T}aBiht0Xv|ZqS1zer2GXlxF@p!`)k27mCk4;APrWMsM}Hw95g`U}2;O)j zhTj<-R39fc=^rNPqYN6-(+cu^OC*EkAHqoiSa;HJSHpieEEIi&2~(m|`40*TDEMsf zmn5T$2i75R9$P4n^gnZpD!65f{o za5qbll9IN!o~@|`E9vOyfc*DY>xYOqvDbl~9WtQ7o`SwTWEiF*c+ZPYucBw{CI`;& zwKVtNYFJ?i-ot`b?x5ws=!O&kU;)vhmBnd#7UF^9_^tAVbK@Edz{aqO@+r#XIX7(z z8rC{eieK!HfP&6_{ZE!s3(Z=CGAlKYW_)O8+B(H%05H?$Y43MQ%- z-%@D|u`s@=p_KmR@_{_Q6kR{2zN7xjb{5Q{;u@vpxwL#mt6crp!c9!=KX-e%?g+`a!33uA!sBhmg*>(z&mMg|WXyS~@F_eY$^?rQ3#A;4sD>2Zu> zVj?b>LzV>H9M@A`MHrs@Op1(X-M~fNV ztGzcTV+(8M&XaRPHLNU0&n!_-E`Y#K7-4TpG4gl@{U`G%jrIE@0v$YQg0@V(|{DttWkH6kP z1c_bQ_+lvZ!L}+CGD)3x`W%P+208TW)QSNVWvw*ZdTHN$T>GBal_vPvRq(%PrgVl$OeuWHY`tlW{ROo?cG{Qy4&f z<03uVa&$Zw@CP6R;crt)n13y1&*pY`6j(c*4ZEV|z*Y3xO4nATCQtEUO4RoEa8Th% z6L5dP=oKHoMKYooHk8TG#m}JZ2k|rZJBPh^9$OUF9Vp6^hf@4DD+(Ckij;`$?qOX^ z0AEYcuzPFx5NN^z165d=E+v{@7#<#^0*>2F>du|G%P=qLJ$bA#12<~Bw?17X+g*A6bj16 ze8_&?m1;sr7^s3{MjE_lARk^78E&701evflg2T0TIr3eO>7aoNyVM?FPD~oPJ zv~+RFsqUaco&o_RA9TwAPTkJ|1KACUzq0KM5~bisZk{Ex{8lOWYSr%5yU00Hhp-aj z-g{Tlh(dDK-b3!Xp`<(8`8V-7V}Hh|XxWCxBTO+#y{}Ibs0kr2KnB)5#G5V`)i4iv z2g4R4ZY}2Av4WIj%o`7NL18NMRyRO8d>T3wBOZa&kzhXP>#PlG%b&Q{AvoR?qc9$! z7ru(Y;9gMo@KAhmkx~zNXYg{M1y@D7mkz2RBZpwS8Tyi48n8FI7)(uiXveUCijYD< zV@?`kzO!ne(I1gq@PLHpt9t09rhR>Sdb+HWsS8hXwpr0$vI*50&7L|ZXJoTQ$Gp51 z{8W$#Wvg=xI04Uq6%=xTlP3eW$`Sdp*n>+-8+<-|A1rnfD`Lu;7e~Q+fS)T5JuP0( zc{BbCwC3-i6;<#iX8oCYoWeLM^J_QQ?H7?tqs6q}@L}sl@3Am~PCK5S>}N)CZ+jk1 zCw9?K8eG)QSL(uyv_cFj_;InkDguZVwX$SU?aaCy?rb_S=WkKNWf@TKY!`a zqIM*{uMN(7k0{)Z*0^zPLQ8$Zab2>-Ej{ItLSa%|UqhBokLh^ltd4*{qwQ;ukaog3PS zhq##B>~XI$=xDOnzgDYyKT)z-X=JeJz22G4h-y5-k&3gL6lHC(O!4fn$jFgiqU&9Q zLt|@aY0+Y*2b|!gDl;0)eZ4z(4p{jOGIXzyBt2F&S3gRKd$b!g3iB>+XW?W${P8Sk z|2bM-A#1fd8A{$y1-elrlmER}1(0RM&rK^o$#Lv7)&cjRIY^;^iVC6HM37Wa+LEHx zn`0NTW|x64Y7?R=%gP$!nfmWId5|n=wRfr^n z6s=Y7zY?fk?c~p#2;8ScHR=8oEpM&cT%{4j=?}Xfb6+4?9?v1zn^16taH6&;R?uli z)`L59wRs@7>)Jyx0t@__^t_GgFmNS8uYIex%3Fy)akTqC(ZcVFJuKJp zTMVI2`$zU7(={+*y+NIc@f(4MS^=?28lHGx>mB|d+3tzg-F(jabY)S5q)yA1p}wk< z`UBuyy90qeB1n;VRy_5LHK``d_b6kp^PV^s@QoAd8wj!O>mte1NE@~65b}fN!xNG! z9}czhQe!oK#N95j)&C#!;)oJRI&26CuPPkCVd{T#0Y+Ge6Kp7Y9CT~v#Op44IX&A1 z<_fq411Dh_G$*69Yfqzs9~V?qc^Uns#()*j$Q+LcvoL6U7QS2+O`t z5ELvLDAmnuRifqfJPpfV3l(!gG|@cCh!yenT&xSDT3?-=a(P4TVl=c<)nYz)@qr%N zAlbP}5BMc#;{SC7REo37;Nw)~@Hp?@0ci zCXcKo#p#Y5aoGjCE*zC*$ofq8-ja($x%u@u$a*UL?X}SjrAe{p^{^{vt@QDD*3GM68HdsiW0isc4gS?oa=C8_o<}&URBwh@g7p2?i%);og(c zGZSiEm>chJ+6e#ob))=}&7FXZKczbG%z>e@W^KgFb8u5KzoYeHyL;Qu-gV%h?w-cL zN^g~PGt(?4L~Fi8od{(sKOuCa$o<>Fctic*0{?h)b@fe(Zo-)eTMVcv=~1VyC@C9YlyB^E;<7@lU22zQ z;A1<;^y8fTUhuALW6*470-MNe`#zmAvDzS~ubrC}6+SZA^+7J(@8Fqu>wga> zNCTk&o$u{|W&?i6*o5`B`HOZ?mOia@Kgt_D8Os&@9bQcdAqgOz2AhGBJ%NUp&qK4{ zhk&E*S#`a-tuqc)+ian7K9ZDk8WSfZsIc(8I?TcIX4~5je$5n*7Se6sn_YfCC^!U? zP*Pbo;H(uAiYkM*D2bvP<;ETi3jjbiI-AVy8Y_pO*@iGhATq^{*rADre+U7qhML38 zx+Sul4)eo%{10}X6>@jxy>W4y2~et>KByc0GEzOl08XhyycUODfOTn1AFl+nkRN7s^cahh%4Ri3-FKJ1CVEgcu*zmzM zvOZ*tw}%ml$9~ab+GF}L<8gQgv--gS5Y!57qZzM<#eOSK8Q!*hj}L6XM~yM{vyP<)1G>%#Z0(_g z-Ehn%w?HS>Zv-6(G@=k|fXs&tD{t8SeD@aQt}k~ehhvyQf-&ViK8z?0u-nQfPST`h z|D6B?kp!qlsyx`{^2OiHn^iiJc7alo!8Xm*s3FTng;Eu@N%RdELi@c$X9=%&aK{AY zANH67TdG1?GKHVY-{pGt=zz<#%APwV-z0$AZnM+G^RtFE=&Z!Ds_4Rws9mm!8$R+e z9IK_p1pq7>dciel$_T>CE4_+GRKM*Ez1Ax8wN{fc$=JnF^P+){nt*TDQ0>bW&OpwX zEWFb0{g5_Fcj3~gN%S!^ zsHowHMYuyN=EO$`dzsK|lYh3=@F(y}oE*yILWB z;kuOmJS}-*CvdS|fxR|tc9o#iYa!{Pbni%v+)R~KO+?&zW~y~s27lU*f9Bx(Lgr+O zt7RiwccAgv@R?`Vhq%PS)YKCDGh_U`!a*F3Yx2@6SxPi7!g>vl0Y1nlqpbthCVquj z6CGxj$w;(i3zUWPBft8t5(I8c2XDkProdUrW);jFPgza${ch$Jy0{@10PrC$|MEU+ zm>+d9HQAstDa-Qw%2c>io@z^!RoQr0cbLoTI`nHxpvw3{VEK{rM_o zM#*3RdWcnmjW1CfM4&&(&Ml>pmpj972m&_MT03NB8rZ^^)RvYxBUU#&I^G|5PtOY8 zcb3iTB(IQCRIH+fdiWx~7 zylJtr*sjAY)$6=3gOcbB3g>$T;2RQu_a7gszrXEB5KzfTBfL^$8fniIC=cb^o>MoY z)`FKfHvO*7EYQdipr^-KCY(^+(pJ ziKd5dkSSzxrWF=$mRweFUwE_-SwR}Pt~X>bJL|*?3?DdOj#m9f$JLugb2;<=heFq@ zEO36$qgS0?dtWJSD@qI)c^^IMup3ZKn_{fAKv4q}{o5uYtcg(njTlKE!(*pch$CGc zpGY)QOqW-mX`VyMqh#RzF?eFApdZ5dzk^rFeu!)zv5FJ-6uQs9>$_W53q}+^r*J!D zqfBEdixb*|vs|`{oLR;m`Z~ZHzkm#wxrS9nxQm@PUuRX zG!^LNklITCpcoim6ud1P@JzPO$tXb9WTtVuN;orcw)u;?{%(M0jp9fi;;<4L7X>1#L4{2TqZLwhzx39Wv_ive*~IMiE(os!UO%qca{B_Oax7>Dxub zOzqn*N({EW`RkH;cW0h7cbk+n@XZ4Ab90Me$sDTXk4>Rag%2D`26kd_UVDUD zlt*wAJFX2(vkP-r?qg81%pE7^z&}yCfOC`VHZUpjKcX>v-|%hD(6sC49}@&%f!d+r66Wbus!Uo-^7)CU4}mEDH20Z>h#bI?XthNQ0M7}> zOBLlS(#8Bmb9m7p&onwH&NZXo?ToRO$Wrwv;x5S*r|FmjYox)|XH&6HU?V&rX3|sr z4QNL2%1~VZmTe_%BQv(MHz()Ao%}r=|_Nkuh=55i%n1-OZ-o)VCFi!oWpVd+!AmU9LWa ziw9yOE;jtW@c& zQ>q4o_maKHvJbe`-V0o!Ki=`d1IH>1hU`JV4|3^f06YTEi@N1X z;hv6GZcfenK78Oc4<;pIn#O(~4+wMgK!}GWvxK#iG~PnZ5ODop0BCg3|H?VBbs(!x z76OvQZQgN5;oS2;)-3i{T@`B)6ddBPw?~P0(i<5jaPA~>J|c#(UTb%0p$OcGVeK9- zWxlopI>_;H;#TE=hL7}N)6FyQS;j*-yHk97SP(Ncq{w6z7}cY^rneurJtCw$_%)P0 z0^*dgRS;T(X3h?7M9AmD{VF63rhIMUMsaYboy5`%%NlBAvOJ86PdHTuJ8&&h3W_^C z`vL4Mq#^7W?8c`|JP*34i1AgF+;fz$sO?Y|tg5ZOkE-#dm$lIieYgl;jMnq#4p@1M zRrK)PfaKM&Rt{^h+Wz7Pu#peZhuWuhpZdYdW^_~%$*Vb(U}KxZdpSlc1T($|KQ5@L zrs6uNx6O1D^(P`P>dSf-7Pi~ENH=%^5p%e%{lm;JK+Q3d%x-)k`+g~=ipzu=_C3mvwOKkGvo+p$p){| z!h>4^Tmr_5n)CLAf<3&~syM@1OFfK)Z+tpaXzAc~a#3i;r{4%uZT5DfJ$`z=6}I_J zWckw^pU5+oN)K7=8rrkGVQ}!1(oAZP6MOvOHf3P%?=L*U@?72O6zr{9U6A*yTLNci z!I6e`ua6DPSsGyrKh6=f!bvCs=C=gdPDvYE6J#A$#l^u=gA3jeqydhxo8bms3pV|j zuUljGB$idQn(N=+P81oiQQf!~#V{Zj-T4LNmf=>?Ct4sLG?+FyyQ072-q8_O)sfTc z*D|rg-BSN`ls2tqLkV8VX-brU$TA)8jEl(BATgsz%N9xEDtk6|Ok~-+RQk=g*v_Cl z_z7+l`P{ODdCA6H{cxD&XaCYlQ&zt#-zSZ|AnV?Pjsc>tBel|SM<(bzLqEB9i{0KW zmsbe=5f2V12ksL$n{Pk-$s}g7a)N9Onn0tp_Nf)v&h$jA``<4&mrjHO@N1*cdI|1e zM5*NfP~$~H)Wm2ezw&vNz80I!;=Bc6xk=7d&c%wF*tAWV?SSMd3foc6UsrQ$;e1CrPVG?pH0V7u0g`J~j1<57>zr|s6`CCs8%MqwNL+k>=+7VFzT#KNA?SbSO zke(x>;5rH4SMn%3u{NF(<(!ezUZx3{-c%sN;xF)ZP@T7i zAK&9GzaMqbZ(3qRSn=3&q-#^4%iuwa+6Pa0wt z&;UL3(T7eqi>%J7*$@kpHlTBR$9wwW6a;3s8yhd(nho>W#=Ma1mW>`HF>L-0fAGij@r>8jbO7qE`W`L-eKK6X-8116-flF)gupl0pRb9^kCJ?! z#0-6c&L3RwRhJ@frP$|Cmk8vX6bpAGvCw4K%{rNNby(P69y-2)?qQqcq_J#(3JrD* zkR{(3KdC(-Fyn37BVkY*y?tw48NoK}yT&z=4AHF=gH};CHNn>s<9t^hOHAN`4S9GVOje`vG3yXc%?4eqfc|FeaUx{Js{a(pfZ zQqVU}Q-20#Z|*y=FCicUt?Fq^x2`ll{~uZD5w)94l{Qwwx$OqTK$`P8I-SJ3_Avb% zpF)G}EdIF&R^(Jh%H1H)?ld(u2E@j>Ef$0~4 zh#6qtnQyR}e~IOGlyM?Tx!pKN4y)8^o-ldtkCXt2&iq?yhFgkuHa_3V#@^`%*kHST zCjP`v?Gm2aw>wyyYirbOMLkzGc?U%eYCf7maL?!HYJ=N@8>c)o-?d~tAYu5@t}ILs zorzJm503LyfasIO6Rib4ZrRgKKj02n@IB$8@7&K zLP8?foQGzQr<$o))>&CymU48 zIBekIe7+WSAN*Tie=<)R-GHsr3wDtyGz)vL28`~gbSRfoIgDh|K`E12He}~4Iv@<( zR7)2`esqQN1@?TE>t~0CYc#_Ju~t4#t78 z_9Rb{E9UxKxO(OBleCB<-J`H=I{*2!!!?oF`43*{!L}&~-=+Bvfixo?hr*?sz-zc# z0qrsjrQO=iOi00GbRhQ>;COREUPrhRV@5OmK7(#r3m#L(9BQkrRtt_zDa4nq0+L9HDcJ&&d$gM;a*yn80+}Y)qiE;;xw-B% zw%oMRZsIzRyADtW{HiOdieBM{)gpMnm=Bh_V*I9BVj1jyuSdKCw`w8+$IZzAj)=+wY*0sz`bV(pZG z`t;CmlmWnZKl5JbK9idJO|1vga((@diIL`OQEmXw_$Zuu`Z~h5hdF5V4h||^gAI!O znj|f4Kma)+4tN0yed0|7@oBbVWv-^eJXO6;c33~-d5gtL1X&>tFo3_e77F$3RQ67i z*^qv71Z+>)QV_HFxPOy|ftQ+zuT#WScfxB?JPeA%asqk+oJQlSg6>|QC;+FS*XdrB zT90x#fA4Bhr!_!6QIgX$V%)!Po{L=%?k7o{-JNSW06U+8I>E4-`VMYGaRVqKSQSNr zvxs#t0&l?l7F7!*s{kpkg2KZ*C_(_Z{$J_R>wHDN>Ssz5O=c-Z4s$_9&h&=&SQuue zeS2!f6;0cK{OLr!`#<6?%z>Y_Swj6Tfc>Au41o3^#jqWG?URpCT5(M?{% ze1g&SMz@a}`KRmaiDWtKqi@p??Bn}umyc2(>LWIk0Wqh}01#6O@l6_3cZYTu!qTYAb_c;1^NazP$1aDo{%L`-;wlhPu8!1-o05$%`NF zmq(^wT09WVD?F>0x%FqpxcgEwl^=Q!zzHcH~jx zpzS*^uPrG>#oXW}C6^Gpiq~+D3=nSxq&DK6YGKLOX>5EvSHBN22{kH3RPIlO=bL|@ z_MsLMfosDfLblsj%KMiW`0sjC*vxZobLytBu@lFdQ}he#$XzW5jZ442$A7;1;Lnld2dnK5Q}rgdg`Ob0LCm zT@0fl?f^|U@(b6G-7w}C`3gx)ZE2NW9K=p_Z;QXW+hO0Is4Ze6u=Cp)>#(kCG$vi& zUGk#RctQ4xmF$5d;NDDt1Yr6{QXi!;h1(YUi}m?-7mJnXl<}y1dC3ck_m@})LA1g{ zo-56AH%te5AKocjZ{>ybs@|2&$RNjGbsI#jm4UkfAyQ*R6T5W}$MGecmydIHH4LV( zLCr3h@Qpg8Ub^1-25aksrlIX5qc6<4HI2S?lI*Hfh;>v3<_d6xtK}TW?T?L-iQ{PK z2J`KMd6;zbi3sud7CG<1E?~@K|yo@l{TW_3Jsnp%jlsz-yQgib1QoNIQOBw@X2hc0QeY)@W zfEczC?Nx{LoLP`9M=}-4q5S#l!+=M-pVsYbNTWUxGX4Eo69Q>C!A(Mpgcsj6U<@M0 z8@CrXla|IN>*i8`%q<)u)KF1BZsJG>^*V_0{5I;Nc`zp#9oDQ}1$`nYJV%Qj}NUuss0Mv(dG+*Kjai zXL+>q0J(|;^zp+gNd$<8L9P-e-aUPgXQsY>H$SwVW>XRZFZZ17-{XVUi-t(e1Iqqy zWn6hQ+xZsPl(Bo3&S;Ibf>Ly7>_RNDHF!ZvTTyE1OMBEVq!nAIs$z>hqb4J0S{g&^ z*>@$zSW}E;s9i-%HL4i$zH#1}bKZIX{m$?F{<**Vz4!aM_kKP%^_8`wBr_Uv4s?W) zmiGj4bHhrsf%d)N4Nvs6X4>b@6!!al*?E%CxCYyZb@Y#;{4Wy|fYa5BUO}>O3#GTs zjxYU&g74Ws)%W^Ki4o7tI*uGZ?P^cN&toUYbd0>E_V-!s@p-+OmL)#KRZFwLpKP1I z?zO=C>;)o+E zeHfkh+$oBx!pgnVMYr?>jtP$n7`-HEOh)vUIXW=kvf3xI18WV3P0IuGD%kh-15;+V zw|?iY#f3EO`VkfvZs2-;wNfaBEv7ubBYzh{$Pfsb$$&@h1#_*6vzyp$YMc)E zq|`uWVaZZ_n*R=`fkUQwl>Pzru>RA%nMs7YL!9yOC?H?dMhQu4*=d zapLR*V?wJ)ZCKm6I9IsB7+e?9TX_B0f?rbhR~PgO7UFukqAOuV z&$b)9t28?~4-toGW#{*0>HaIyAl`M;)ej&LtPHad7WQgU=OF0Q*VUq&OfOb|?l2e_ z=BVpE4YKp~xjgQUlin>vrp2pQtW}*WW9U1t{(DBnLFGiPt@1taMQzyIks!%+g+!8* zdrR|L$sr3c&Wvij2>q&-v>XjmYSooR=PKle69o(cW8$*CjGz^31PX5P$X*c+t3B45 zqo}`vt*q^v*40-UIBO@D4i{Y)lfZ5KDg3Y%sH=Dzh1MjQbeLWcJAzV$C#T{JOWK-_ z?dQv**!57Tv$xT0LJzEv?#V=How&9XxF z=KYI1Vj6QXpYYJ`AZhEi`?@Umh*^M9BU}g^SR-&{|4QmKqGO0(U)MSM(NY;`pYpEe zyZXRTvZG8?VnQo;+Jsx+?kbdN2Ghf+@;t3)%_$@vK@|n5;-NhN;KGS~kXG=1L&0cM z05atOAa^<~KgrOB;>Pza#uPA``=z=`E=h=!Zxc|weM5jgGxk<6=8tdrYe@jY4}7DI z83gQpOaMBB0VZcF2ST)X<1BbEAIP7)lG}wtUD4A4}f*HfC(keRd2`cCFtb-HT zJISyWqB%9C6;xImaI;Ne$dn!8JY|Vu!ukn6nOEnTpHH}#Me1$wQXCnb6;#eBOO4ARU6C17V_TiqIqt3CeNabX;5*A{g4UgnjnV%;54D)y>&WTw;^M{6QUbgn&gIq%*)SEit!Pk*K zmCv3tSHcSjQFTzdTjFqFOw>y(MND8Z7ek{U{MDTGy(j_5Nyv*coF=-#g=RU7!2`Oo z$85_T%u}Vb4jI1G^BI6q70%hFeU^Yq_8X#C?Dj|%ezCicJhEg*M3XJx^Rk>6=CejI zn*uRpU!6){lFe9v4LKkg@&I)<-I<{rT6~GPEfn5LOjE~T#e7Yn@ z`zIn+K-wH*)$scw?8CcMpZ507$}dJOYQaABrTl@|NhlWYXzMeB=NCuiB6#}<0DThsMlp~oc|;wIlgbqh3V8_dpXkAB|Sh%BhI#*+V!_eJB4BZGw3^2gZoq|Y7cSuMI64FX4DIhf<9nuZb z4euHBx}M*CKll6o_5Am|pU+`9v)Ox}z1LoQt?&BobqG~alEuX)#YRIz!1l%fV03VzjKrxpDa0mQ>2mI&Ood?VWl!)8g+rYG8CJJ!i z=`!40ylh-NKry2NL<6cw2a*KtZQ#~0;Fm1S)Y=Z!MAFjH4gr+N@bR#5uz^8f4mMtH zpj_S9+}IKRAHAR^19LXE_%ji66B}L&9yv{J9+0WA8aF2t;UM#80~hCMQ-URx4AmmMoVuHxHL8zlNMN z|DR55je)`5h+74a6f5VSPPnve%uIRY++2rIMSYgr&UYDKlVQCG1^grFi*V zY~;-#5J_Gwad#Jx3|IlE;^A%$adwyF)RA!@(LxJtVzx&ifJy6U>do-j#Wb#+b$s4B0O2Dhby8@Ha5j-I2FwxtKBJ;K>qN>*3P z!bw3=PaO&Y+Hj~ztGK92D0<2&8@rp@N;=6xB<1v6Asi~25>N|AkOzmUgS@!1hb73) zLf1~s8pP@0A`UmP*OP|og{4B&Fm4DU=MCyH3vs6a|cdMV<`zIH4POfPaU8Z6sl(B0d%9m zW9rGT#$)QB1TvLENP=V$d{Q3#^6t(y;))!~mb$7CXJ=IQZQmNKWKi~~%`%H5t5tm2}MkOOYyJ)PBMY=H{E zrREBT0v1a`8Q9M<;&2-)b3GGlE(t&_C3yJxwcQ;!Rc*L!ZCp*XG&J~CIQT#yU1c{% zZWCTDH6C$kQ%)HhSx+e|XH6+vJt-+C3l1($Q>cWyh7>oK9@rHIR(1qB;&lK)JnhZQ z5!`$rZ4+B_h!)tzQP*7AR)$;K!d}T*!q!%n3#cdO;^ro&XRD;=Xkw1A7gsd_${e_L z;805iEd?7zS0xuS6?q;mgo8a)3ouGDZd%%|&V2UHW~h5b6I&^DNgi%)NqJ5kh_$S< zs;mW%va7CyiGmH#4;P0MR7qCH!_ie-g4fi}fk$3j(aDKdQ9@7E(@BzFO4(Y%4ydLJ z;fG4wdrG)-*gL{(>@4{e#9@veE*dh<*3#UHX5!key!=piTQHY`u@om9&=d|n3kxM1 zDSj>wT~1U7uI6sma8qF9GUBQzYl*r5<1h1%rM)q`!1upij7xeVP;MR#jS5XpN?gO; za4Q|l`H^N_XLC`hvl~Gyp2XPbr`NBjK(9iwEX~NBW$sY8!OR|E+=&m)B6yS}e(SMx zumg#-5B54^IG`@njK9&w<3D|8(}$pAjn@qsXzom5KW0wPOVZG;E4uc1a1Sy%?R)&O z)X48x>kUnV7#haE*9F0^i>Lm#|NRc!U?Kyl&~D-Vz5LNI#Zu8<1xo%$6=Wds|J4WPme^l_0BZ3}YLo~a>0_=8a*u;J?&B`Jl_RVC`P4?(8h8(QZr4`8spjny8Q)WPfJ zOFz5_&-f1r64mD^jFQL$iaoR5vGxyQS+QujSl`glsa|5-($vr+IBbYmExLRhk^fyv zSUS7Bi0?G4Q(X!i{9)m-l$#xG_ezMC+p`Iuhxjl&RVMstt!L1Z9s0WKg)mc{Mp}5T zjDFb!QRFJJKD1O&eK3g-G)S=9fKk5S^JYz`Al@w)hlGcQF3)baJK>aiu-Q-6*^&>x z7gua-SkmNqhx88KU=!LMWQd0Z85J733*Ia6Ga*1%!l?!{dciJR0tcl^>1Pys?o%&% z5<_S56s8Tc9}O~C=bYMf{|bF@-?XC*OTVU=(tCB_$S!0Rkv$hhfXiMIol70raWL00 z;F~r%9iku~OPlFgZEA)*@UQrBRIhq$Fx%kv%**KwIRmnr@M#2JIm;+{_Q-KKiBqe^ zWDU%y%I|ulcD$V8{MaiiZy(th{GjCX++vrHLP%=wv((>HcTS6bNR(3+w&b&I6mHd0 zt-Fv7!kV?>O<|thr2fTl!{}ZRwcg-e%wY*MWZ(dx?i>NHn4zrou8meN9QUMUACjLq zS{csFtsy3B8s}#s?@{(o*80gwLnWtwlFu5YGHh^vJ8 z=SO7LyIoH=LQ|{G5SM2=nKS}iO8YaSAu=K|8pH}!r^3{AGCu6w+%DU{z8&`odN_J5 z^rkf%tGOPY9$V>S2lA2Nms{S(u%bePOX$2p!z32ZQcD$ZsoV4K5M~o_HCy0)xU#gB zqNlzhJCK$@V#)X--;lpIaS_cwW_6`(-tZO!&(kgrlQt!$fv_ z`$HE}z5^qM$jhm&B#*#U{WX#f7+(H7aP$Hctz7&n&3&}&W}9{?rS8!DJWk`;;waOt{kCIq{n-j%^;<~MlG+Rj z$ZTwZC=vam*&>y)j1=1h+AZ8$5W<#Q7-C;B(F<3SR`l}oaQ!|>1}i9UkCmIK`CiQg zGv)OneYcRA@vxZ5tI72Ort7iv-n8TNsZ+NkzZ$p8W=iw%53XBx4Q4AwKOx#>d2uGH zt*7_sp%Yhj{TbTVP$i|kr(=hHeta(Wm-lDk&eo5 zr}d*P>qI=cUV#@vW+pZ-)MmC1Q{Ikc)f@O;wjwA>!tQ*dTUzP-tXH!ruT{)wuL&6f zMd}GV5~cHfJEG8RLL%8Rr-inV2?1$NJCnyg0zEw3hzTF@X5Z0i1eo8n!)CHz|%K^Rn0J4u#ckw;$#Kjr5p?BIF7a0jqkRJR~; z{+|XPVM=lO%fr{luEVg>)z2~}>bN)FUtFZerSa}?<+<(5mPId7izfs>VGX)aKHh$< zeX-Zme4Uz9dmO_b<+V-@yh%GXAzkXp7bSsP;mN#85i5gQfO*`-AY(sL^Pjpwlw1>uBcQ`UvY~({itu%~Yku z<%gjH-d<(7wIlhcTceE|za5VV#2;~^c41#UB91n7 zxyrJ#_^RD@@S{3v*WK6KwyPJSo=%^Qrq1U`PehY63gVtLjK!#|Ge$CXbqj1#pEU+s z79aIBGCp9%p}+{IL4$)Lx%JTfE$QvWQ_l>zI7{S`)F*4pd>BQqSLB2}UmUIs56=kZ z>dahiTpjv-=l|qjyRY;*1G2%lxZ%@WN|NMf*4g${xU{ZX`mI9E%Hjo>O3ArcPFKuSH-_7+ba+fUvO{jy#6q`YEN z?#KRT_2cV<*%XVu%`^1^rPd6anag?hBfFVs-?M||q%owyih@kTiu3-FWbnw0)4}S< zuCP~RLmo73JFV94x|wX8b8F)8+H0jxyFq=mFG}>2^&!`tJMGYO9Qn){aA|Mh<$3dU z&tQ)JP8pLJ5*gGBAIZB8b1y6S+#r-XITUyyw&>OJ z>c`tOcFIZ{SCuT-oWVzS|SJHz_qhoJgw(IYGSi)Y0F0zgVB9r&`AGlq> zMpKhgF?(HI>rPUW7U&9`4_240;}z9`)lB!i+@AFsDZ6?eSH9ePF7(cIZMA=jfyZsK z&Sk+wo^~5)J1WA28QHSA$z91GnOka5=FY-a`cs#>Yl8+Vx3creda&_)XIo*-b4|`7 zbjtGl$|Y)%a{QD^Kihg_Db_FZd}}3ReB3&*=sdlRi$P##x_+A^V@1hrC*#U~p+nAs z$IkE&Q$NUNwDdZ*FFm+<<*@FJk#E;K=MJwrx6F*Sp)>|(A%|aIgJvr^bE|eLKPwzR zpLP9=5lpP`Kq=maKsmPY1@rOP>AVz~wu)Y=N^(MikxbQh^-JHOn8 zzKCm|nAI1xVX%sgj>qo%`k+A*Se-M;!Oya0+mqHp^^I#STsM>Xru)c)R+~tt9)r3U zr#dz^LzP1P9#-GM>CIk!1^N4jw6s+s-t%qS8D2*hD+Ws;ZEZf&`naCk!-Ym2M33GP z&rkYF=fh9VpDOGAC^eWBabEs$l{U_)7%x!u-sgom*CpH z`7W3!*YSM_5rU`Qta3M_MWVcFecH)Jd5G3{n9*@@iGLwB*2clMwsXzpdn8{9VZ5jN zpy~10i(+M4UiMEuy0NqlW=Rdjq9)nF79>^f75B4O=U}??fcs4xGblZAbgUE@qi}P4 zN8aktu(^Z)C3s=f%Q}XY2fR*d5Q^D++|baoF!#1muCJwI{tI<)({q-7>CV&Fsxp|j zAnJjN7TKt>W$8>z;({|LdKgAG8Zz{E_>JhUFFBEif#rIq zk8;&y!)ZMd`U{hZWA@!`Du$T6obJfUyS8H)mUS9F-NEOZp`XNtg<>W5F2^QoUD$nue``Ed}B0pInCe)pi$?ER$&5is^CW_%K<2Hu+-a`B@O2djD#!((M z(9vtS%Hw%7sT_IEpSbh(=*V$qL*&U=?zcNs)N=G~;Y$_Jw#CcOkRRFPnbr0aeham1 zhzOl2RIeFB(z4Y!q^z>AyD@K#Z?ToN&N)}EaF$=$Lk%Pvde&Z&e8MI%LD%l9WFd{? zKH^G?02H)gGX_)fLAugI?Nr+K4~~|#lTsPS-H%P@@6ZP-=GyQSzT5f|#y?tBH6L^P zT7%br;Z~BCh&4w|2;j5BJ~N32i+zp77_-17WH3IkBxsoNeqYS8)X)~+WoTEtr~8O3 zjh!2@{*vTTcaPKL80YS8DRZW}?J)@xeaAEHc+qF^@w7~_YR}Yc$8D2n3%JCYnH;(w z$UZaDFe6MJfT$73#w$y_S0|7b5079ayz`B%ep-&e+ASe^{_u3#saP+AbohLM&maMa0KIx&Xs95a1{o)<;(Z1;mwt@_PhDV8v z2rkY?()A!EUA8CP-6pysp_P*hv}vqHZ0yR5DUT9)O%Uzh)ojaaCDwo2D=1`85XZxT zbywulTxG;e&OkeFm<#RLmwI4$N>|_gT)gS`&Vy88ffYY|yK3Xg1$DFRR-uUPuTc&e zT8lkv;c@q|NxPn>hk{sVbyNJm?Dyr@v`AzeyLa=^^FEL*{}E}hZbfIn7x{B75!_s? zy|3V!v@12vLkev$-3>!VU(#!}giUu|;OB~|=1uOahlc-R$IztY)$rZc3#+B2cnk$Y*n4H4TB{~Cxv z1*Lxnb|%4K5z8v=e;N@;ETHC>LRQ_sKD)jvb2Ms1iF+rgLyT$y7*sZ*gVXR|(k2=x zk!T5$03z}~*Psj<@)3e7ayI}C6A0#jD^Ln3A>et0{twj?!UGT&mT3;*ME}r3RJ1@z z^r!cDf1A7#tHOT;mYxhZZTPq2XF$oDK-@R~(nHx1Xt_)i=Hv?i7xITC!VCpUXl)oV z{*HwT4*|?4hF!4JXy# zJ_lZl1ub~95~$wYzY`i_brAF+hF&*_cMV_f!|lJ#izQwy@X0G@#?HGk$Q2eAH1;G- z3P~|hs|M-B@kzf1mvhQT(|-))>$vrITxWPMkzntWcs8Yi&EEbf2RgdPi6w?x_V}!O zBk>La;I&qY>OZmrK9j@I;_~rno|2FfnmTz1&CJi6co_#jplk0*;&u8Nj|jU9pAUsd z<#(CIgm3>9x>zz6BhqU@UW~<3GIJZlr-^`R%*!cB39{`dNjQahTYf)sg1u1faeb^XVk{|YxB;1L4ADby;1a(`!MX$hchh`MAa)x^EOs-h0CN8+i9_#amP z87CMFgx|S^?@jTxUjNbDS4@CzQ$h1FHJk}BsNabB`ie~Zo^Qpcq!cO@l zmy>&TG$Z*?Sc-&%WVl4XRLq`^Hs3^d>gQDKE#OW>gwiAS+>gv>(p=N zhYbw8mwfDi#3qVkLdb-L;(KvEJKOD~gtr7@g*h)REe+nI^cK7Sghgd0Q`n0qf{eGc zFHcmF0`ryF2`1H0prZOo_I>WxucWa!%8fy}O&b11)@89r!X@CsaYlMYmipYVaSFGo z_ZnsL>NYmT(r^6Q#>^PuQyBTFO3}uSR<9EOkY95>uRKu+0(BzMk~mAh&YD=|{7=0l7YbsbIQF>jW$YDzL&n8y7 z*@=7$_g((kWU!kRNyIY8!T8&(MGg&VmIX$P$4PFuzRSwtmtK6FXW#dHJrWH)Afmvv zmvD8jsl-z3co~0y#u?aLfB>>YfN9*78(NvA%$k<%L%uTH`e4vwW}qwlfp${$jLIv3aWe+n}C zywo>)mu-K=X$I8Y0OSJHy)Qa0BP>{(U&X^T5=tIU%ZPq2YDxX*Y5}~I=qsMk`t8qL zV}QwFfuw6(_5|wy2)$+k6~e#Py&9YSBYnZ$wv>c{?bA5@|+k1-|ie#y6_*hVGLJ+y$s0 zbqBR%$!Rysyp74Dy7LT5pUUF=81*C+!x{jdYvTw(%k82Xu)K>ZYyrG;?rZSl$B$Jd zBqU1I10#MJhZ)9c-iL$61K-!9Ci4rJiiR>=!1sa=my9R8Ba%Xa%c8GXH6vR!6}xYF zsOsKMcBs0A>b1WlGgH~gCXImWA{8|G3kI;r=g1_-cjG!U}zd6be8J(NQflOh<< zPX&QWY-cScY<0dBQLMpliWgI^}B#zf3gRtkfKCN z9rbDk*@n-$5L$r%rv`3(QPYRRZ|xk`fS@B?bBv2zTtv&J9;LqDu>bc~gs|UI!EaP^ z2sUGBF>T$jj0`irA7Q1;FYVf2Ecdc!;K-zY!f!Ymu6qGHnA(INbf#^8a6F!xzvGnf z+Tr*elhQrFSpj1Z69X1)k?_GcdBUgsD(9zd7;74Rq203BpCabtwy(K_FI%j`AagOd zPgwroG7iF9jd@JWNh`nYd%~heXM{)j_@z%t2n&){48}CBcf+a^QWzj{DI&}R+BZhX zp94ZTdC?e7qt{Ew@19LPv}uveNjGJw&2GEY9Ul8KapmHTYL$@VSIS^ZKT5!Ddtto1 z0Ay;;kW~xjd@ADB&&q|LV-vZGAzPJ8j(jv#<#X810ABK+eEr<{YPJ3PB3#DMOA-R> z)xboW<&R4kp)6gNfWJK?uIBN+Sqj^Mz-qAm*?ktX)C>Hu$m3_wLC$_+I?PwET(AQ5 zQ-44r<>EpV<46kFD$W6i<&`+qxGe3e!uok)`33)4w$)bkJ`&o%7})J4{TPTMLE65^%dHdh-2d211s4r zJ$lIuY5>S+YbUc%2zw;fYzoK=PcRHcXggzTtAF@|vcIAM=HYd2D0eGJ>91LBWBcH) zn}#;oI#TL^ZZK2(7^FCoVHN%WfGhHVRmO?WXAEV+A-qv1V6=c)2CTW+OH-9UgQ3de zML8k4on#50za=l_P(~__?l#%$f6#v8jW_e`e6)UJZ~@g(xN#ILBxA&n{`!|yfX~5z zBL(wSDF2q|pbj39W?f%9vQTS=(r3Gyu4g#koc%2U0$af5%M)f`+IBg87!jWf{WZuv zOUw!=z#;HZoLKscZT^i+#U`4zos73l{GB0y0u=*~LP-!ueK~)2wIjx7_pN7%kH}9x z0ea=kvKjHU+mrKd1JZLBrr&`%jR4jaB$oQbw<5yR)fNgzs1+0P6U(V!Jb2nuuzA@D z?`FLWU=Du$#|Kjf19lY+p1QZLN9wo#(kz9VVHpcdJa=KhfVa* z%Y3UMpFl}$C$4f9Py)r<0wxGpLD73SWTLrU9K)730ZR*@HW+Yhg_rM<>p+DNY}9t- zxLJ#?DSVsk8Oc;duObc{ExsHLKk0KTjV8Jg0K8X)X%Qlt=cQ4e|iuD5`ni+*r%t@63wllPoYIi~}_(myn^Xl|rI;BT)$ zNTgOqT7#!7WvH8Yd%GP#!Iq2PW7-ne#(K0felSAc68*^I*&2#hB zXOc1$MC;9V?y#yx8h2KB>Q0vRrAcB%kj3qI-BMNwB*%n@MTd&<-po)6-BUq5D4){& z5q)*PvbmXM@O3uEd z*+6*0bq2>_sMUDk<4m92-zFvc#A&%Sx+C!XQ$n)~mnDLjEm-_<12EU9Z zGw8X=+7>N(@+lw98B@1bC>ePl-GX{~v-SF2VUcp!f1nnsW?efqFB!hBbZlgA%9T%4 zDA7keA7+GyI0CU&RwNHfEyP5DNfXLeg)?;53|bPDuE-`7`+vMh zrrhdrn!x+WG?eR;DL0fuxKl)sV6(RM<&DDXVNzzvix$&+mUk2lI-C*`kbhAGlY--B z9@|3@+@!~;(nu$lWkEdkK=4$R@WwKT*<&0e(q}NfW)NTrCrx;nL@RDzuW+)rCsm{T z{SkXq@B*)$@2(jK@=*lYH=n$3)%4_mO)4$_HK~C)Z zS{gtgiH05ourlJQIQMHT?J$v#w(wu=0>C~w{l6GO0-Jn~j)L(8f%&tY$8>soYj^ed zzRV|)q7G<*(Y+J_EIWXI=NKkGSgef1kI=V!;|Dz5kofhh+`D_m?_K^BQaR~N1?xrw zUhSf+K4d6SnExNlZk84vwR_ht29_dX)c6{CuO{!-bQ-U_-@xC6CK2ZK zB1KF$#5}oN@GCSeuuaH$u{$n%u-aC?nm0OIuwhrn`iszHBmeN=EWiSOMYf~9u$Y?3 zn^$uVfc&hh+rh(n$M0`@!MBTLS3@m~N|Cj%1Q%Ascsf|qe6v!Vmg9yG5pg^Um94_&;~07E!@h4G&^Mibgh)wnnkjuxZaM z5d0s0yAZbFDxY6CDt)>7`~B;K-vdcowZgN)EfHD%|%Z%745iejR))K)6u<=zaD#g*yZMJMafK`QpWZAi9OW` zKOQodNN)Hx%G}^eirK-t2XI=$TXK(1yTWm{R4$bJ{x@G8Br>J;ILer&G_UOHu$)@W zCN#1O*NgKTd`JWuliz-S8Cm#_Fzlt-&XkODuRBB+sbGtY&lh$l0%Um9y$}$SU&S^Z zzeiZmr$(zd+1IroYi*G6u|%|Zc7jfLi-7!NRM+$ndxMPd`GGoZXyaJ&jP8qPN`(0$ z;)=z?yXBdMuysB81JQkdN`R?-_c#*ec>E!>cn{!e?XNFOt~l*C|3?>J5dba^@9&^& zQpZ?J-MGqS>5XW-e5!Z2wAY;p=aMY4!6oL4_cZdxY80@0(Ccd)QxO~rGatUb7YjEb zESaXc&Q9tY?s)q@2CfR(v&VLlh^BSXS_{YoV#M9Esmen9nZ}<)@=7J}u0Hk&>#aSI3_EDfAnQ_K)^bQtt2f)(90u;Fgeo%H(n& zb!knOUprl$=6wVwb%l8**x(5!!aT>k5EHH+G(FK1=(p5JKc=y!m$M|=jX<^p^-YG& z3#u+vD^1w@>!WWq9B%K*^Q@(nU1`D=YRkYSJ>A8Q>z|;%o79MdoIdI$MAOqS=HR06 zF(xGt-i9*VWCG^M(2dc_;Z1E5Gy&(TTZEu?;9T{jH_b?hBpfWgE@PhvfDg0#hVHQf z`7U`Cu_mw-`NuSgK1iCOwslkXtql4jKg5x&;A!<1yy*GR;&TUo^VF-vU7e-9Tsz9D z6fjKyA<_&3R&~So&jBZKd&XqNVCg-Yd&%HJFYhrKOP7TzW~j>+T#YxbGEd-;59o8Y zQ8@{R{DpL?_c6F!7-GbBtuk(JFuC_GRksKp^>h5m$92QhmDhyrk zaIQHHW$g!ex8rXCsW)gn3_wWvA6{g<4Gh*FaXxH=0>0yUJhk9tm@Rql zcyO4cpV8}`4uwr&_;ewUbK6h(Cm&1eSBCTWYn~Z+X{URt74CejSoW$-tI6Edapk3) zTrA!Gf}GJk{_)mMV}|?tIzSN=h-AvwcNW#GD6RRl&lHKpO{CvKi<0=EE`M;fBJ-q?4J}975 z%#H#&AC<3h*wT9O(|?5|#;3`pPT3M2+RlD|sWoC{d(25Rj`6JcHNbB^W@kpx`u?8? zF@wQyK|}`2&>O>hm-Y&Nm4S+Jq7s9AXg2EJFKR*!w80T<25Uk78LSxAiosXG{<9r8Y1to5nvp0A=j0D&~9mZjm8}97C z1$;L+$6`_HgS6-TKRD;Kg`K?S`v39$wWy;m=Y_}V;Z~$uD47FMpg)Qcgq!q!3LmPYU|6+O!Y{wiY&b&y z_2^Tzb%t2dG2#tQTy+5{iZu-(K+PhLN!|pz^#%_EQ~N&}(?`=Q+~v9Z2OOfIdjjYj z2mvCQ{^%Bn(z8Cph@`)A@hCecpAwYkRyvRjG%a59G zo@CdC4n4%;d2jx8dEnV80B<3wzw1{n?v?+H{Is`|At|KKs&^T6Z+9~jKa%62zsds1 z4Ow8v@t2=zXJ6;;=g-qu9`8CmU8jf_`BXyZdyisXw|0O7CLLm-u0$qaaNqyspLVPl zW@Lw(Q>n;_Tq^sV_^;ngPvaY}`Ji9&GS{%EGN7Vw4xggUf0@Bl701BGq|bPU!nN_* zqsWuAdo(?d#2G>d4UA{a{~?T>hw5sB-A5=2*O;Y*(rmj2<^(V?2>bt&JI0(~Wca-< zyJ0yPKbK$d%AM!((K-mNt&)vcRW1+@6AU~8&}uB*4L6#BI1o|}NR#jh3SXm~A1Cg! zY$rzd@8CkwE{amwkFgJO!<{vN1oO;irf0$KJV9J~oIzq)yEs57L_!#2c?ZbN|MbXT zj2#psV(E<)azFyg_xq3b5JHo$Y8dE^-=)s7o+RH4HqaCE}N zvWQY3l;B(@q{a8-t2?Cqz~Ex?11e9!Ti@y}4YbS?o}&EvKY&Tox5;J5)6?f$CHOkx zcT8}2B`r}dOT6hW9{7;dhdyNNY=kl|?Cwc%PtAY(Z>=qgZZ;L5+2R%K% zINgU|ob1L&N2{1>xA?>i3fdZ!f;?@Hz(A~QnO^=FGBv`}d9{4?9~AV#V7;A2MvmTB z{|uwz5>wd+TKolM)aE}3`me?U1v4(IDZ9^EGU%tTEhds0E9G~4f(u4ZQc62ksybJY z7b}@rqBG9-@?6$roXi!oyM`>Dk0t?-gV_aM_ITnmY^SiZ)@E9Xzd%R0i-{?roMN?_ zHl8!MUJs_~iIvZ=H{wn(-x9PJZGftHGXBM3f^> z1h)%G9%{-PXA$xGUD|v&zBJ&wEzCq#bZu218XBshp&`X({v#`e%R(!zz~0Er>TSQu z0?)u_Y+BoKX|sQD=mj+)^*T&9%*H}Nr^h3I%3ow>K`7X%&4gHAiJ|zD?%Mf@`9v7@&%O22Hc%FK zd&v=c;#4j?A-vp<{M0S3U?4{(FnirorenD=f zf}mU=!`x9L-fS9* zSLbJVg#QxMCh}=K*ewg$mU#asp=z40iRk`i$F|_(BHFW~jV7$2c#(>v8lz2&#^pLu zO}6$A*AEW(Tux=q{oA@hJPQmWdR+!f4tpnqR#U?@R(cs;YtxEn=i#%#8}CM|XO?@@ zhSr7(o^K3y5B;e1#olPu(~K!po&sT=JDvu2Ct-6pjg#MHhR%8)mUZW8Z3%Iu>|TzP zVrP;jRky1`dz@U-jVAUbC+RoR>V&k1Rsu*fH>cFEx9n1c;(uWsP!q~e%OrBX1;bNL z;__2P1a(jC+51Z_*(&92Dy(|})P&J+r|rAPG2%JOm`NvtPq*P}l_Hz3^)CltDfkGP zd;pdyre1lk7{R-;o0$UIBBxJU-N5TXoC$~Up2~;XE^9jg{}pdXr1+_7{C(<3x%F9x z$Xtvr*t+|qdo$&%L}0+hes+mq))&sMq{p*Pkf)WEYa+Oi}x*dcnS7CVK!W}n!({M%xfom)#4wG;P-oecHa|E0bzSrmu zXBPq_;JTBT`u^iasrX^8knhE3YNZ%vW!&-tIWn>)6H=S0yK(R$CfjPF#EESJ%^k4G zrPguE30wK-6WJp0&jfgpT*vSjHvLfU5j3+${-++`h68i9#5ROnH;E%ixPr!J-@JJv z&sn3b?1Q57Q*k{9;(?I5$vG$%UbJ@ic1b*!`L`+ImHI)U0eVRe*9}(Z1F^)V#?=vcEdjolK+m&G zSJs?6^;0_u{H0s|IoF+aLyiP-swnah4Ue!upzew4@!%b@+KGo=v%*mSwh~w6ID!6k zUkRSh324najktGSVGSRWjbg;r7oI0)fUaTsJXshz$Oa|jwbjTC#fsBPBvwd-ogGcu zt-U^kCC1SsSgb_TfD{n;@w}RPg7fMx5m;P04^69x3T3*xc0&D1^7j+p-}fAo zNb7%}&rIhu=7jqEs;n7P8%aMFfzBK=)FoMEOc3zl`-@PzBi2553IoUm$Nq3G+CFFSJSGf z;4B_ll~R!+8vXgO(W|t^BE8ynwyAqM7SQdZ7PZOKJj2!D`ZS$$qsxtjZlBPJl`^;} zkvDMYe#_~yDl>iEV(4}p zqzsdu*Y_+K8A&_iS1q6y!>cgt_q zj2fC@W%@Glts>tto{J&XFZK+Y(4WDSz7V%5hkGtt6A4FKlLcleGd{-#CcHdU88q;G z(o%K+C?>9uT6%2nE6)^=Je(c1#}7zsm3cXrMu~LsYsk~P^v{ToVN>=rGRrv2#7gM@ zianVt<nVVL#&jo5ue@2v~A?=_8lmXAL}gkBE2@D4t=^CJi~_=qeJ1CaW#81m6Be&B<3C8~iq zH3Xm9QWp*p$uz^m$3Yi#SeaaaD z=B916gbSiD4Um$f*B5%1(jto?&rX&GngL`9J(b5F1R{y?kiJYlhk)&deI={W()0?P z0-tG@QG)}d0z1<A)C?hk?zxubCZ#zFsu-!Jy) z`^nFI#Jc=9DTj2R(PIpgm`*ulf`Ds;t}=clzv zWO`&HB>6wH|8X#-FBA7#lsa-4`jLqSvW2qeW_7z^Nv>BWS|86pAgA*Cj_4F z#jdQ0Tg#ogxq7zbkd+W@Zb<<`D^$O+^dmUuGL^QSSOTf)QZ_BWD|l|z1eX}>W7IX+ zef(seY?VW73v{M0=<6dpIYqu2eep| z2VP-h^eU+wNP1E3h`d`OE$FYp>n$tD8*YTk6oSNw#AwK}Mu}eWHU4h74>s+<@w_@+ zX`OjW`XL2v5i7>n75#AhH{z%~=Q>9G=BU`3wt|K5{P51ET_Vhc$kr^aC2Y!WDVm`< z#9k~Af2_{sIW&zY0*ORQ%>1S>mXvTqkq^KTv-N6`E`2pVs=nZd?q|y4b1mO+rG8D? zHRl1@c2RY%Tk_T;#qcb{EM2@0e<+fz7X#)g!!pqbY_jd>=SK+zOzQb60FIX^eRv0z zs8?yxpO4C8H1xZ4sXJXxJ1lx~_)6^i%|Unc>rNx_Sr)QrpN! z`k~Nov}wQV%i(6f>!7VidQtM|&$WuP_??zjR{GN6-vaJ*6Nnm8;bGnM^QrAw4~UMQ zp7}h<#ME@{U~Q<|?lJrG=juni>4I(#ywX}EnywO-mzSAmx06_OvtLx%HXdr#q2LpI zDF3jGocom+1;*9oj^B`VS)&Yta)yTQI9r7RW)cM8@&Lw(j((*-v&>ulCcSblm{M!R zAEukHZRjC=%3%g~t0^Ze`%eFRDai=gN$FQ?mU$PKR0@~|cLcz~-^C%u8>f)nQIvcM z~hD>(jdW&TiXI5)X-Bu^}LGPp3fN&h4=ViMkDRw};N ztkz@cCkY^l_)C$+0J+J0|0R7{vFf{|RBX+urMm=)vXlvNN{-cE_6hA)9075R$f2$3 zVp!<$a(l>(dce#6o*xH^QsrP6=Gxkuh$&mEmi-r8<4REBr56q9kZ6ohxyOd$1mDlh z=R|{z1P=|h6cb^Q3!m@TBIQ1putDDOk)wD)F(Ci?x1k|3!(PYO5<%&^Jz6=DE&G9# zA3t(UvT^L<%~L^vF*H3UcfO^w$koKF$;n6Jf94zP!K#2p2HB)Fy=PRIs)6&B{8TCw1&z=w=Y@HyU=1 z|NLm$ldYM`myI)-%vq2g{IHYPYWRZ?6TOV(;%W!PKVP|=9oqvGC6V!$^5PZu83QxwSAR< z^*MBtQg~uEvAZ!YzUZ9>LCp2{V2r7J@d%CKZ+_;Jp|`4KXCHbXb+- z&jI!f2FAD27aym#X_>eWtK3c<(}EeLiA&5uIxtoy)o4xLz->) zmz6BSKJxPAtqUx`3pB14U&g*uEXXT5C$SqDuG7f_uSK*y`TJT#I9+tMVHs^U&XL_w zvOj5=@gP0!x_b^{N}$u|u5$bw3AdG+n(_PAE^Zer)T>YNi>@Vl(%buqhD+m51l-Vm zq7vayGMT~9P%S!C5M30vTO28iYR5UJi6r5A_KbIQgM~?sV1D6#V_{){_357Z(#j6s zOYvZvxWk28G&jdoAAo%omRdOClGS}%(mIj8EX@+DegQ3o-XJCi^k+K<(WAkwR!KN4 z&ZFs_`p7*0WIC%n1YQI2{Q7o2J35~+!y9<@7|_FPU_&$MSv2`B1c84>QOf^G98Qh~ z80)~eC$|iMDEupJ)_qha0qW!d$kFYYWG)d;Ee6FA-@BQN*jHfp-^yw6N73(rxBrw4 zqh2tXj^6;igv0^#=-=dm6u_eV0PDy6Keb$YIF#EOZ=lw8D-pNX1jzTgk;kc!<4qMB_k%W5oQm{{c_ff{XFM9&pGGM z^VdAjdggn-cfIRfzxA$f{eFw>dDeA|B^tF2N|%J}se)tuyGxi@Nb;v`L|6u@%=sRP zGj8D5#%;R|aS$92^f@*j-<4oEg_q6QZhZ(yR!oQ5eWtN@4ej1~7ieueD+XLp5*ft4 zfs({R~D%OJA#c zeetB?cKA0W5pAL`HZy)Izx>|QHyAP#x}_fFV}Z=Q%dh)|q>kUw5gD0xqk%IURr=TD zAyvrZjC)?p2~k;MUD891u$_X$Xg>osa7Q>T#D>aVC2uL;KT z99T45B|_;-oaS3kXY|XQZ3u4YAzX)KGy@b#N` zg=AQ2>9X`+3xnzoIC3^gNi*&Z5lu4rN7TCIcbccjU;aR~P~M*m!Qc#r-bmlYRMFI4 znA5>`iPqFBnTbgmK{cJ;zKQ}53P9qEs!Dq=zW1dZvZaY%l!LbX<(k2U~(-;NcJviuaVKiFV2lx zL}JXwjUeNA_wpe>gneItJ34$_Q8JGl0 zixN4oHk1ZEYH6jLg6gs2LhQpl^1@QZ0Uxjo^c7FO4W4Gf(0C-9;W;>T3>hOkht206 z>yZ_RiTqu@FJWf6rdb0#LYN9(^c@(Yd?M6dJDP+Ej!o|jef0?T=b(AEZ^J?(kvJ@O zRjgqwTS!ek?*#H9W(RmjfIm~t3wLCgp!E#vJQsr;CY_A=54-QUz1eZpjNsOg{eHI_ z&QERZTKb5P&L^Yj^fc}n*B-eFJsAt5bbbF+TCmTcxEp8qV*0t)()N>e3N%*~p~S0O zB+46pKjD)aC|e4OPy&EUx&(lXt3|V>Aoo$tLYmWpRn1US8;RW>zspQF7$=!nlXP+? zGH_Cx2pdVk11GkF*Mo`PiX~cc`EIpZaAr<{*A#-!SP%nNzC*n^N!6Y^~~I*r!Em+2THp>|G>G5oM$R6vHk9>_8Ke< z7eTbHD{C}U^%D(6?gXxPbHq4> zBK5wuR;#zdw2Gh;I0$WoQ;?kZO^Z4>sI#skOqntps4;U3|KBW@Ia857Wxjc@>+tQH zJtb3Vt>);v5*Ngxqvu==Zw+(0=2Z!GaLPS*pv(V~b?8F4?|AIpGts+si-WH&ffEq9 zLuQp!Xd9Pi@Kr8@`tC!aP<{3=Q{XW=@B|L)^CXCE3`y5b^zjOECM-tO)0kw#(r%m= zY|z5B4Mp%u_jo$c(>HE9vfIUns2MbJhitTA4<~&MNIoDq{a4Ep&aKB{In+U3{)N@w zJ-cf1n$S^m_FJ|aYvG=YQ2K)=h0^1=ULFp+meL145zl*96E!_7pV$WaZMg&C)6-sg zh3Sgkk)}n%@0Hv-hR)@+9d>LZn`;Z%4E|u@mb$%oz>W07tynU9ELw}$#Cn}urJ2@D zte+iF&M>4mp{Zwl#9XJ{{ivFN;E-B1GJm74c_L=56fi2S0%l9?aJJg?TwPuW z$qoRDIL`W$9|sI=I(hkllN8f_Eim7;WKaTViYE#?)FSqP%56@S`vi8GQsVA?l7huP z(;iIp^`XBfIyg0U(%n8at`mZx3YdaKbd3lA5_YlxNa6w2xkEADa7u#Ba^p+rR3UmY*E87O~lW2`;iOYPcv^DW3PF?Q6Ngh0d z#7LY zC4;iZN_|A#q-YLY(U3Nv#e3V_9O}EK;S^5EgmLgyQc#v%JmLBEp?fWf%Udu^X7$e| z!@9{e-L^4>jOh92;ax$RU83b4jonGP)eeNKm2-s+0?Xj~FHk#)s;a7-PYC*YrG{)7 zYt;6MOX7#t%U@^ShgzpW{7hdT=NqAO+l(UWsoHI!kGy#~2<48*2t7}fQzcwy-@?b> z6^B}Xrk$>*i|P3U37r0`up)xM`rZ@Yc@OM5?LH3Azv9B;e>zHsF5ZyD?`01hjwB3W zl5a`X*vjdaAnUCk*}PP4q?lw9h=y}U$goJ$2HOHTV?Ft(mVEs3Jfot+-a8YftbrrlY?0Gp>6+t12$VE2J( z+5@KFLX*n)_#TCeUVo0IyFUsABo-3f_DbJdWr;0PU>7000ZRK*SD{OMxcE8+bs#K({R#XaOJK0FZ^I0uHkTew@YP zP!65LA_;)i@piTdYg;(bZ9yVx23f-hL%DiF$H zdWQLU2ryD%gArw~<1{drF1Cs?rU*AAGlp-n=A@LyFdf9SC;fx4kq>med z;4bHf03_f8gM1^zC^QDA2tfj`W>B;;gaKA~2$fMTc%G2w1N3m%Xax-8ZWjvij&uY2 z*z%-sh@8on5SX4~sRDLTv#X%&dQ0c7*vkeY(63_(hnp7=mtvaJvh0z3*4gy;T403IQNp`ZjLg~|}2MB$Jq zAw(hVo_4M8ZuA|hGJkdVPpF2!3J%2r@#ETU%w zhNgg_2rLYQ790)Vjem z+<^gjj9Vm6PIKcad05{dsuz!dl!b;vg6Pf*)46;l!p=L~Cqg8blDr8DSTGt)LCJU` zfM_&J!XRKG@lYj}1y{JEgivRUlpD<8ct!y;qm*!xbEuea7l!i*=K6AdF&JeOgoX9x zqMXT69)_fp@xr8FqL6OqA;-Jnz0jdFLXZOILbDU2+*m?x2!rP;_m&ZTB3Ye$xd7dRO#i9#wugSZ$N@S+ebh=Yq*NRV1+=WN=#u z+b)#PAmMxztOz%mGnK@Rbny~J31mbiL(az$Lg)&9q&FF38;*BDk?2%`kb#llq&N=N z2PWMMro;rOFT-!X07Dz`z8aY$1$`^mLZPnBMLLHkjwb zk#Y!hG?gKv___s?Jwgeg?p}ycDA!FUWN_&`01Xc+2e46iuF#!Au@$=l&2V=)gCq52 zE8wgJEs-F|9G4)lCjuPoCS_B|$_RkLcq!dAG6auvhq;Afg2XPN43dXCjpB-Bdy~OI za+ojRZ_vI{7gx5#4b2hpJdrRSg~(%ui$dslBvl}DClIk7?p$xK$cww6^P~toPaYnQ z3S5}SjH1{^gwthsiKi$uknTT3^KnThQM+Wmm zC{&Og(mfI@y&6|&dvBlu9@DQ;e7)=R5+TlH5wytzIlF3zu(ih~LEfKleIZGLCG9M^P zD4+#Fogp};kc{DmcnX;E2olBz?IV*2JRlUFmyes5QWQzVhEqeBVhlByKo92Gp`bF~ z2&Nc^m#|3!DN#g=j0%S`pa?ius_=9XfN3zKB%J6O#SbRn1Vpc33f{*RK>y?yN@!88&T0;V`aU0FibJq049AYmaPy(^6%1xL$rsRRMUc`5 zCx;3lND7n=%pp*yf(4fwq4YsfM4mxmU@->i5)tM_M1=;iU4v2Npdi4XLgmgvA3l$O za;6cukx?)&iEkL4;t>IN7dmq=K{y#j$`TSGYyc9`M+#%Wg6T*pi3|@G2xuayBqCDe zgCjx1gm@lDf?-k#;m(op5TP4`>nlOJpt&Nx2aoF=gpMLgTtYmFtRM*7mIY<=fPe=t zfx9d~1w0Enib7?g#G()}EYjIIG+3$N1z~7B2-k~=b%(%so>X67t_+F}vcm>ZaWX0s z=0T<7>7o#-oE8jc^F5(7FxQjH^Q04)K6t)}Oe0|;fEB_SbfgzwW+%Z#!oA$(N;?SE zcEQHr7~t?I_CL-Wcq3xDJ`e(mr(D=HCRii^!-5wEvBE^*Jh2^LMB`v(GL8Z&kRSv> zfssI{BWBQX5G!>Hj;Dm7pl~^o7X^)Q zj^I&k#Zoqd;!O?=2XJMC`bxZIOjjsaBn%_5lyDguLq>+Vd69g{Zags2n@taiAbR5D zWDZlo#X($=R5}quVK9_FA_6bmdx1^1A|Eh`0z?EdJPm3KhtL31gckTf5#fX=vU7+B zTqZ%Hkip^ZN>4nQ7a|F_<4BmnzG5B>2@9i;J;U(s1R>ED>fGodFa*@a!Njx(JRW*m`oJ6hIHKPM|Y zVQ{opl&69M43mUW#CRBy<_uUk50Xy^TO#E1#59gfE+$5i_z@x&j^ydZWn$SuK3;Sd zEiz0Q6$-?j7@>d%2j;U;t}I$mhyVrWfIaYJF^YvG;|1O*X9y%R(v44r1PfRM76I+; zMYM(BQ64O?n?&e?6R=STSs05<@nXnbIbrY+3WXKSrY#^&@$?aZy?tdIsxJ%$hVZ~l zA|B%#O7iiM%K>$Av%~SxVj{vt!KV`_k;E{hG!RNuvgj<^P#G{C?<{2j0*5CPDD+?f zA_@X#Nxj3|g$NjwPL`9Rq&TpI5lTbA-N-;tj(2r-0oze&M6MVjrokY1iIm9qaRCSW zqAAiKDIzLLZl@5z5eQZg4;+k=hvPXIfp1i>myGG-#-uS(T&2>*mPoWEMEJTA6j)al z1V)JT1?WHrBWN`51<~h5MbSA7TfQfo17qVDfmB}+$=j9<237~7MYcQ&ODgk$2<1?P zn1l?I__#vE-au4EBnNq+Bvcm!kh4e-Qb~|Ff{&r#1s*^g8pxt>z+qslD@9Hg1w}+s z0XK=3cmP%x?c*);^<>f+b`iEREZ9fng7jsH6bp*`W9w=Uo;*Q(Kc?)NzknEh z#3nSTkDjbLQ$8~NqOs*cU-tBlzUsdZZ2PiFD&=T&z`*%&7D1KJm*^ZYclTmMSK~4e zcWk8!C^7Et{zK~>OHY65T5{i?-(Y!Xlve5J*L=Zk2FIC$?%YN$oy&!JA6a*5WO*KB z70qwNwHH3RYpZw9Cqk9N*U_6};e;X`%yr_b-v=pN}Vd_TUwE@r0Z_?p3dwf#k9aiDX(_19nfpFX@i zNm#%V2!bm@>5D}2>o~sp)SVxrtd6H zkn*(qcU#t^X6kdcRj7IYpRvFT}!y5RBl;m^#732Ytl=S z4|@+z0bJq$T$;I79v(ctKCjKVZjS(qIenxqrkzeLJu|Px+I&`JIYeVsO=7g3wa|Ok7y;0hoHXv8mS2yE)npYysz|==ZtVa3encKjc#Bb)aZi)g zHNf3cSM|y$%#l?c+8tS1sDW;w_1d)ewkje2Grs1+xfbQW^7BHS@SpAUXRW?lc_3l~ zaTz4cc2t|y#eIQrEcQ-+LTaJicU%UcpQ)MDmaYYagRjLZgykAFjhgieKgS)+I>L2A zw_qOIu%gzm3b%S`0}m-^fu4lxdo}?Wh;o+E0a5)42OIT%7Vdg-*Su~I#3Ef2n^>-G zvDG3$Q@Z$JimJ!KESLRhGzT0oBlJAT+oa9`bRzfCa--fGx1qoTx-=IMoLsFI;oK1=jvIrpZk7Jx0(F>_{P7s+yBC<`8`NI`#gC<$=4B; zQ0beuA)k_X&%m7br19CFlAo)Fx~+{Mh6j809j8QVE%ArkY;;5x-aPIXc0VVS=~CWy zbMZw|#gVV2Uk3AvgF0fPSwP7G=ZP_ z;?wNNzR4x`MrPJ#E5D5V{1F}YXgKJO(VfA(pTG5NYVW#S+%MW|`#IrwFEMs=++^ca zHS+oS#UqafZ626CFfXH4UNNbf`y+FuOh*n6c1|AeeE-^5Yc#{Ts^Z4R?AUK81^fMD z@b_fr@r0S5;~L_rI)Os*{&8_gr#0hOgtf!OfHddLpf6tQP@XnxpJUFsdn5a`zRs;E z+BpiYn)x>W3UU4Bjs4LEu^v;?&5LafArEy<*bS{VcZ=q%PPs2J{19EAwPpI#egEzA zTD?{FtJKMpt(o075BT5v;aEiW8fi}0gxaUta%bJc8N|gyhc5Oym5rtL^&7X2^q8AJ z{Ml?1;z`vXoLGZfRlIyzB7UP5YhOu2{$+pnx++xrHfm#L*0lEEA!!%isbzhOa?=;` z@}EsD%5k+19TPJX=MqQ)R%(=6+`i!1gd>jwk0AV&D-QcXjJG$UjC!9bPuy?}^I|#9 z-pc$`y1wfKAwrtz*5beKhuw?8anI2k12>Lt>8%c$Iw?oD*zl8zcLrDhI(=T_#xE(l zMbEsqsCBRU@-3&ZY>sMbU3tmGxjO|X>-3lZ>Gs>VzAJ84_xqVM)~hxp#`v?kUM^Y; zEXX_=^W(VFsk*99lUkFXF3`=|Q`X~KY_KgQvq7hR9G*#t&a;?&F5JBl+hU_9TU_wBgO{tJ%()5PQBb#y zeK@)uVgxDilgEI69y@99p|Ze{m0Dr=?&+LjHu}lD>CUsppR2PPB#?pQnKv`H-wCU6 zF8=0kKvaB+pN?ZsKw*L)@m9(*E{Y>ErO3xRMiboD<_oA#Z+Ep>j4uMU%}- zQbS5#p8%Bo!y@1GtRQS9>6&cvtHBSD>EmZwqnj%4J)WF?ioUox_S0Fd%eAchg5z1; zkz#K0=wj)*hZ@RlrZ4r5X4Q!=NkO`8@1b_Sid~==+Q&r zmy7a`Z?18iFnD29zVl}H-8FP0CwW@{~)Z{UL)wuU|)$xoN ztA2m+3X{*-iRB|7++W*t#~C-)`LCJbP!-=7zl{bP;Ez|_n0ur4GH(8}DkI|@y{M+< zqibE&F`onI$6K`_nMq&o4@Kwkp(jJ)SY3>*E48JjSJQj)JndIDov|I|On#l54rnwV zHDmcj+(R4B6g@ky5xYeFWJ7515m^4tR4-58?P+Aw4}_CxdzKPgAf-!ePWR{;)lYOO zel1rBo<{fO^*7va)-axnn&mWkolI5y9XRxDrngg6biAUuXpzv|WgvVH6ESr3t=qn_ z{-_TehvzyM95fKh?I)XZUknIPkXyu-*lTV2kW8<=eit3rOpX7rN#j)c+NbyQ`M-YL z*kNueIj;4WIa0HjIzN19)HB4l$@E}WnfmSh*cR8Vq~?I4oR?dY%11UpnVVnMn4iwL znC=M&pPgxMIVA4BC_40ae$N)I(d0X?;t$F`?{0ngY3{)lS^C|V?EIbDvu4e7qA5)@ zF?2dfWzA^VzCHAdwanSGrG%k$1}8SVXmEB^FA zS37CqnB;3W5ad}>tCra~qRQv!AQZ8SG5>Vv%f*5pMVU5ff1cneeZS25C&6D0j!lrK ze{C`_@binEgD7U+(XW)n8W^6P;y67WMwgG9)>p0a@$bOgvxJ0gub;`U&rT;m@Xa-Q z(-uhvl4s;0+N1Z1b&Ptg66_ZqA=^l+lCyS=_5J$!XQtIud*39(=;kzMhuel|ubmH{ zOvFeZ^?0v0{W_=oKwvPekPo~ zHaEKoylW@(z`KiC-Qk1dtEQUTMxV0(;{U`ZmB%Hgj6ANry>>qR>G-pbi88=v-KtX6 z*=%jW>hj)tG>)PK*TuXaEqYu(%6)h++900R-A6!upIy2--@JEzcjlXbj@<3jNqzna zZ~P{AJJnS{9&KGCojYP4a} z&6^ep4{C%3$JLq-dL<>6+azU3Thg*>g!}LtTWfB(d7*kGH&!{isokJoubVkL=z?e% znK+(>z_r9m`(5iCPUPj>fZs6dUB3q60=2nzslnp%d8NVgw5<;aZ3ba$Go5bSo(!`V zu4>j|bwMq5=u;Ha>1BaKlQ);pn2u*h(_n`AP3_S8+qT6s!7M_r=#??q;aoK9u)cAI`%whRbcN ztO{(7B%Z@uBcEN;!K>b$7I89Y^USI%>CtNBmY%8*lyA!4F3GpQXaK)7_WZv%J3asP z$E-%e#GdsFla%aMH+&+^LmM4^b*^kWbA9a>!TxI6m-Wgx5Uw{d0SXTTLt(>a3e^?M4757hY< zHXRs^YM!w^k7R<5&vXZkN3`^iFVzfpF{w{urvrAOc$@s2v70&(wDiTDpBFtmOx80+ z0@iy`(TZ)XAG_1@_M&$Pj0w;C9@y6G^Yp*T@HB8XubVOcVR)<4?D~!Egp66&k~m6) zA&pt=+4$Y#v7woz^LxW2_GERw&7zY7E(ViphThA+Ij~aCnZsmVZES0~Z9&S6E$%`cXKOtZeKpb zpt^d^faGcTTGk%`uO)ff2Y^*oaf>-8{x8V?pLki9ndSBW%HBaO(nax_tB}{(sX(cu zPV@H0>bgCL1{3yK$)UUEe%I3u`;OiC3gqJ7ZHRh@9q(?K^eY>7_q9%wr!AWV-1X00 z1IFW9J~}KT)SZua)^t)^{jH~~b@cRNej)m?)NFgft%l~WH-V6;B8~vm2wcn-`DyMy zKfB{)g`+8p(sIpO?RD#M8c>>9bsF1}zK;0q(BazCJss~`=9fVZY@kKfiw*$tbz_W8QMY`K6BzE;-kt#82w%Fk$a-RqEl} zu5Wc8g#2IXEAeMcv__8}7-#LkwN#vcG5?#Ix#_LepAb^dpb2ZHXR7|@#lqd1q?sPp zh`zAHhBY(tc&PlMGxv{&0f8+H{ z$Xh^ng=u@SBZww=j6fIOVocBsM&#ND!^(#@Z-VU3>NAXESgz1jI}P0Y5J?uH;Z=Z@7VBPY~#Frkg@b$jL38@_oSXj zd@wd;{(*Az{ZhX@5u1M1fL3*T-&tm!YLwd%BdSWG_ z^;XNaFU|?^BW@_u#ASa`=9DAN7g<|vd!bKWc@yNjzW#N;;;^&iITmRdp-Pq-w}vc! z;P-9oHoMiQ@}E|7k3ClbQz=17Vs-DHI;|3G6P_@CU#w=F$E)A82Mcw-U%T?OR=N6h zP6O3MBi)~SWUF&dHa_pQ>*=w)NuitcWJu3%`|_(tiRh6$=}>YCgC&P~3+8gI!_?F~GaQ9V(KAdlZ~OgX{aYOIM6UbiDr*yg@X*64 z!#PRX%3Ed?hxXT4>=b^91B#9Zs_y-%Nd%bic1u=am$~1aiTSssP-5||%U7$SM@ZKY za}&eweN7TH%m|dPUxhO(_HJE@ipIs?Pc-k{%yT{6X9>#sWtTxnIa$8+&K}=e!mOfZ z`{0LP5!I*Z_YvsV83S)z-cC0cY`beSJma$Ci_NXbqaL!H;)$AAgTk2pCo~OhKwhkJ z4>}x9^bGjO*?xJo*LGc0-1}Dh2GvN`j+LcX?0pXI`FT~Gb-83;ncLIlmKveMci9ES zewmCv;Y~v`gx$M?{R{$!ZGhJ(pN+pVGpa7%y*X6;XV>=Wx6vohO!_A}YDbttu~meL zQLUV-&zUwY7yqQMt9|0+vt(8IA=UVdr3}-sC{wj`#cF3mh1zwXl)Cn6OPAAYpPz4W zK^g<49~vKxZ8x0LKK43n8s!BPgI`3qvjM$(e?W6oQ^oY-{wUe&jiU#y#hux&H5wYL zd*LfV%Rx(;zYlRzf^JE=tf_XuCEj=P+xlKh>G8DEwGNSOZxf(#h{n*lAeS#TZT#7L z7i~-DO~4b;Z{22Wu)8%`n~meI?8vyf8^0)&9X?v{l`&Y3Q0ajz1o$#>_q9S+@JXK;x9H@ zy!PU=n!k1(Y5~GWv=hE$!^tM?Cr{12!aURnTS-SB>4iT6B9OW>u$x=3o=hF+dLUa< z(S5>d=xw!tJD!O;YU~7$yJu0QWqv+%E(Lk&@T-Fjz105(2YBDNlk5SjWDt-ktq7}I zZeHi`#ciX{8o)~%Nr8H#<_VAOhp*hmmi%gbxm!o&WK;V;r~zn%Z&_8aJk5LEe*?Sy z+2sF=f_phx(JF>(Kz>VW+Yh$CdfTYnsq)DOG`Rtky(In+$i4p>o%C{z`O%Wa$Ea8r zJ5{z2SNb<0+u>Jcj*-bG9c=vMMRWjATKnY$KXk$7@2bWArxRxV|6IQxx}?^*sLIi} zR?S}``f2o)r;@YYscA#J<;Ws}kOS@3J~Dg4JLBktQTr)Fu@S($mA{S$Xy*9M@B6*Y z<~S+(l>VP}>Y-O|p_iTTUY8f|O`zOOeE5BQeOKdIl@?o&quvttpT;1!G5qacqh_FD z9gv@DJbmZzjyc_cb~>m=7v$5T8s7*iUY|4a5p;D${Ij=xt3YqnKocM*1c;#lnjamb z)@&{ulIq+O{ax=geyneb+ZQbp=S6>8?*$U*)Vjni;+JjwbTuX(Yx+$!p6NK`(%67{ zH=}FSMeTj}e%Xm<7jGR?D2}_p;|`b2KH3|7`>&VL%EQ`iG{T``E!z*I>Wiuy9)oV4 zU3Dg*=73{R+@TLoJPA{Kl9y|Ldm>+Szf#prxh6npT>Et5QhlOsz~5M~&U%eS8^+b0 zK0C!fioWDubEY_M{s^c)OeN)``p;*3`=+d8AZClN7w!#X6h{nFZ96(TG9rfU_cb@3 z>eiT@omeA(xGGMu`p>O7z0`S%WBtdZ6{~cie|MEnDYPUj)Z($# ziyMF9uv0JA`&;X9r)CmtG%)DSnbQ%uKI%4}YxuEy#Fv z{{C3|?&?V7nEC~5Ns>-$Xy?7(ki%^kzPI=E>Yt5FI*^m6pV~3}XLxrhc;|zTp~AgK zggYhd*^4J?H8#ggSJuq_8Me(`CY$y%$;dEZ%;Te`PH1>~R_F&YH=PVA?kpG^oG4W0 zp3Cpd%+JS+u3ECAb+mCNX-&6ZV2O^ut?c{Wk$}p#48MlPl5mhN;dx2XOaJ{xLnqxq zSmOhRFO~sHs#UgZiOLt7hdH?STaSSNd!_jgr7o(qGhGjgqF(Uz-8~rh2doae&fbcf z-zJ$D>5kHiKiAQ(eh9w1F|q5x{A5?#<-z()Bqe3!BX2Bdd2R7h4bh~bUFn-6uU

@Yq3pbBOJHw)X7`8hx_xU+&zF6uCOw;d(^1VUDP@9>gs&M zg8L`-8o;G*%zm4cqX(8RXwhY;j?O9gQ}e+;{Ko9#DM8u##9^I%t17dg>P_%9ciJl} z)3e7ciH?on+?bd>a`?pf&mTlfzc=eUjdg!MtG~S;^(`{HYD$o2_JXO|T}iKbf!yST zZt~Thr-KHy`Zhm~_B1`i?6yt$Ax6%R~`9qWkaFku6@z8@$LFYXH(Mo`Ni?)Wcx}w z#6^uMqKS^W=1+pQoXxc0#N3%{l$OHkL%Xk^;?K+2MIVz)0qeFl)zl_T^1Am3cQpyI zBJX?j{>p6LPDaLwj%$7)l`b5A-Vy1o2a6D=xMu3vGoLZpA5whd--5FRaU%*kAMK8t?D&>Lxr=mkTv^-DG$DNo zeF7qyX{+0bmtVlQmru)EwnkGk0H5E}aCYbS1f*|QQzw4UWP*gr7Dwe7)B`>(*|0M?=kCU3F9Bo@L*U#v_fMPTzTr`d4)1 zdik}Xb@_SImwyEyyVQO1k)vGs`SpGz3~{cc^Lx9wTlV0DU*W8S z@kCm@<+@Yn>Ug9S4d}OJ&ygLFZw1aL5>EJLZ4?08JFYHvD=!;gTxFfLw$$K+CyUQ6 z?)v`bXw78T(|yI$NX+_*($Ldo6Y~!@A4qz0@2uyAR}pr;fplFQ{^a!XS6LlpMMn(P z%b&zM>mSLlGCjKLz9HTAyKinUJzb?;U@Pxpoe5>Bf9J=U%a_C=qpSuxc zvSK;K_+sAwq8$*-T^nRNc(N$n&seR#J=wVC;@dNEr%Kd?@+B9G>(j41#(ceyNp8P! zOx|%i=EC`__nak&l&>+hPulk8RkJqjbUbgLvh@A+q>UTRPl)_4k9UB#_}4o+&uy7L zDW+|L`ONoSfLCxz-BJ@T1j;D3o%>wf^N1)=PH8*cHn1GAo)&nfN=43sW zg_p%P9XvMmcl9{m<_}c~cu)Vt#$NC9R}2s?mlmv_zV=L5jb0ax8>)47;Dha(0`K{Fd%XW@%{ip>WuM;Ab@+h@*QM9l)fB+o3>XOui7 z=I-Amo!S7&Wj^GbP0DSK)LGb3yY?qsRL(z{xocKRVF`=$cgJP5X%9%c=hwTrZ#y#H zq+e>gE5j#DJw-ES3{AS(^XfO>ojqXu(B6RRjNkiNY4?3=A1^#kKKjAj^uwv&BC$m9 z)lxGraLb{sKC`CsdxQ(}%jZJi#U~HU%LRvS&tQ!u@=y4@%e!m0osHW=Z|COUOkTe< zT@npDz1kX_S7OYlq82(&7z(J{$X92szdd^6jTz9azK<0V#qdlV-i{yDxuR2%} z(X0VeV#p7a)agKyZNspEz5eZ>#1*2XQF!aEug`ahYnS#BE$SHKzJ2{;Mn-{3eekxy zJcbxMIIy_O&ufCLmpvlWRZ+# zFW#F3L=dAobF7=*gx#Hgltz7=@ap!PkwqF9wfx+-@!#*Yjvvnf2hR2_E!NI{1Ya&q z3Cf+FMh%!SVZr|Vu<}iRFIygMS`IOXc74y-1@Whla}MUNzVwd>V)u>+-h8>EGzYQB zh}hk*`%u(GT%q*qIZ)W$68TL_Kf00Bi1Oz}jXoR!!tFc6e>m>)y4PJRT^Sjg9rlir zJVA@D*gbf^SnyzA+T69dhk-TbGTS+;^1fVaoVIiF_Uo$Vt=kgbK7TIDKesGDt8R*Q zZ{=XoNxmhEh|e3`#;+YmvVCq#`qIXq{if}lf;z`9iT-vGAIXVGI}D_e+j(bKbTS{d z4fZ|U*!F6BPf&MVD_nW>)Ywf^kW)jmoyY+{oKKsjG*zHE*M*bGot~T-;gtX-E=%oqu6(ZgmE~-{RmRH7X7zKFqmw>w zow@4^V2dxZk|gH{u$Icz!{&L;4_9ZF1p`Yza7V;aw8R~bNPC0q-tON3-DB!``{=_y zV{Q1M#nxAuQ?~!!&W%WDD~w-Pc<$Z$Q-27Bn-Xb_zb+_Co$UUb_2DrC-al&-KJQs; z&Y9^=un9wbeRmFBU-8S2yh6Z}feK7u^Mj@9KpU=?CulAWb}orkGfIMrIx;K5P3LAm zesl6HI*l@tPE`~g1l4z<+Cs`-r;*#O`Z#^cn)y9@UI8Zq^>N*~qJ3-d!}f>#_D_mVQklMC@Y+Zr@s=2zvpT%()qq&~(nYoYQ|! zhj(9d?>f8g)Lreg)C!yCS?{UYN^I~`LJ|LgKIvrxOioN#GB=bnm_O=JW54vqz;tZF zebL#?gB{#4?}E@n{D<4y=0-ivDgr#2Pf7FV9mvzA3~&IZa$T3834GuFbzJA}wr);VERL7kZ=boY7@kYr^>=)%CaQhe^pkz4>k7*JeRqa}|2Y?9C-yH2 zNE`EAT^Y0_$QL>{f6imS!=8rU^6wXnSpB@1slPwp`TcbjDJ*pMVEo0V`TKvLGvt2L z^wH2qG?rqyP#tpP@%>_5cjJa>>O0L(!jpIRbS!8dGiDLtWWzGt?d+XzhpO|Jc5c4X z7T8O;+SKrVjfdwR=;2T-z$X#+1za0`fmT^jG5B{fA1f zj63pedBUg-hT32|Gv|TNqNJR8X{5Wdh7$OOW*3V<7Q7h^V{|n4`L4`jD*J&vvOOe4okRhzq{dm zBW(5Y6!cRlS@Dvy60fQpHuE3*ux_D$P*G>A!M@2Bz@F+c<}O0ze9WI7(TR5?=lJhY z?G+~FkByJ-=n9{jwsXKJApaAd(|fErV6X3zfml}KofF$GeMr$=v=rB} z664QVJTF7;4Pgjk+X_=F8j=T6`~QegL0|iyp(+ZqvLe3rw{~orRkC5mGEd4pX!z96 z_2}?$XMV){;MMqHzsnnXQ^^4x0~ZEb7Z4Xy>qJZIA8r4=MTQEu9!agZSwHokbknmD zfS^4bU+M70)sL;LJX>;MYTDyf{gOUk8GiVmWv&LyU?cv~VEro0#_d~AWqUKS{xgy; zWmYs8rU3~f%gX<8X!`hyM@Z@UzNr-_V&cEa{@0T`Lk(Jc{L|5K3j-sr08#mWJpH~$ zeUobIzug}Kgh2A&{>T086I2v%VTUj{AWi%1LQDxM`rkNsFTjo;^rS!NMf^|j1gtAE zD{J|!KEBOh6)?>{X%l;eDF8Sl8yvVnD+mlt;|<%9DGZGM8@$C$Ve%37C^ameTky75?5`AUI*633WGSh}FPqBk!OW7>qbNZmeTjX_ta}F4q z&K$aC-(N6WBwRB!ZS`GKOm7N*<-QQ$knsE1A&!A#tD@t-v<_OnpV5?=Fgsqlq;&tl za$3$9O7j6mj$q8pU-QxL-v@VX1F|X0-bM$fZkjf?kVAjfki8=&X^mp_jLjpj-1_Cwa{Kb&qIX%MWn-D)uVH;k5)7R|+bPrmGaudWPViisKU&w0gIY`?{8Fb6KTv`!tedtH<@yL5b( zShf39ZF_M^OYZz!nxAQ$U*QYyf`g>>&g^gY!@dDA zraf3Z%5mzz@CT`g`?hPv%w|}6*)$^RUQv}~gTGyZAG~d09`wbBe-80ht_pcd7#ooG z?cwkI)|x*{fJ!%5e#ZT;CqG6WxkQU2?^GkWQ`1!|P)*d&K*6z#^R*QLb zu72l)!MmoP9J*g~2Z#l0UJbrp_F98UMh*yY?)90 zLd48XBPxbO_1oNg5Z@TmH|*mIKsm>KdVJtZ^>1fJB+^>FX!1EK@QF92rZW=@#L0=o z?82AZW)}oh;dGEjHnm|yMgEx2^s@QV2@OAvHZHaq-oNa9)(PvIS3Cl|NpC(!Sc%=AT!`rh{PZ zEAYdHcAR*Z=LrmRea_y0VXgnrIwoi=EIcnCcOED~;Cv?LCisr=raKm5fP)=>KI&5; zBwZ5fb~9J-u#09 zD#M&h-4l8y{z>F51W29vK#w+#DGEl8_w&8U8#m(0gvY zumrFv#~Gu(9l!zg4Z{kimI*11-|Sb;uZq64*l;~ZcGLWEq>Pw`JYF?GGwSYpH;$zC)WUL2Te_Lj|dty(mV9pA43Cr z?jz~@2ylc4ocH!fW#hd_Ft#5+Z0d?lQGiw4^8hI7*pr=5Z zy5qNV04L#pUIUn&e|%kl=2sidy8=IeFa|r)YcK!s0j$fqKJ!dFdoI=k=WMT?l*ISn zKHZMod}yO5T|qU}F9d?x>U)@jJ&oIK?U!Fwr>$$fZ#_-wF4~GPbZ;#@_m%YdLd(h5 z&qDU(e(SN$9Q`eR_pS*+)ljVBhj#x;`LW#70lO~m70fcn1-700Tm>ap{~p-#XTq7T zS103lq+XK*Z*EE1Ojh6CviR1lo84rE&`idsRv7#UKaL;SW4$seRF5HskIj=PW~51u z`;Xk1;cuj(Jz+D=t2x^ntry$Qe650_wvVA;CLxZGiH0q2^387fDz4VIUfLoHUG_`uDPcfjPlxZOCQOH^wE8ZP0{)+x^S6 zCpzKK3$Q)=Ewk-2+yOTlww%I7Pu$! zQ%ilxw2O3Z{?j7#OTU5x=QWY{uOWs!0f>$y1db0G^d{t8e8q?0wLMFTOR;t9=YMT2 zJK3_v=ah3sIK%n2 zz;@+u$a1Ou%TaTu{P!Th%Q=vqWaxDr9OPbYSeIxy@9+WGpHhDM`^0COk?R`1^!ebQ zts&i+Gb}u6?shBgBPMf<`+M5DZswNO)E$X)qCY>2W2LW4cvjYsBg+lnbO*NaQvAWn z<;Wr9ZyJ+xIR6avV`J%;&MmN0f+eBp7>*(fBoTgBqOsT#&Tvg!~x^# zP*HWJOV3oho;s|@UYOfjZ5Jwl#gYw-^60BkJ8-?YN$A54$2Fwxm{Ei2s8P z^=@HBFrdiM>#w|@O?%+md}@>oUy$=*dh&;RX_@Q#0W}1bQ&MXdL*Dy}M{ZaEg;#+F z{{{z&`%ad$Oc#_9M~}%cc9u%G0avM8t=Tj1`aTo1v%6V2?`1iEu3h!pM`STx;UqAk8`eOlUkj zy4Sz14*r3A;ftQ1n!jzK$M;)h3p(`L2rY5T14HJae0Og_aTY3Al^V3!_cmj0$b+2O zY5cRB^JG9_BT%Aq;Ih8)L1)W_R5HxfE6~{BK1p+GDqfP#R&OU?S#{~(1Fv6ec458x4Q*+wAkm$EjI+glct!}=jX;qfoYAJ8ieR7G^dZ{N0!xb}6? zmfPGSq-|kk<>bcim(An!T3^5}jCr)A_#+S+oIP%cICzjG5GYgjW3|pmx~%E{ z%5Vav%`qO6Z6S{-d)mw{e}Aa>?(j!Xy3b!)ZT?~oTXgl{@`LS1yP68ztYuB1S9S!w zBwss~*mGntcKYov?>gR=UQ8e~j?EncPR>Y3jf$VITU2u7cQXIY!obdrzGHs41Q@Tm zjLcfZz9qdgoA=(=ePLkKdRqj$e)@@77e{Yfd%j=cMcd(PCw8BuZSr)~t^Q(P4*QV0 zD;X&N?}>jKW?uZg=7W&_Zmb6v@hhvUupji%%mYaXVD zO_{P1KkPen^@JbeR*oRQNj@SvERc{Dm1`hjgSi#H*AjKbK!&!Pv1>hzNA6XVR38o%l!B|_>%gI> z`Nhv?OSWc-JO|3fYa`hK`(QH<1@pn?Tlv~w1WpOC#G+A z;?u)A2!5ZY3KnadwvUg3N?5)p;(l?xx%^YLGlZU3=KlNq$*n*wU|8Jquiu6pOuZwXJxw<> zwq9C-s>;qz%-0en)d%0G{`TA-TDompS(NBtJzfy%nfk%tbwK}mKmATy7=+yT-ZbME ze&-QNW5$9z9l2dQCchC>o=|94wCvdNg|q8x)T0Bzw_X({pFQ_}%E67}PG6k_M3Q@I zIS8By_>#&|S-u)b)-3h8dbTHnL)p8tomw+g5;X1YevLUAju8*g!Uw~b4&qQ%|a z9X9SR#jV9%N(&TsDFuqVyW4r_`@R4FopXC`xC&2_$t0PqwPyCU^|)VS$L1(|aS^w~ z*ZXTIGklJ=1J4wdpC0M=n{C8@tLcR02wghiNW7~V? zQ`ML%jZsQc4LV5-%I&<|HPiztK7aOyls(E}13!^7C&{gf0}Y>-2P^1-cJ~>jIhd?G zE}-dMB_Q{rVCuOcyrzAHNZ9}JLo;EKE6X-l zM#oHazI5v!pi;i?i+*b@9TSO*HyAP9M|a-L z{Xr)!?t`c{)_n%WvQnv0N-1R0554pYMwB_** zCu6)Nm!DfY{=^qVB6B6O>(l72aYyV;?Jjrd9zhd0%Qz^qY7Q`^5sg+cx4AZaSWIJz zk(|KR-i^cA*Q5iI3KaR=q-?Jy`*CDb-V~F5uz%!S`rRt`&MgTa=kJ+kOvd+`UrGSl z$pj{6g!mYZR+_hS#pQOGN7?t0GUw^;`=4Y{Sl8iWz!T2L=f^3_JT8#+4(c#y{n!=>ilk1h;K zlQ}a|v2~`?LpsVW)0S$hZN2`obuPRI$}!*lsf{8W`J|xMXgP&8rYP1$E_zj}$DFFgg;pn1 zortor_wk`p9$q3}Cf?Q*m-<}*x5NEs4J=RRi_JoZZjJjxHt?D{$no$q%}hd{no<$d zS4H}mv9fVgB6;`i!+OiZnYSk-o@?jW$0tkJ^PK}yM=>%I^%b5m{vR}>8~{1#?q2@L z-3@oYx4b&DmGy@U$-)uMPZe4Fms#G5T}M5w{@+b9bR%NmaUG6TML-8*c?B>#HbCOm;N>-lV!>t+^}Y5KN1pNpNC(cnT%mq=sGG~U z>7rFc1Nk*CQQ+a6OQgc;?)-b)^w;;cCDR4cAi_Bgo%So8I0K;@CG+te%8X+Rm8y0> zip=69lbQ~T4uz;ea5j?~;vxy^M;(dpZ+F7-8Bqj3TlYco7Ypts9cjA zoOmC5i|rluu223?bTjY>snPTQXr zk_9)moeH>ow?}Hj_H!8CJ4rT+_*uq{=vKlG0ofWgwm|5Hq9g6|S)rfFS+_4pzD)tp z$Yt}7e$Y7mXBF5#*l!^te)3^zv3qh(Zx|>o=K_ZJ8(Yo%_T+bFIW2$*6GmqEJ}#=rX=~ ziSHBs6W0T4(|st-RxJob&c_HQx^)UL1hOXk2;y{?ckzvcC5qp}eqk`_c#}cOcg8p& z3<{{W?#K;$*L>v&3PA8e-US5A?9q6@GCB~@T>JygDLkm6um^%9u2EDjIajJDcA&&S zXXJq*p8+(@3|~{mBy5#U{taXVgE-MNR0K$FuXXg$7)oKzu(9Xi_mpzWk8=6mi?jt7 z=mLCuIzPn;I5+<1>p*mmA&_X=N$aEqP-UakZOYZV$FygmP*JL@a92i&`3lBHzS@x5t$R~xuOSf6fmuwX`WcueW zx(ve4U)PWUF1|ArUH|2v#e(M7#gB5eJ#-}juzj_T^x#UlSJ`7M|4z7IcAod@vqv1Y z7byJep6ONJzk9l#F!pnrHW#(((}{1(5hOi+fLBUELB!tLxnW3l>02c-|7$Mey7?bL zr80+H%yfSst;Q#_BOS9cL2P;QlHkGj$oPOyo%8wmXwJWJxR$+&v@BPK+HpUHxa}BO z&q`^t4o_pUP>C5LXYQ=SpX2x|#ijpU+Vr#9O*Fc>|K*;!U|0KQbMwRr(}SeI@aDK$ z1?{AnOmPr8YA<@1EvgD>u#C@fS)C@P#FUa@{78#F-$!6HAglvlc<%QV^@mp3hoNE>j*V`cEss=QsE?`q>id#DU2Tc!*dH=Mj2)EaY{uG{&t=}@ zSa{|!@;>S}=_2m(g#p!Un#%gGnXW$$2Pq^KT+t6fBHM69(ZbEDvWmUz-(3BFenCD%d~q|($0+CXHJIqY=U z317Lx^#ZZmv+|}*0XM&^+gK<^HPVbd#OFTHf9k#@EQ`0atnW%ujeRi+rE}WcLIp^k zwCbzD2A+3r9#@QV2D&d%NfBVC5W{R|aN^ss(Bx>jpPU0G`hr+=hYl29at&zUu@fz0 ztq-zQ8dp$8rXt8bw~r-Z3wv|%*xm>3peIY%Su2_tV3li_-!#**xjHIdGQ;lwR|{}; zduEXC4#^$pwq62E7iB3lTegDLx*52$3*oHJwdH4H$XI4-S<*ecUF7Fqa&UAE-?(^( z&JO_qsi)(`I0Ltzl+J#5QM{QeCp8uy(}ePlGtEjTIK=ncfU~@m7RHoB1J0-x<7Fr} z{8$C^G^d*VC^_9$`1W@nW7KcRIOrm}5BXZ?xCT0D;ON_!V$MoB@!0ZYw#>VhO{45h zfq~TPYf=cq`NKxf^56kWwjRF1(rX0O&a&`Rc@_kOe~(MEJBZRzJey4j5zQEq{6S`p zS{!oW&eneh6ESG8yUp$`)auhKV=$SlH#0ekxB32od1%s1;7Od+6>ptPGTph$@}v6x zRv3Qz3LrVazu_dA-sQ?uxTMYWCE|pCzTKRi#BH%1_W{U4G|p?p z+=t+BN!s)+=#@0W*|aY;9n~cJ0aSdCB1mtpAIRToJGRoOEq^-=fQZEeb-MkNy0h54 z#I38JVFP{0YgS14(+)KRjvrl#UfNGN`H30bd%|q3%^1j0>stIA4Tn7+e6~)>%+){_ zfl+g8VxUeed1gT>HbMOszIM2&R2k0fQL08HrYvKj$xnpQVGtNal?497uzGbmJE1%O z>PN{Zg65E(STpVHtP%_$F{#f;6-AR~-nL)>^)*+Bs=!g9zR^&5PO{Z3wY5ZarWiTD zK2O8%eA=>~^iEC2#OskFVejnRtMQe_XqrPrIk~iyEBYW2|1WtTc+L&CI5K=R=$fT@ zPvQpT-0pqtv=?>R?_y%im?xgL;qOD~p-qduY;7o;C#jMTyP*tS*ue{Yqp!v;dvJJ} zadgzZT4>bfFucAptO@tqK;SB!az_+29Yyy#NB!#SS7RS>!u0U_{udsM-}GWf=Z{fs z8-00p7mv5dRQSlxa0AixCgW8b@0?Joui&UaWV2#UXlVJRa0u8s1LcGksd1bZ#wt!m zssXGS4$r}v(Kg=SQV~E1ZYgrQ*lHi=xkm!#N)aki(m#AK8!uB0m#_@PP1K3Cr9~_TRfrM!wDO(?pgwcYPSEA8wy_e8+zUHv_ zYKkQR7w%2E$a%Xago@T`GJ=q2G_%j*j1c^hAtJxa%w|Bp~#jmn8<4AMJ4-}7)MdUTN|vObe}JIHBpEA;%(Y|v#!9w#{B@8UZL za6~N$SFhF*Y&m=1&@Kwiy>1D7OBG6ebO7ry&I#S(;#y`!rH5xH zA=X|B`II*W6y#DYF2dHFXOSRG{BhX=#EH0x1|$?U0?lAyAo6(`X*mB*V*Oo8Mye?t zB17vFO4h5ttuzV6lV7bA|FN;upUSo+(3(99{`>zxd{PU9O|S9Ezx$9KF3!Xe2Dq3} zq5nIye~}Kseo*9pU_cIs)wd8E|WE zKN(b*R#|}5`)tA%Kad==!ro!IMk7c1v33;p!+-F_<}(zjQSyXkI^)kV|GT{^bt1SK zTwh*W9ZX-PBY;QiX&ZdTS>N}7)rAG244wT<>U)0vFSPtDF3ko+VE=ne5pqP5 z(H5Sb(k6FK1{@Tt1`FPQFXL^scYXPtIhq%9$6hifWsWYhINy+W-~UcJ#k=X8zB~n=o5z_|4+k-!?G$g_=9~Z z>4*K8%hzS;+(=)Iw8ajP@UkWWJoA4>vp%0|ob6#`YFODP_k{D|Lb@T~axV-6EiLo( z{HZh8>j5k~=%;?a<_utXS$q}#61^mAk!5BU3F(zU4I}=bgCJHKNI`ISW~;6hm$N&$ z=wsV2XT3{_>m}^Fzk1ZAha%nHSYDPP?-{9_lu4t4I^P23uweb4C1b)~m2l?ds~^ce zb2L{eD(f~da!k6Yp$QodndtQKKdD((-9L;}dC^-mfONDPpQGDmNurV=^T{97{MAxM zw^Zp_WilT7awXw(EHlUX3oXo;B4N=2x`OtctT`pODR>V`I|+CUoSdrk!Y{t={oevL z{}U{?n{dL}uH0gcAo=xwK44GSDrD+$EM&TkM6kA^zQ+cE-Qc6ci;?~zXD zHKuLCNk9l&7(_S=dY#v@WmysF(lOKf1T%rokLZ-3CfeDf?H z^G;D3q(>1HT{g?wtKnT)?fI7nx1xGw7bE5srD?Do6?zL{kSyBNrDKh=4~a zgvyTlKxKJiPAF?W5wPqA`#5qSiZ`fnJMTgG&gw049zB6~kK^98w*QjwMD z4uF!*BFu4dgRfLiiNR5m0mN_NBB5d6rO20I@8w77?LJ`*&MZg!MoL#bg_B}sP+~zs zIpMDdSqEmpI-v3Qc0y(x@Ld!H-n5(h$fR|B0tTw9vLVJ!JA&1N4jf2z`EaZC@!ya4`#y)ab>b)T6Pnn| z|KrWoU8>CoUsT_l9j|9#G>UCl^LZ2#qR+W|2X65|wgMW5IL^-xfelnnmtkF$4vVQ9Y8!p;h%O6 zl%B3WUTv(~`(0S{d};IX&tv5#*FBm?xV>cuM0YPNHCqu_+d^W|CKSK9S2jY=@%o&( z1=e}egw>`ku5QG?3zzm@a#xGCp#8JY+M%e$5xh?nFsP@8m)1+=!lO#lPq()bm%?`m zYL`FOC;nW8VZJkd4CB(a{=n5!wbAxz)AQ$laM8lgO_htv`_mkI9D8GyAEe#rbDOjG zru)OVlD8fn5VB9x7{`UV&HqmSoT{T-f&P7Vvn68iU{EK&(^n)A3HxF9b1QN5QGATxGLcC#CIopj<`#bAl; zh*v!du?OLK3nBnOV_WMBE;f2z;xn!96@ePCPvsb1ApJ1fn)yjwq$ ziuEe9*7~YWmrx`*Y9*5uAtvujSCO}0PzcYsoSc4`({)nad6GY{6~+7^>X(hU?ZaAI z7(b96)*F5Sq!e*Je>+3J7b~~V@58)$AH7o>zg{NAHRCVev&NRUGA_#*qb?Pq_Zgqz z)VF@C@+92%_XheagKNu#cIuyc${bS!*!- z=`;UI%RvP)nedaw@RY)$neJN`m4xw6d{aBWC3+a{B$er|7-x72^h3`Ca8-$CbCdU- z^`>nYEpRL2W)o}jQ*iiG?e%B3`MLSF{JjL&))^I$N)(GH!F-=Jqj33at4K&v($;Py zxspUd&JwTS-Kd%1FqJX--@{+2BT=nA_BIVl64Jl zZw^&$0yJiW<0ve~8Z}(5?I~_zDmG~6f6jfno zuayRLvS&4<^&lx3gSK(!t>3K{X_C9VAKp7aAS{CwFPWEp z4aW1oTPql1jD5GNJ6&v%Iu?N$yLCa}HiU*bxWxMAX>l(%3Mg9ga(!Yi`?uu=$u%{m zzMi{kMdD&CNBUq{2d`_?ef*wD?^!r4Y2}3Ss=eLM8}Dhq#6VTj^w*a;;c21@WAvn~ z81z1&1V9{48R`-#@=xEON(+)v9Hoe9JWvowjhtdBqGNQ;sjEw$WmGN6`oqj-Di_6U zBU6<~D`a?n?EA@?S&#jwgO{78`4)_6-uScnaM?$%(~HY+eCPgpVS(mkJ@mYgq{5u_ zN+iU`gB05|)<50>z;@};A~7uejmA{Gt34+ql|Dl$~g zD;v^&Q+jmRz@djetcy8d!gBm@=WERH&4bj~r50!XyTwH3M&bjP-9BjwsLhU5dr!6~ zu@{m=Gc~xvo3ZS%h1zER+|8=^G?>wf7Sf z|Dd>&N0;=D@b7zm(pkyDMr(T!n(Z1dt=HDNxC>%4-K4E0lFGAnt@#d(Z5}(m#XY)Y zt*fFkD;ZYx^s!|<(4zPLsaOXn->~$TF&`+M*?0=hS36Hj?wDCAMKiCwNqHQt%6Nx2 zF+)1sXx}A0r+0RcE8sO;-lowxmgTN5pm)Agn&*{y+;tG>(Kdwn?(A_q&t1PmlY`Tr zvmtj384wXN>hjOPO(hPLS$FnOIrEz18jq|;>qMu^$zNanl8x5NJ3)6XuJ?Q~x=30I zs)Z0m6czkPUog>~%>wfh@8>C`4j{vceDQ~)@w-2yuubu{L&QCrx%Nc5niS`~Xr%-S zQa=jo??(l&gK01ojC%W}bN*QVtgiC<8zn(=@Xe&ETEFKb;gedFH}0lHA#2;+Le?Hc*p;lI zL>~|EU%s>C>i+Pd6c3v4CN-d#>W7aJtj_z;`U<>Gz+ zv7_Unx6p}~sM>A!o*q*lHFGMwtXogMsqGN2Ulf06U{{gHEsEUQwxEWjubR3`PVzlk z+7!gJA683zX~YycI821nySst)jpXIFdDlE#td*%Tx;XSb_`w+OcaQV=>N2-=rc>u< z?Yw87FY75=TZ_%c-pnl&E%c;V5ZaJi(JPlrY&kSmMz4F1hNJ;4EQr&bZ|nEek6hPO zY#LGm7vhNn9urBXahxy;pad234H~T!(l1+3Ki^lU9!gJ1l;=8_K%8SbJgyeqmv1Mx z#`k-T^hPik)pd2TN7!x-aEmKsBy?l1s8X-Ma9F6&f4!6KIOP#yv}uY%*d|l2b5wl2 zTEeadzN@IuqrPbtDlf0{D7TnvB7x?f7AeKANzlK2c|2IBNT_{pDL~MRj`jU66xj;Z zvVaQ9pMNT6peJF#klZkh|Evf*(}k9;iA2Gb+2t#^=%YF9!tt7of0hL3j4F``g9Wi% zp5p6YmT1`?mdBDo2A>C0hGb=lsXEzGROulaapyQV)WRaL4vaak zYT0(u`hMvAV8SN*ev-turNe^Q#cb;eHJ|@>w;MixP$)S_wj$gijWY@r3!(+loXJaR zYks;y$)nJ>{fb1wrt?|D-}+QGT1Xq9wxx0b9KIhq-pqYmnI++0j4v|@OSJYr z%1xF_mFH3170=+9FIm~xzK00#@%1xFi!+5~m+2+S&?+ah#lC}4ph>{p(RbmptMKWn zT~YsCh;TNV*ENmOehF?+LY=>CjyrC5U%RAbh$ZmFI-q)DyfC$~pyi^y z0<*Y7b(Lu{w~&elqn-0i`$wA!r3`x`fJMrN!oh64;$ch12Fc*asySZt$ zJC^#d%mA7k92R2Wi+m2>(n)bs{h7~=->2Q{2#1MqVieCm8rL}k&st;T+)<)oX)_5+ zAJ0~Ul$8?)#A&}#CA@8j=NHk;0)t}MsAc5nIEO)0QxUzEM^Nz`<;W%%Q7qoKSMYJ` zmPMTz2<_)h80}5q&iD*!7_7kS5D_Xu`9PTIj{V*`47FJ*m6NSTMqTE}25gep!rvw7 zP$p3|ZY2Q%Enoh`Q`KF)ZnEam;+5-#_h1tr`WeE+8$MzD!-N#%$$4;&RF z+TM;BoD*{+u>}n0Ki!JJA~LjH7MQ*%L*My6z2O{yMc6bjCMqs86VQ;tpCC=h4+fzJ zj{&Qtn#0(f?tu|c#YTDwb#fozlMsb2uKfvcP74rBq68Oaja%}QR+5Zm&QdImG?7gO zRl*r+B=BdAR!$C%3T9M9q@q3x`V&7r2yDVnKsPT>^g5|5MAaM;GQYY82@%kQ3*181 zX9aP=O&}h+>3S{ZZWKm5rzSze!GBn zcra<;b|(Ost1%t53@}#(i7$m^^;v(8LI%GdW+YcKN_B{g0!2~fa3nwIbo{x59^s|x ztpQw-opHfL`gJvWK(q7zwUmPN7jgXGP&jluc?Kz1NTRf|V9k6{b8*^1!hr5~idkrK z8?xE#(>G4W-Hhvy)hTnqIoSLl@{19`C(rre~+yN`*4Yc!M7l2rfrV;t|sck->^WEJ2)R z30X000406eD%q>ns-xncz@k$9WX|miJ%r^77?fbe2Joc+E-3+`3zRDtG@aqy-NRD5 z8+B<>(e9p~I`|Afbx{=_JGvPP;u4GzlR>AMGPfL zEfiY}PNasQ(0vosTM$IhdtS+~%PL%b*hLe|xd9rp`^YSgQ{D7?7?;r-Y7QQ-KXAPw)jJqX__kDXsIHWqZ7L{qar{^YpA zrASCMjdwl{n0lRko>Imb>IXyBZ{48$bDUu{6+PR#q@+suz8RohWWl@>>Eg{Dn!{9WKL%tp@>v@=A~t6d<_RUpnXu-~jeZ<*%jovwKMB&VZ_Ov|jKS5c&{5R=Kx^%q{Mjc; z_}irhI%O#Vu>lqi@b5Dhn-P9MmI%ruGZIA22zVnknG&G4_rOClnVhkF=dxWv zU}c>eh%4GV6*ih?m(3CeNMT2Qd|?kt(j#?@`898CHsQ0q_94*?Y6b&}3|a;kDifXs zkGrmiw5OSoE_0R;49bGfV%WrhxqY1JU<^7fui}9<8{#rYuY_Adj5hyUS z=f|w)SMJ@r{GV$K(W7xBl9$5TLSJHf|01?2m6YTm>=v_$GuP#QHHg4W4LH+5{X7jN zSqxH%12p0^$UG4uNiv%SiL=~jLgPHN)YI8E`!0c9x+8ZL7+jtL1On8iaUcn#;2E1! zD$O(hM^7av^68EeL#E*Gb0TO^Me4T$N6mN(LYT)srkVW)*i?G$P*k&*lab3+D0tReoDgCBj$t(O;c@Nk*@d zCQf}L!pVLSD`(s}vTj>5$g#X8^uA1NrM|scYxYk<1(UM4&MGpun2hN^KHNSMbXubf zE2_Ch;XLkdE!{qSznj~pQd9K7@pt~&gEzJmxQE{9yakn-EU(DudvX)i@ZtHox4THs zQ$3l~zx9TvBokLTh5Z*ZQpw{5|A_xfK~{L%)8{+UPvWGR=K^uLsQ=XhESR-FqgM$o z*YP-Fo4vT5%y=3s?wu%-p;jQx7)ihfyky)rqc&yV&BgqDamI2BREd9xYrI~$o68OH zFCToHnw9dfj(7Vqe_@{ersQq5Y9btzfA;y!JGZXou50;GNdT94s(mN_^kDw^(H=j} zA516m<0xz%+d$W>^yQ(=84**$L006a*A7#;LTTiCtHq1;0t-H6ha{Q%!@vGMI0~9& zGF;z2@m^SOA<7`2ir@#~$lpD9Pr6iy(aP69uy37&x;k0lC1t_k_gr^qXXVi?(X$>s z-fWF}e`^v9x+*{siO0yuc^LPfZ8W%~{=*EF&S`oq*XV>ZWf1Rhe+XtCsq6_vkq~y< zMfLo>>B&4Z7?^*X<0y5Ub>98*dnkY111d5)Vq`4qAq}6m5JRnfxx;gOX50Kw!bQ?( zF6(AJ$@K{H8h-=-wTV^^v0H_pnS8uL)t^KU+Hk_a$d+@;Nwa^0=< z`1f$yb9$-j&!1WA-E32A({f?JGvBf0zcl$b>16e2{H95f7{4_s= z|Ku34-pJ-ZA(ZzwT)Q$4wp8fnK*BNG8p{b&7pytGKkMC`LlOn?jCZnSGP$(;Ocm!@ zchKe_aq+8LamLJ`^<*|8qdfm*n@)6)p2O|#WZO3O65td7laT^Q zeq{Lj)pAx~ah|jm@5bXwf~k*-bysE1wOcO^Yqd@f9^zCLtN)4nafbTRc1X{}P9rU`D-}lk-P8qmua8U!tb=_;xxlA~N{m0>G!phxP~W zdMRBUf(Ye}l zFjgYg@jk$apL=fmWp&#bkyEJY%)YmjKEarfqDr!^R}NIn*De`G{W*jSB5_RcFpoqH zMo~#0=uWZBFxrxiGtreTXBumr<)Nhix8=SDfX3^`nYmbU|6hb_OyJD-iOe{-*Chz4KYyupTo&N7;Y zkiUfUqd~ni>HAS((D_?;KEC|84#rq4+(Y+K_TtLlj#_*4(bT)ot$&;E-!lTYo2!%u z&fIsxo}Q)hh(sI;Jncl-D!m+E%b>pgRiY-FC&uehD8NNRcc<3!)B*{Ac=&)e$3nuY~B9uNMozgbT}7t9Je&Ks$&>+i%EqhY#bR3sy= zf1pjOw4PpiYeU`hZ|>Z#}#k< z>sn5%nME6YcrOkI<*n;aNx|+-(z6*0g9qO?FT%x(A6#3?J0n&<3zWJbcL^B!^?6|o zQQmoXK*EUNL-XqyLfzFZ{$ROXOX?vP?tPh5oV*kEmW{h9+|xDQyM8PRqf4K%_TyMG zk&TosymEUf(};y3O=7EBJ!+L}W2{gxujo5+`*gZWJ)bu-20q2W6#Iwo(wU`0H^cbUxr-*FK0PF3}fE^U6*H>2El8V ztr*`gRbN0?=s2(h|1BUr|5I#2Te5P+H3}{kp+ zO7$@9h2H>ko@pDY@)$PdbfA&+p=R}(`)gI?uMjH&m_#VjR(VEoh4~zR=TgjE**Tnr z-?KRk!%HbGlC;sug-H2GjbnqJYLxvU=BKqUz|moPcxWtaMp7=7CBfAsPL|^9`BdY4 z<*dp!GAMDX;o+^u?h2_c3@;i#H5! z2R>gY9T1ULFStpa^QY&MT_$xKYLfQlEBbjWj*p)hwa1sMy@WjgvArFdr1}}f9XdE} zB;Poh6sb7=VCG13cDKgIPT`~zz&-TlT671qRi|~!Ofs(1NeZuL)}}uaD?gz*Sn%u6 zkT^QGcEG%7Xll0MA0)pqG=cv)!n47hzxTmF!B1MblIt&MEt;F!N!~cGP;n=TYRXcg zxTAzzgecM=Q`qMaA@pEQpHa6-wfFf8TJJA-0>3Ae7Aw@?AYOUltZp@rzCTbB7Uki`xAQqjyBRW5Ox8ibNlU^V)!p6ZbrG@R z=fOd}!~z4ia@^xolhgBds9XWvZ7Yk(=Q)mjrER}lM5G1B=jxrE+O&M993F{rcF^3g z4T>%AHLPcSfTizVZ(aOSu34$^8VWOHNM)9a)xe|sNI;%X2%}ao3=`x5Pmw8n>_R*| zgyR^I4W}rb=gxyuv5$q!-~N?ONLrR#0Uaz`=kfH&<|{1umkQ05N8-kmDqg?3Ae|FO(_XJZ5ZpM$WYlts^QcrDU}B$27J@-qu1V=ae*=LS2@5@pKA+?+VDlu{KyfQhY; zl;II(!q(KOMG^5(eiYG!xG20Wqo7&OR_*Uc=?(*AeRzVx=&a`q-K{oWh3%xjZ7V!?Z;9Sw_j2c=}k z)GrR?y6omtE!-0c(|>z{qEl0-`qjX&U=0Ol{~u7x6{HOyPjQ51ALzeT~@>`+1N)h-iE?4?|;Mp zjHTPk@XN$0W zHue;DibO;TXiVP^*xknJEv@Bm%^ZiRO2jOA=e{eJ7{=NB;nDxAQQ(FGh5VetE7Ri2-g8grQYT4X(yakvR zPB-01@RC;F`n<+;VU%E`PD75gT=S9|G$CE+gU*Ac_+F!PzCM4PXZc8VNQ87_&h6#^aCZI=3!@5Zd6X$<93Ph4A$jOqSX4^sYIn9T<=Yg^GxJ| zch+?j)+(~MAXx&Jo0ia2Ng4A>PqDOPS)TB+3j^7=#b?rBmBMLCCO@=61LjVR>$NFL zTTv8U9H;s}67{;1u2uVd#hHDrB`TC(C8LbIHV0T)A9`4y2$>%p&M&HLeqrqjH3q*!->HOK2DqEV$)_BCitk6K!+Mj zoxWEKtaLCk@dFl24KgCK{quW}DXzbChdAm_fx z53S1-J6`7Zc@g z4nLFuak7zg-xtaGI58%=rVF67{1S|hU*lc?0RRE}eK8$Nl_clGd)xNZy0@opC$L_v zqm0nG)z<_E`4|!+r8mjJXM}p+CA9(}fO6o4dc-<1gSzj0Q-hsjWDfnqc{i6ymEyin zd}o8b`{l$P_s8r9=-;%^BYE&pFK~2!aA|t&QK0{Lq5dcehiZcZZQ=#bOLN1~F4M)~ z@VAfJ3o-KN6uG=&#Gx1w*}3oNSVk+?kvpCW{7;7~sS;uk$iyjtCmQ~~i23zkm9L?Z zv|bcx5YJhMg-=vwJi9&?{p`E~l#ZD#4h*IkkJ{jP^T!51l=jxoZ+>L&`exnJN;Sf9 zI3eK+?p0RvRjmZjK^Wf9dEk7Zga5J%4)|UTo85_Is7CXn%^W&RI3R%x>boz=mmPK} zysoz_JNf~N^A5+G?VtDd^`RE4-r&EGizs4n2eQBCre!wxei#S)2E}J91Y7a;d+0KQ z>7O1c1^Nsy0Ixe>05~}b96Od0|L51!*v*X%Y`Nxbjk8L4rTp$_xDPY-8r^+mS0)_< z@xlGFgA`!!-FLxK-SUH`-?fLLVs-Ny6dq4k&%4}cR3Z)Gw-a}m_%rVe7k8Ad(aJ!A3r6qWwLVcL@Xu5QV z-}fO_M^8;HyVh}|t{(xN^c4TT@^6#vgJ7X_o^RanY-L-E#}&Qs-HpE2dPE08WS5Sk zC>X3>?L3}ySyT|xlRkgU6sg}{Z_t%Iet+G$D<^q|e7WQif<3#9vYjw9Z|iqqsTgib z@ajERm|8A-lEWy$&Y}aFTn%Pr#(&W;i&vO-#7JrEB&9{M#0`N?M$S+=V|Dqx6k2g-a+k3By%Tq zrIV4m(-pk;*OBou0+7eL-)lGBgn~wwQ#iqSJ*YPA%RYR)HYquPP?Q|tP5AhBkG#m@ zfRP^9Nbe-#gdsj&#m@awP_kEp9@4&L#LL+*)5a{sp=GwAe080ZtR$KztDfaf>OCTE zCQpojlxPC>t8woeTs>XYx{bb#SR#Jd6A3%vnltp^Fs00#?BCyDArKk4I7fJKO1inSv; zd0iyb>%Fo_d5AKuO@$k&6Zz=C(e8J1D`SgM>9Fc_ZSh%!Bd=9p=} z=TUFD0LCCY#{@!kq_qr*=HXlUs+b;MocvNbH?0P@Y@Tnyxf~^PQJU<>P4!Y z;y>iKWH}ShoD6vIJjw5VZ)dt6kR%XLB@Cx^d0M|bmk;+vw;FPON^hP4Z>D z)N2cqDFQP-yvN)X0XUMqLqi%4NOBnGm?91Rx4Yl-qd$+yy>qH|Epv%W%5jw?(Xd3u*5@lZ91oy3i`FN$VVUFI7R1Pwd)Bq$F3QL&c z|q9hLi$Zfc4)M%ZL=J7Esj}KT3r8T5&C~ zwr3jxykCF>x!o(%Nz|rIyTJXQBFz z&FJ;pc`dBF>o!+$=$1V<O8COxnv816B2N*F7|UhWNB>hu=g{ z+u=-oB*~R3=}|-E8{Sbqe89AT{kOY=lUEJOt%wiQm`<)RS|BLQtCRnJlH+P1Kq7gbSX=t{n<|@C zSMw!$6xZ?7TX5;{yQwsWNpZ9=GMjIKNn?FF$e!BO66ArH@nM{?XntZuzhBQ2XZp2} z$*$$Iw%OgJ0R;m^RBfu=?E;$3HFduzuURL~h+c>FGs-YikHnWw%bjOdgX3kA7Kh#+ z`b+F=J5Dv%X_}sSTDteM8g|8)muI_fQ4>>#MdTfyzQK;f;2$=~9WGvNPcvbr#iRlv z7!hCt(TcV&_iy|^e7$8@TurkzJZRA1?l8E!yF-BB7A%3_?mh{UV8Pv;;O-VIgamhY zcX#+Uxz9PzectcA-aqq$i#^j_ySut-)vDF5r&PeQPgneBnwOW>tY zy`)p3v9l()XwihtSa?l-f6<>F;D%u&V1ADwR*`qB^-uf#>FglX&RwgfG|je z;CgHahlJen9%cW^1~OL8n;DpTSlx~J>GfxbhPj|X6k^#>0(fk+DbAq_sA3^cSG3Jd zbkZU)(~49rSIg-RXZSt;@>M21#2A&>(#(%S+~Jb`>blA6Uql z7uD89`p;Y?gzrNlgc4`&z&7l(gv~RFsQF4$YZ3trP%s%&Ne?Jd&8JSi`+%_qH!z?B zIff~sXJi;_8(wyNvR>F|AqX(id1qtPV!i#ie8=b#?jB)+gfU^TkEgO|u6f0O+eois zX8Lyh{#caH@#i-ZcbHCX5EdykpD^g;%o5a64%^=Xv(h8BXgqOOAQgizNr}wR<@wr? zWMhNxeLAWo%7F{P)rfpiKGTa|0#qk4XAz=OqNuaw^SDYayWT|WqKT8+VJ7pg)nYBC z+z~>hm^qxY8}Qa+6riZ%;7dVXBkcT0T$-ucYzxio7@Vy$xhw;M4`*!|nd7mXoav*$ zjJfGb_v3uFlUmtx*~ll8-cWxd!|-kq?LMV!@%3bG*QqWV0S41z1!!_tzc+$@d(R^m5qXtnf1y0w2V3uQ|28(7VO zxGcIVrnZN(SQUCo;%0R6U1Edba2;$Z|B_aKF9S61i~Eix);Z^lSIBZzS8iT(9wDu*HGv z?5seP{W;ZL`7?>&6H0(`=Eum9di&!b#}CIl+E4GKxu5*^=OEqIiRwun(<{)@s z=oLXI=)A(wybq+s zSK#5=+DgM3X-vkhbdc)t8zsO;6+=+RxY*kV0I z$Yb+|aoO*_caci=n}6UKXt~jGH_Z3`%Fn7l3bCYZiQzgFhfHX!!QL&qfI1PlKdQb( zS?KhlWxB%XvV~Nb!wrqd%`kgDeZaRp%a^vgXs1r}Vki56nAdJj|K|Dj{Mi$&IOAt{ zvVi$wvpd=DsHA>KhwY*sm&g7T*^~LjPR;SJ{{CV*2CwJWanrd!N2vFw{jVfC{E}6G zTc8{#m)bAVkI5BYE-oxZv4ja`wbDp>9gkO{WPL!>mH zs@e-@XR>2&!2k=%EfkXYz$QI>Pn-d~PpZ*i|@Wd`LKJVb5!u?RscYfr^T(r^bcVdIvamJzCCO%w?BD}!uZ}@ z__f$CR~cdB*^@T<-Uqh?r+KYDe*eD6FkR|@onXiG!Ch+#qSEo`w)@PZAxa33xXL4( zu{RP!jpLOhca#$&MYAv$O_G36OZa!oUHogy5tBz-f78|sZ72Ov4biiN?>$yPt)ruc z$CPUx&M(ZrjTjp{9tVceT?Z1XQ^^!3bKiA36ELVyp1U|7BdV!WUe-;BPjg;_JJ!@b z9Ga;*{V|XveJbm`|Bguj$@&V()*6(`nBmrox4b186^*+ z(T6lGI%veh6z-q~*W-+OWO*w(Q;u4cpRxU;wC_&V`Yy=^_YMh8?5<8}%NDQCr(xU< zmt5u{6z13$Du?fy{2sq>5-8rYA2zOswJ)D7zjAVt5g9ML|9VJ+tX67-5Qg3rsJ-r` zmc=oXABLGGyjtN-;{V7U34osQdk2B~qAy3(l$aRd6knLvKPPfcEd6L+uM*|*ja#<| zw<&>0FA6)3L{a<4aD2@_A5J(-XlS*QL8LW`c#BLzE3QAro)=z`kI8;ZyOFZ8l0hBj z`c=#-nhLeB{cBhFKoV@rhhS9diM;sGnWWB=(tT}5R%_CI#^2@@;Yr8I+4g=ogPRwP zkjvz%+<<6^Z7|ePvcT~De{%t5sc1y7IUdVxGyQLDGDRda*u&2-5gHbaMZbEe|P+JnhN+wVQVcXz3BmA>*dT} zI(I5pZXg=$^{)YR{2?ZFY6O&Fp_vzZ}^| zdgnnHB87>2um(!Oam+a~O*@iGO|9;DA+mM<%>@3)SzywmTK^5wnC&ocd1R_qnW6$! zZ6tCSk}M}ZilrdzA7^^lXX3wvXns4~du6;75BkKZEaJIlBmHYbj`G^4&g4Kv)V9s_ z=EP_zZHl!7iE94lI?ghc$M+qm@+VKh?wsoaSuo0NuPhEui&GBJWiEUP${d{!fVC7mSJa!a`TuYB(RaK@fMa|l9a#j3sTg@hPQpIr;YcjJs z8OAt5XkWFpUD|;zpJrwH1m1C>IQ;_Kp5S)IQ`SkGPovJjJ?T^S&wUYklDuWIQ7O$| zKB^9VW_Q(3=u?%Blp@GI`Xh2(;ZEk?%^fM{>ef|8GHVhdRzmTT@C1qc6Ttrs$ku40 z@q7E;_b_U-rNPzez1jfr(?AZvLQ?_+@?f}`{5MHiO%fD|!9A+u#hy-1w7~JDWZ${Zb;w5*(>O#i-H0%5VMq?IH-CmC93u%)QXBf=c-0nVivnh z>cmOOgnVEtLXgIIH_m6y1Rf&bt2Zjt7*>ZGznQFLGZM81MuvDoj=_>Yt zC@BtHCWGcUFQ_ei3~1d*srMI&&~PeLKc7vDzj~;}^p0{X)5S?VJSkYEkbbr-P64A( ziMgbgOiq$&?rL@C^l^I3ecfOccrPc@{fzQiYfet$l=lrX{3419Z!Rp>Z%WVbW;iwM zj!uEXZ=}BQ5|czh&`Ndz4rf;x z@ylCaq$Ho5{q{NYKk3FFaZFDKIw?qEw3N(|IBB5u23K{OxE*c)3hSqr6m)})LTVlR zfoX=R%TgpJb2%tJ!7B8(^ue+O#gAMtCj-H+kK~$h6F+a;x=vl8;bX)v6TmRo;fgH zdDWvrqXK*mef-&RT?h*O_!29ShCc80pYt70bJZFpMGfyeODM38ee9BXwaL5|-?%eV z$fz}gD8KcgsckD3u7}h&oBC5jGY0?%{?J+q(8~4FukV8<0RZd-?!MgrkW(t=g||fnu!%$i(_0YzK5qM z4Go1{Z{{yQR;E>vKQA+8EDM;9&E>l7wnX-IMN|y#sO^)D*K0I{PyPMUwb66$cZ!dWxlI8y(7-?*>avN1|&B?-| z#p4@?-66L=yGX~lV`Gmjng|9M5)^?+YZcm0n=O4AQcD*{hj;|RCq&^|rfMY%T#q=4 z38t?=NR%?XKXYWOU%w<+FqALrm}DZ5r!;!c#++6?N8UM5Dh2n3ZgmqNlg29ek<-gx z2N|qLEnd{V((#3L`Vt%Rv8k&m$C!(xzg8pMAz;)NdvMsOc_&CXf;xJ-&GBb^F^!MZ z7mlG`zeMEMOonMk@!)FVKX9`$A!4Zjy<5)w3+>-*&e4s7I)zJCF0Z#q`)z(Wpj%Y% zJ+9)9!fDs%_f#|+CW4)H5D+#ND1CF&Ra25eve$xt=EPxx_{X!`WDO4RW4vvCEhN8Q z73mh}eGJL5Fbl&=ZSQaEcXQRQB|*us$&n(@2KePRvR?%MbyPiooyJqFnLe9-A06tO z=jewuhL@y792ekp5wQ~lNAgK7a~yAqeURUX2x^#ZL^p}&fVon&O6Zk3iw0LS4@1xL zgoqKzzQjrbVu-dnRDc5;$`8Z>qVB(pRLgBs`eK@#RrOysLh0D6Seg*#bENQs7`ZGG z=)^#M{FhLxKKvyf|EBz}csxdmRA2*x(sKk&j`CN6r?EU{vV*mhn-1m3)<07K|7QwG zK#_#VDOCq(9^k7qWqEmx(l2nzP*>_mFgK7;9+)a{S-wXR=eF=Ggu^D;H*&B*PaP_Iq zue6XaoyH)K*C0D6NSVhY6^(K$7VHrNhz|y2_X=VRYZw=H*^UUxeNX;OXna!vI%^0T zM;alLs71Y;cM=61z(S@8@i}Pc7AZLax-TD+^}isX|NS#!aZ*c2Z%=#;uB{Q@F;SHG zzsG+(l%oy7z)W_h?F{*Zz~AE(09s)MK`x&_mC54Iu7y9ok@yFT7per<3fDuSG=Lz} zRI#HplpzaHAbU_&g-)tV&caT|OtcMWo*IAx;pzOZSHR=f4^%vav^dPyDA>S0nEVGk zkl1>d8w9ax&l0hzWKy^5fSKS9PeXC&siXXMr^DBWRtw0W8o7AY4XaDg0HZULYChyLcJ-e}kH7 zmAF*V)?}IMZh)RRl^rB;FMDo}$bnNUq1G;J6)EHnlt|IN_DgR{FwTX;d9PHW|e zJ+zM#L8qaRd>TAkDRO5+1zFaPba(xePs-&>xgczsr*rL5cd~tGNz^kxt@8N)+H@yKTD|kZPwl0YGb}PIF zC^?8LCCFpL+FRa^3GNI@4i)4p}rR^CHb6ynpY{W>ld{ zTfUmlGEP$_?JWuFMuk9Yj5f^ut^}N0bLqdF8<6I9ES=w?YKJd6C?|#w#!7fi2lZ+S zXL|eH_E%_d%j3&HV4=e)i!Civxc#4$vB<~67or6g;C&huugc;{)3N0!2Mc6MqpNDL z?3AdjzC?Qn;|XJg$Mo0MhL1el`Zr@`Z4b4!mMoQ(m%HHLFt;NMzz_g1fOZ2*=5wNm zZ?MpK?$2LFUTwX)sbSh8ZW2S4+gHb5lz*(at9wPXuRt{<>@K(LhB3YK!rLple2jtrU@5npW#w@##AyGF;>K)o$4`#_6I> zfh;)htBZSNo_VR>{<%Iq}SfHg}*c{AfYV zh!`qPdDuBb=vUElnXCqmEdg2zNP)P1mq*lZ-}!9zM{f_F-2Nd2YLV&FE!QE}UQTxh zGtE9v&TZb2emwU#u~SES9Xo5j_il@9Ruj4nG}LAqWrl4R-!p{23=;5FK2J-h;%1w? z4kz?|3LsQOwGdgf+5vOmyVUsJi;&%~N0yKh3EkxFrVEl8wZ8AAjdVR;vQ%2e8hUO} zlDU4kZaX+|uD};?=?{(|N?gdJ``+^9wXmbfC}44Sb&ie$POC0&QU4aVg$&`$Hlo2- zQC3=7@Gu4~dhJ2THJ>r!>%q~7rcR{!$$v{^N+vuK#ginLe8b6Y2)h@QN$ma8ZzN&W@gt9cD}su|7=>`m9$!M=Bb~IfQLO z_PcPx5p8GuE#dkzOjIIp4Ytx=n? zrA4@!Am8|Lj@2lwBrl90N8)WS7b1=XML66)@JWfrYT90?Z+;Mm^h8X5ITLKf(H0i1 zn|7O_gY-VP(#LF`o@$iO@SH;9U<-#2Z-)eS8K`=OnSLu(y}plQr*9^ktdnjycl5TW zl;V`k7JJD9n1RFxAgR6-yNCAvbpQi+L;K}m%Cb`|9QJGO1gnX(DQ>C4a9u}fy@3Lw zSC>%875W~lB&wLZ08k?Bh}hT2Z{)$GQ>oio+wSsS_bY+SR}UeA*0KVs(Xw(kOT&s) zEzQXfP06x|1oHlEXRIX^-q%AlK`ViX%1jb)`QeP>-52zFbh9Xv9&LJ>%HM|db!KoT zjmx|!L`P{F502R-A<%z-HpS4A+6kB3crHw7=MFnhp@i?2X;j&g+`KVzU>8*heA{eg zrYZV7j^9YL9qe0caz{}@b3LO-SjrEtUr7Yp?!4FcKVG}NC8gG59nj(uEyM{Gv)(WA zX_yClRrhg-Ye$jyO=W+w>u8;`{U|=yn>WF>fITnqoswZ;VPas=xKLSW1b*TLBNHt9 z2b}qvUjfFFQK7^s*M=D>hQLF`(`_XiFfL%p+6rAKn00uRNv26{ZH)j)R?hyrvQiE1 zogb4f9g4nB+A2?M>+yoY`j+r!2{OzD&RS(oN&wHLcyDvlicPqU0o~ba^es4CD%HKZ zg9Hr<`fVqOrv$hrdmFgn)1r#Sc|=WLl?wyumX2_7#qy;L$e^J)Lwg=9PIveQ8yqHw z9d9KXDXiMV!Gkdo%LlZ>C@W8G4=>x#OdC6iC-(%D7iG%D6+Rzq?I0l_+Qjv|Uz}k9 z$5y!p`nzL*n{^_msN_C`*d6{VOdt(}>y;@XngSZX+nT%d{B)zOS=(1|;akos&oB8^ zm1IkFzcqA!PydVi%&&&qN-DVpN)Z;EAm?b%!0;R6CnTy_xwHyKd$>E}1uYP#$Ugiz zuE-0guAx0MY`bqxEPN&)^Yi$e4KO{?h&7gBJpNQlntlYC>Yia&qYnDaVi#iY?YP)H zs1$_mS(o-4DsOs3z;UChMxwIdWf#SZal5O5|eUYWGGmqj32iP!Tml+~&RyLlGN2~7->Z4u4EA-!3p?-F%(YXjzo2Ez2 z^m_XtJH{-S1Z$q%yXvs)ZbZH@nOSgw5J8Hx?CvGtu2Y7xmXqFtFF36F1gEy zoi7Z_m0mxg-cI$%AY{dG_y-e(OSLZMiogSh3#sa<5vK6ZkCZs)KN73vF7U}JM=z)z zwTONaa!z_TF%@as=k9$S2+>`yI^>g+Np1W_Syn@0p#QJ3O&Ucs>?1`r2ky!}$Z8-| zt>$r6y|HMYlngPGG;7b&&O1V9d}MT}athOqf2O6oF)JDyl`l`_ROks{)z-@2(*{wvAP zo?y~%p4bj6Dy2%bJNz!`{VjcwJY<0b?dBilfbRPklglKfgj}r|+sz+T)1O}2=Gg(5 z_Ka=)=E2q;jeO#U2;{w0P*_n3qu1l}+C4PwFIMLgu9RKpH7Ws)@uKpZAf$Xt5~6`2 zPpNOcH{eALjTi>f<#OHQex++ZFXARyz_kK%vu|6W{A$1s4*fm^-M{HHnM~yMtE$R6 zV^si4;QsnWB#Hh0DXf}kjBd5f3$Ihq#t-mM@0-qe^hlyF~ zX1ox4grrRpABdRU@)9o#UW+binh!5JZE=T6_@jaDnJc&c_;@|7bsGoD=wcfu zetwc+WO$R1{9VU{>g_%MRKaQZU#^~dVd5XMFtG)2b=UDDFBNc#+!2_F$Y6I26e%Oj z*m1&QkT`KteV(z_MnG|wquWkHqNKwJR9E1aL8c9y@jWiW@6QLn;E~?24#&F&51A#5 zYVdwqu>vQu3jq!lKhP*3&+;?Aw9Tx}EF+zvPAlOc5^;oZD%b%fs*4tVx2Hz-1NCvY z7Ff@Qk!o@WAtX->6&%e#Eux?U!6>GR?oukF`lQ*x8l9f1(`bUB z{0R$5!vQ^xQ^5vvc9eamf1UB32E(ER!KHkLYheHAG<_+nHZQ z{H0u8jeh+6@F<7CCqdZ+1r-pb5D9^aBaAmpJmS61*Bf>CNaBg`#Qyl*x8rdo*igXY z4+p&&(l-7VUe&wh=$~3wN|Ym77@g?RDY#ib-V__B9s9;1DzPDdi2qO|i*hxhHNP}= zI6wyUXlahxp?{9^mRw3quz9pH>m1}lQ4Di^KHJ)>cxnF^-6rk9=bm%Anfs?jVwYgH zYEu!DVEaY^lYkad-T1OGO<|7?uGVpSw!jc0qg1kmzb!agF)B4V zD`M2#)e=+-ocTBs+JSEoC<^%QuR7f$ghSq4`3y)0Q#`=u;v`Qn@GAND#!$~fK|agL z%}-?(|80!1dt|p6W_I}hL%7WH13Y_c%k}18Ur)P{{kUnt&o8LePzOCIkVo~z0Odl+ z&)VaWnNjN;c8DM)e6`BUCa;q1l*Ki8&x}O(aJv1wrJPGCa*%3ljEnK$y^Z?@i+~KG zVy%jYQHDhVV;bWCP}qY{P8i^hl~S>$H5|U?N|5q<*q&h2RJ!^4+AJ;Xkp+)frig#WG28yCPkHmAY~rfEWDN$EaUu*b|;@rGWtrzBDOaGx%LHP zE_9AL+$O@%qUSU=;w!bcm8$1C^$Gjy2y!lYV5iA@^J6ZkU?PxPPYRE?gP!G0&dtclcT=7W<syPJel77=qXl;Mf$|TjpYM-c4_3?wo31`C53;fPrTv|%?sZ9(gcqh= zN)RB2#H#lZa_4X)C@k`dF1x4zu74F{n$uQb%DG11;0?tKjIH~M1{zRS8G2JL75^d* zL&a*evDW=xU-1c2)@2X<-&_CypaLY z=VNIOY<#vpunp$Vu>lQ-_p2W=6!F!2b$M@x-ze}R zAEt|U`geG0Cco3!;YD7$PLs!RcHEe~+$~-3++MwYCDM3BEV29ZkiM;?9nY>YuY(Ba zog%BC7nv{n@x}G<*i%I8lSSksH2R^}JJb95X@Qva$v>x!`ORf4t(%$icR=MPk&sdNc5UgSl*}MVi9X7vnJEJ=0|X-eXgd&tQb)FjB_) zZVzoT#hv4<;m!RN9R2?T`O&G1$h3ietK4N}k20^x1gbtQORj%(0qRm)dy=9poMu1* zZeow?=BB&)lppGlc{09qH)(j1cxYp^Fa0f%b3L9xq#r8orCe|nu|TS)E3sfknFcoEUmoh_(@Dtx->A&+pDd*apnN{mMiXX zitRuamweqsA__CdTa}H?GP3BhczGtd>!yp14F*pBrdS-H=`1-pG>A54wfqJ_=3S?K z&{Z2L*!YmvcYIl-*?vo3TNrLd`{ZI0sG$RlrJnXIua>r}lD5b&8~=MfS*O+%9>cH) z!6&S@H|ze_uXPO!4%HnpO~MJJ+i<#+&X0X4pinG zWBVK0b$3K-Gv>GcYxM3!?&iqFl6WWN9yVSZ;La`#4pF7DBDTW_A?`^I1D46o zK?VVhGjP^p23NyOh@7CHVulhwQYF#3vfA%8nV+D zEKkf?h)fAb?^5DRc+ep_XqM-oUHq$dyrSai`M}_n2e#SLv&wABk{k>sG$J*oMC?&E z`PU?mBGqAla=5fxNY3CEPNyY=yhp#}zGp)1#n3N}&4u(C|2svTm;@5yr#Pi~fkW@7 z7QtUM@ckcYO=CT;JLu0=UJZl`-iAE{21#6f!4(xC;GAtquI7JQ#fEXvE3 zKOiGo*4izV)-*j*Jkn?aan3*tB}a-o0-XdUzhSi;_B=XBL-;2mGnbOH)oF;($yCaw zie1zBZ3))Tf6haRNWueu;L?Z;Rf$@ zS9t7s_(5umEaE-1XV>kQXE4=qGH@W7`dpRW+Gp-*-*X#>T5^XtIxG5G2FtpfucBov z3j8SBk@Rss)X_a@ha{GiW%E>72qD-~RYA~2i5B%!T>^wNgab!sXd7u~5qR$%96X*w`=9yfAww`dX(mJ8tj~aTW$_O7D(MqNpkPHcy?K&s6k%Br-;% zhU^d}{t##ghv=YwbN_QXRLqXv=9}aRLhvq%1}6J>ups4pg_Fab0;T++jRdl*2w%$uYzRF2S7#{ZK0RcU^RBSUt)`5Vg#7-CZx;-300wmpcL!#&udJTP&f71 zSdR_wBN%5rt~jHhn3nzsf{7A;3%Px;mIH3z6^D?I@I&VvWaq@JPRT75L@O=W5=bq@ zo{QhbUyV9nw#Uf5AJWoD(BMt_42~%=vvuKCI6=>nu#m|l|3n?J)_JPE?-jVhr#JDA>AG>~Djgv`M>e{FQeF+Sd3DtY z7hEA1Vc|~$5>s|udrVt49UZq9rOee)O(O?06T@$r=i$JNn`gPzVm~2-Gn1l<=Cwp9`#HR5?GUpM z22j2|X^W_IRbj=0vw>1>>Q-{Rw9vp4Gzh?2C-VE}i&0_ajFouB1f3H_4(E?bRKV=! zj0}p!MB!0#%k`})%RWB(0)Kzt0vC9eA=D?cJ@Ot{axV2b)p^Z7UPk--{$lWFLw@Yi zi}~#-#ByqIqyfox8wpCBcm)qVPMW8LifZKl#+jUDq zj^HiKk8-S>c|!hK9zfGnyDdMv`ThTx1qxGV9Cc(!f|6Ywv2)QzDHPgXBgRX#(g&#CRUJeCgAM!I)r9wiLoXh74$n^1z#LoEKhdbt(Ltv-q zn!A1VD7KOLyW2x$%%9iWBmJYqQoiq8-JBa^#zDa$KKX=huP^veL~pM@^b-RH0(Q(Y zm6)pNQq$fSMW{6}#0DIdAsQ%kl?EzGkzycB2L?wb@80eLgIxI)-hnMDS}wQ3Z1~XN z_?yq^%I@GY@gmW}DU(Zc0%tqa)e!-sprF+dhm4ZtMUYfEn-0-D?5O)@vx!3;@+HMTUf^!V!#6E4i|nRHQw;cfeMe&Qb&O6q;-XYo>@ zX~vtDWg)MMMczieach}mkoPhyvE7>ntD(D0Fiw{nxee12u+Dc`@Prob5^7;z(nN22 z%8Xb^tD-t>*gGi=eIXyg!|2=|Z8q>!y+Of*jfld--h-fO5_b~*Py%n7MRyXK@g_-` zGh(Mlh~uuMv-(;m@pEb%J5=h0R#!D@^AItP))p*B7tga2dY?T8c)#MO`xJr;w}(9_ zrx$`TLlgFuklJi>;#o#=a5f^gQ0q>DQdBtV**x03R0shT9&wL;V05Hsr&O;-@-0m8 zv*E?sFMX$k*Wa?FgV!%=WjK(M=!>7?jz)F{X+LEEcuWd>eLAh+LRv=)F<+ ziK5kz3JW4L)fd7oV2G**&I!3VR1V~*-Ab4&wD+=>Cl(a@eG(q=5w5L2(+xp@gt16E z_mC*`uMZ>_jf|2S7&d4#thQ&D(KUhL168XM%@+4ljLwD*gah7F0buG4iCz3E`o4Ne zTsXPLW6AaU6(kz%^%T&r(akl_O(l5Jh(bs2oV{E25^PyP4-nWJyf2vXVK@I^96=t+OesA*in|xr{bL%H z^iQ%u?>-gyc(b>T*Zlb=3}vk;VJvCs=X=Ddq`}KKfOd{C5ccr%4{?d+ThnRwJ^%sh zJtV!3H0&fcG1-PN>n*3fVR)aFnMHs&y0dc$KSV+ONoP&`u)KS`H8WB{YI(yz?VKNXDSy66SOHlt?(ZSJ7dwIwOEpSfV!9#C*kUkEjDM4GuEoy7Nnz~5h zZxQ}}*QOF&?LEVo`>1^GRnOaD$lsljIYDM+j`j*N4N^OXYs|whVI>iHC!CeFa_^3b z312q0dr>DX-TNEF)dEr$Mh3xw=y_rO2%{L|K~24Zhh#3iEraTBB{QCeh73@EPPjmU zEp=%(*TWz-RFEAsBp+n#dL0{k=M~0B@4dtPK2P{1v>e{zLkE1%CnUT=qi1>YQ?ju++pDc* zbmFnSTk!+2yX{SckuDhOV&td9-z-6h41$i{0k+)*9g^x(o)G^#D^AHfoc__6H}VA&O`DQ?5*&e+4`(18ni@(o=Ki`Ztuv-9DS3*|;x#uc)(XB+k>Nx8ApK zl3Yv2v^HD#Cih3)-vL+fd}QM@dwR&e3l7GW%)ix9*j+Npc=IOn0rtJNo|eP$R}4-v zWTa3#K2NsiF083)xZU+FVO@htXJuE{-X41OEm12j_*n%-G*niWr5c-wB1KYRkCO)d zS7_fB^$ZPTGm`LY>uPJAlob@_@T8@^j|qXcyz#24+`WS7PcQNWz2t}w+6&bRCM`j@Py%Sjqa-lJYMZV7{>`bw{l~Q)Mq}&z;8RtWt8Nx!I z9m_uUlY#6Ok9epHK%KH6Hh56G>*cTVSN$1lR|eM5kb8q=B_K92Tx<#*cUNr%=H9~h z(a3rW4UD;IirZ;B{2?FwreOoY4q>U`I+Yfl5c9cP27ZDfgxK##>CXsp)ri9DM}g6g zj0WhLZo8p(xxKl{X>^8B86w{N-GOr|nM)$yb8;-?2QC!O?0flEZeOI)3CC}RoFB$GY_Ilo2g1^=MS)Ou`&}5-@=Kt){ddxNZuL3$ zK!jP}5!+ ziD~OKJL^gJuEryND0pC%(A4rXmRH#8{T(3Dtu*O<^-jl<@qRt&qKT1kpJ7em+Rp#O zNS0%y3@VAMvHOqdSuxegby}laJ=@;sY^BXt32NBt+zx*ZI;P2l6TG_K`OJ4hvX8Tq z(n+mp;P{yx`B9S>NW;q=`K=^0Z@JJB=qMoA9k?9 zDSUSdKA1VxkdRm~?+!Mo9sgLf=l6755?@ud+5rm}bi~5I;OFpg^Ib7E27Ve3`+(5z z<|GK~VQ?qkjMV6fsOq9pM?WZELc*89)6djqi{><(u2Y#DO9U{j9sc z)!u=ugaoG5Jj1SrBZ;DftMtTD<8!xC=lHTM!|b`6x_ZECc~ghVAY`<}gY@|1y@4d( z%7~7rel31Gt1-)}KyodcsC`wc^4frSi{SXmgqCg-bjvx4keq}utFl`BKJ^^*HzCl= zd!&?B^G`=MMzt&GMR#ID7BuI0|Qx>8;qvy z(3LkPzvEh3;n}&nFt^1>CF^?`<@v)gbXz^r!QdyWuMzW+Pj*zY%KltjLVsMUt8H|4 zGe{WOvLuRXg0wUa3^?8oJhZ@2QW64hjPtZ7QzyQ*$LSYSf^qS^AV$jGS$0 zgp89MrxK>^duni`PO4ssEhd2s6(Y1O5M^^cZFz?FUA1=03Cb6yI=oLIe=w@Br;7JL z@uh@;@m#tb8%cSyoSH>QoRCx#-Ub0O_w5K+G-XCQR>fbPL^%&=7-U zRL`bZ9t04+IiPwqWK8yuxlMu{qXf=mDv5U>R^>u&Y8rgq@L()hA)i;$HMGb?BX9pt z8tpQPO1t^x2ocfm)B#_8gvkE7NYwMBAp{=*10F=9ZYJY#lNI^uThoPnI?cow3tg9@ ze?4!aUt>s2k^S@4*|%vSNF6Io%Rf#;ZGjN??v`XRGhAbvJ1$>TDfNv|?s(An%&=WzPZ8a# zyy?MU;96{N<2k151r!kR7_<7$d3SmTOSg0V3lW$TnbF&Iv6~Ngb8Y>5e zV@jc8cjzUR+b7O4lTwu&<(fV+iTL@Ja$|kxc?%ppHCFQRTl;}!Frs@Sml{u1Fpl(W z=AgdPMyjHy9>eI^LW|a;2iyX2X}Zy{l@g6%0AVqYx?60nph$v(!i6XCZzH)p=X(QF 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[Z&s?5bVlyF}Z!|W{eCHt`h#nQ(;5HT4C2z4Y^a@ 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%0DGzTSVSii?|B3@7~)jG`xfS>xa310iDDy_1+z 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 z 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�pO-6cQGq=Of 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 P1pKr$^weQ$FGK$iV<*E( literal 0 HcmV?d00001 diff --git a/docs/images/DeveloperGuide/addModuleCommand_finalState.png b/docs/images/DeveloperGuide/addModuleCommand_finalState.png new file mode 100644 index 0000000000000000000000000000000000000000..a18c1d00175510f3fc1201de4455add1359d99a8 GIT binary patch literal 28376 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 literal 0 HcmV?d00001 diff --git a/docs/images/DeveloperGuide/addModuleCommand_initialState.png b/docs/images/DeveloperGuide/addModuleCommand_initialState.png new file mode 100644 index 0000000000000000000000000000000000000000..89c1289f36b7f6075c7a156c1a1044546f2eaebf GIT binary patch literal 26436 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�g{6XaFi`evP( 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%0AVqYx?60nph$v(!i6XCZzH)p=X(QF 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[Z&s?5bVlyF}Z!|W{eCHt`h#nQ(;5HT4C2z4Y^a@ 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 literal 6041 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 diff --git a/docs/images/capcalc_set_su_module.png b/docs/images/capcalc_set_su_module.png new file mode 100644 index 0000000000000000000000000000000000000000..6fcc2363c1937e901ef9e44d7b1fb24a1665a17e GIT binary patch literal 8602 zcmbuFcT`jT((hG7daqKYBfSU&5D@8t6akSM0U>lkZwV0*kS@qWh=wjrKzab_U5Wvu zhEN2gcWI%&!L#0X-F5Fh_xy49T4`(Vot-`No!`uSCeeoaS`?%#q&IHdpwQ7)e|F=> zEfD^_6Y(AVb9IQ>7XIa?&oiyZH@>3T*6<&0gH)fY-ndbbNOo>Zi2qCi);9OKaf8